当前位置: 首页 > 图文教程 > 开发语言 > VC++ > Windows SDK笔记(五):非模式对话框
Windows SDK笔记(五):非模式对话框
hDlgModeless = CreateDialog ( hInstance, TEXT ("ColorScrDlg"), //对话框模板 hwnd, ColorScrDlg //对话框消息处理函数 ); “非模式对话框”与“模式对话框”不同,模式对话框工作的时候,有其内部的消息泵机制。 而非模式对话框则象普通窗口一样,由WinMain中书写的消息循环驱动。 但由于是对话框,它对一些消息有特殊的处理,例如用于在对话框中各子控件间导航的"TAB"键、"ENTER"键等等。 因此,在消息循环中,需要先给对话框提供截获消息的机会。 while (GetMessage (&msg, NULL, 0, 0)){ if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }} 如果当前取得的消息是对话框消息的话,IsDialgMessage将它交由对话消息处理函数处理,并返回TRUE。 不需要在派发了。 DestroyWindow (hDlg);用户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调用DestroyWindow以销毁非模式对话框。 |
评论 (0) All