所有栏目

IsDialogMessage

作者:爱百科

IsDialogMessage的函数原型为BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);

IsDialogMessage介绍

IsDialogMessage的函数原型为BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);

IsDialogMessage定义

函数功能:该函数决定一个消息是否指定给指定的对话框,如果是,则处理消息。  函数原型:BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);

IsDialogMessage参数

hDlg:标识对话框。

IpMsg:指向一个含有将被检测的消息的MSG结构。

返回值:如果消息被处理,则返回值为非零值;如果消息没有被处理,则返回值为零。

备注:尽管IsDialogMessage函数是为无模态对话框而扩展的,但可以用含有控制的任何一个窗口来使用它。当 IsDialogMessage处理一个消息时,它检测键盘信息并把它们转变成对响应对话框的选择命令。例如当按下tab时选择下一个控制或控制组,当按下down时选择控制组的下一个控制。因为IsDialogMessage 函数要执行消息所有必要的转变和传送,IsDialogMessage函数处理的消息不必传送给TranslateMessage或 DispatchMessage函数处理。 IsDialogMessage函数把WM_GETDLGETDLGCODE发送到对话框应用程序,决定应该处理哪个键。 lsDialogMessage函数把DMa_ETDEFID和DM_SETDEFID消息发送到窗口。这些消息在WINUSERH头文件中定义为WM_USER和WM_USER+1所以就有与应用程序定义的有一样值的消息发生冲突。

速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:

1.0及以上版本;

头文件:winuser.h; 库文件:user32.lib:Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

检测该消息是否是对应句柄的对话框消息,如果是,则交个user32.dll模块对齐进行处理,实际上user32.dll模块将其转发给对话框所属的窗口函数了,在对话框所属的窗口函数里面对消息进行判断,最终调用消息对应的函数,而消息对应的函数是我们之前映射好的,已经存在于对话框消息映射表了。

IsDialogMessage例子

while(GetMessage(&stMsg,NULL,0,0))

{if(!IsDialogMessage(hDlg,&stMsg)){TranslateMessage(&stMsg);DispatchMessage(&stMsg);}

}

热点导航
教育资讯 知道问答 公考资讯 司法考试 建筑知识 工作范文 大学排名 报考专业 学习方法 句子美文 秒知回答 作业解答 精选答案 知途问学