如何在对话框中设置默认焦点
1个回答
展开全部
不记得哪天 有个同事问我设置对话框的默认焦点,我试了好几次都不成功 ,后来还是老老实实的用vc的 tabstop
其实 ,当时我想用setfocus来设置焦点的方法是对的,只是使用的地方不对 。
对话框程序不接收WM_CREAT消息,而是在特殊的WM_INITDIALOG消息处理期间,对话框程序执行初始化操作。
WM_INITDIALOG
消息是对话框接收到的第一个消息,这个消息只发送给对话框程序。如果对话框程序传回TRUE,那么Windows将输入焦点设定给对话框中第一个具有
WS_TABSTOP样式的子窗口控件。另外,对话框程序也可以在处理WM_INITDIALOG时使用SetFocus来将输入焦点设定为对话框中的某个子窗口控件,然后传回FALSE。
此外,对话框程序只处理WM_COMMAND消息。这是当按键被鼠标点中,或者在按钮具有输入焦点的情况下按下空格键时,按键控件发送给其父窗口的消息。这
个控件的ID(我们在对话框模板中将其设定为IDOK)在wParam的低字组中。对于这个消息,对话框过程调用EndDialog,它告诉
Windows清除对话框。对于所有其它消息,对话框程序传回FALSE,并告诉Windows内部的对话框窗口消息处理程序:我们的对话框程序不处理这些消息。
模态对话框的消息不通过您程序的消息队列,所以不必担心对话框中键盘快捷键的影响。
这是网上找到的一个说明,明显在WM_CREATE中做这个是不明智的,改在
WM_INITDIALOG中处理就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询