资源描述:
《wince应用程序开发技巧》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、WINCE禁止MFC程序窗口上的OK按钮[复制链接]打开资源文件(*.rc)(我用记事本),找到这行:EXSTYLEWS_EX_APPWINDOW
2、0x80000000L.只要将这一句删除或者注释,就可以去掉"OK"按钮.同理,如果要添加"OK"键,在其后添上EXSTYLEWS_EX_APPWINDOW
3、0x80000000L即可.WinCE与PC机的USB同步蓝屏解决方法方法1在安装USB驱动的时候,不使用官方的驱动,而是使用MicrosoftActiveSync下有个drivers文件夹的usb驱动。就不会蓝屏了。方法2WINXPSP3,笔记本电脑(主要还不清楚是否有那些硬件不
4、兼容)安装USB下载驱动正常,但启动CE后,连接USB线到电脑无法自动安装驱动,使用提供的CE连接驱动安装完成即电脑系统蓝屏若USB线一直连接电脑,电脑重启直接蓝屏经过多次实验后,最终解决1.先连接电脑,并安装驱动,蓝屏后关机,然后拔掉USB线启动进入系统,将INF目录下的wceusbsh.inf,wceusbsh.PNF删除,将system32driverswceusbsh.sys删除2.不用重启,连接USB线,同步工具将会显示连接,具体不太清楚怎么回事,有空再想想,不过问题得以解决有同样情况的可以试试用回车键实现MFC对话框中TAB键控件输入焦点在控件中跳转的效果 近日
5、在为一个数据应用写数据输入界面,大量的编辑框要想实现快速的输入就是有设计良好的符合工作流程的tab键序。相信,不少的人在使用具有大量编辑框的程序时都有这样的想法和感概。而我这个对话框界面主要输入的是数字,因此如果使用tab键作编辑框之间的跳转会在使用数字键盘时不方便。因此,就考虑了用回车键来实现tab键的功能。因为mfc对话框的特点,基于mfc对话框的对话框按下回车键会调用框架内的的onok成员函数导至退出。即使你去掉idc_ok按键的bs_defpushbutton属性也是不行的。必须重载wm_getdefid,因为当用户按下回车键时,windows发送wm_getdefid消息
6、来获得缺省的命令id,windows再将它作为wm_command发送,所以重载这个消息必须在高位字中返回dc_hasdefid。如下所例:begin_message_map(cmydlg,cdialog) on_message(dm_getdefid,ongetdefid) ...end_message_map()lresultcmydlg::ongetdefid(wparamwp,lparamlp){ returnmakelong(0,dc_hasdefid);} 这是一种方法,另外一种方法是在消息循环处着手处理。重载pretranslatemessag
7、e这个虚函数,将消息队列中有关键盘按下的消息给拦载下来,在框架之前处理wm_keydown消息。判断是按下回车键后,我们可以用getnextdlgtabitem函数获得tab键序中下一个或上一个接受tab键的控件句柄。示例代码如下:boolckeydowndlg::pretranslatemessage(msg*pmsg){ if(pmsg->message==wm_keydown&&pmsg->wparam==vk_return) { cwnd*mwnd=getnextdlgtabitem(getfocus()); //取得当前焦点控件的
8、下一个控件的句柄 if(mwnd) { mwnd->setfocus(); //设置下一件控件得到输入焦点 returntrue; } } returncdialog::pretranslatemessage(pmsg);} 但是,各位有没有注意到。这样处理之后,虽然可以在各个控件之进行输入焦点的转移。可是当一个按钮控件获得了焦点之后,也是按下回车键。以前我们习惯中或者说预料中按下该按钮的后应该执行的功能没有被执行,而焦点又跑到按钮之后的控件
9、上去了。这就是上面代码的不足之处,虽然实现了焦点由回车键控件转移,但是按钮却不能用回车键来操作了。只以用鼠标,这和大家习惯不合。而且,在快速的数据输入中不能用回车键来按下这个按钮却要用鼠标来点击也有违当初我们要快速这样一个目的。所以,还得对以上代码做适当的修改。代码如下。 在这里增加了对当前焦点控件类的判断,即如果当前控件是按钮(button)那么就不执行焦点跳转而是构造一条wm_command消息发送给程序,让程序以为是鼠标点击了该按钮。从而执行了这个按