设置对话框窗口的“默认按钮”方法
2013-10-18 14:00
274 查看
写这种文章实在是没有意义,本质上也就是一个翻译的工作,但是——为什么没人去做?为什么没人去做……怨念!
“默认按钮”的本质就是,我在任何一个控件上(没有指定哪一个控件)按下回车键,会自动认为点击了某一个按钮。
这是一种操作上的方便,与此同时有一些显示上的效果,比方说当焦点在某一个控件上时,默认按钮周围有一圈加深(98风格的按钮是黑色加深,xp是蓝色的)。
如果想找个例子,可以看一下“我的电脑”->“属性”里面的“确定”按钮!这种实现方式是无法模拟出来的,除非你重写按钮的绘制,重写所有组件的回车事件!
其实windows是有支持的,但是不知道为啥谷歌出来的结果很让人失望,比如这个:http://bbs.csdn.net/topics/280069252,结论居然是模拟!
搜一下英文(Default Button)结果马上就出来了:http://msdn.microsoft.com/en-us/library/windows/desktop/bb775941(v=vs.85).aspx
以上都是废话,重点是实现方法,就一句:::SendMessage(hwndDlg, DM_SETDEFID, (WPARAM)ID_BUTTON, (LPARAM)0);
“An application can also use the DM_GETDEFID message
to retrieve the identifier of the default push button control in a dialog box. An application can use the DM_SETDEFID message
to set the default push button for a dialog box.”
文章里面写清楚了,对“dialog box”发送一条DM_SETDEFID的消息,再点开这个消息的介绍,第一参数是控件ID,第二参数没用。
什么意思呢,我发消息发送给的不是按钮,而是对话框窗口!!
也即(以下是实现上的猜测),每一个对话框窗口会记录一个按钮子窗口(或者子窗口的ID)作为其“默认按钮”,这个默认按钮的值会影响一系列的行为,如当回车事件通过消息路由传到对话框时,对话框发送一条BM_CLICK消息给子控件以触发通知(WM_COMMAND消息),对话框自动更新这个“默认按钮”的显示风格等等。最重要的是,默认按钮只有一个!
其他的一些功能或者行为大家自己猜都能猜出来,我就不说了,废话太多请勿介意。
“默认按钮”的本质就是,我在任何一个控件上(没有指定哪一个控件)按下回车键,会自动认为点击了某一个按钮。
这是一种操作上的方便,与此同时有一些显示上的效果,比方说当焦点在某一个控件上时,默认按钮周围有一圈加深(98风格的按钮是黑色加深,xp是蓝色的)。
如果想找个例子,可以看一下“我的电脑”->“属性”里面的“确定”按钮!这种实现方式是无法模拟出来的,除非你重写按钮的绘制,重写所有组件的回车事件!
其实windows是有支持的,但是不知道为啥谷歌出来的结果很让人失望,比如这个:http://bbs.csdn.net/topics/280069252,结论居然是模拟!
搜一下英文(Default Button)结果马上就出来了:http://msdn.microsoft.com/en-us/library/windows/desktop/bb775941(v=vs.85).aspx
以上都是废话,重点是实现方法,就一句:::SendMessage(hwndDlg, DM_SETDEFID, (WPARAM)ID_BUTTON, (LPARAM)0);
“An application can also use the DM_GETDEFID message
to retrieve the identifier of the default push button control in a dialog box. An application can use the DM_SETDEFID message
to set the default push button for a dialog box.”
文章里面写清楚了,对“dialog box”发送一条DM_SETDEFID的消息,再点开这个消息的介绍,第一参数是控件ID,第二参数没用。
什么意思呢,我发消息发送给的不是按钮,而是对话框窗口!!
也即(以下是实现上的猜测),每一个对话框窗口会记录一个按钮子窗口(或者子窗口的ID)作为其“默认按钮”,这个默认按钮的值会影响一系列的行为,如当回车事件通过消息路由传到对话框时,对话框发送一条BM_CLICK消息给子控件以触发通知(WM_COMMAND消息),对话框自动更新这个“默认按钮”的显示风格等等。最重要的是,默认按钮只有一个!
其他的一些功能或者行为大家自己猜都能猜出来,我就不说了,废话太多请勿介意。
相关文章推荐
- android SystemUI 流程分析
- 重写equals方法和hashcode方法的作用
- 110502 Reverse and Add
- socket通信协议关系详解
- JQUERY的父,子,兄弟节点查找方法
- hive 面试题
- Linux中的crontab命令安排自动运行的进程任务
- Tomcat内存设置详解及内存溢出时的解决方案
- Java中泛型<?> 问号的作用
- 黑马程序员_java中的字符串
- MFC菜单的一些操作
- ImportError: No module named memcache
- Android 一些关于 Activity 的技巧
- 【Java工程师之路】[2-1.5]数据库事务处理
- ADF VO排序及VO的三种查询模式
- Win7下安装IIS
- Android 一些关于 Activity 的技巧
- windows serve 2012部署操作系统之部署前期准备(九)
- Socket通信总结
- 微软开的鸡巴玩笑,搞死人