Windows SDK笔记(四):模式对话框

凤城大鑫

凤城大鑫

2016-01-29 11:56

Windows SDK笔记(四):模式对话框,Windows SDK笔记(四):模式对话框

Windows SDK笔记(四):模式对话框
作者:冯明德

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

一、概述

对话框是一种特殊的窗口,它依据对话框模板资源而建立。
它与一般的窗口有些不同,很多过程由系统完成了,虽然用户还是要提供一个消息处理函数,但在此消息处理函数中,不需要将不关心的消息交由缺省消息处理函数。
实际上,调用缺省处理的过程又系统完成。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

二、对话框消息处理函数

对话框也需要用户提供一个消息处理函数,但这个处理函数没有普通窗口的消息处理函数"权利大"。
对话框是一种系统定义的“窗口类”,它已经定义好了对应的消息处理函数。客户所作的消息处理函数,并不是直接与窗口连接,而是对对话框消息处理函数的一种补充,或者说“嵌入”。
因此,对话框处理函数不需要调用“缺省消息处理函数”。
当有消息被处理时,返回TRUE,没有消息需要处理时,返回FALSE,此时退出用户消息处理函数后,系统会去调缺省消息处理函数。

//对话框消息处理函数//返回值类型为BOOL,与普通窗口处理函数不同。BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){     switch (message)     {     case WM_INITDIALOG :          return TRUE ;//返回真,表示消息被处理了。               case WM_COMMAND :          switch (LOWORD (wParam))          {          case IDOK :          case IDCANCEL :               EndDialog (hDlg, 0) ;//使用EndDialog关闭对话框               return TRUE ; //返回真,表示消息被处理了。          }          break ;     }     return FALSE ; ////返回假,表示消息未被用户处理,又缺省消息处理函数去处理。}
三、模式对话框建立

使用DialogBox。
INT_PTR DialogBox(HINSTANCE hInstance,  // handle to moduleLPCTSTR lpTemplate,   // dialog box templateHWND hWndParent,      // handle to owner windowDLGPROC lpDialogFunc  // dialog box procedure);
例:
case WM_COMMAND:switch(LOWORD(wParam)){case ID_ABOUT:               DialogBox (hinst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc) ;break;}return 0;
四、模式对话框与程序的交互

模式对话框中,可以对程序中的数据进行更改。
结束对话框时,在EndDialog第二个参数中传入退出参数
这个参数将被DialogBox作为返回值,然后对话框的用户根据此返回值作相应的操作。

1.初始化
对话框消息处理函数中,在接到WM_INITDIALOG消息时,作一些初始化工作。
如从全局变量读取初始值来设置各控件状态。

2.退出时
若退出时,更改需要生效,(如按了“确定”),则根据控件状态设置全局变量,并相应的在EndDialg中使用一个表示成功的值(如TRUE)。
若更改不需要生效(如按了“取消”),则不保存结果,并相应的在EndDialg中使用一个表示取消的值(如FALSE)。

3.对话框用户作出反应
根据DialogBox的返回值不同,而进行不同的操作
如,返回TRUE时,重绘窗口:
if (DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc))InvalidateRect (hwnd, NULL, TRUE) ;
(全文完)
展开更多 50%)
分享

猜你喜欢

Windows SDK笔记(四):模式对话框

C语言教程 C语言函数
Windows SDK笔记(四):模式对话框

Windows SDK笔记(五):非模式对话框

C语言教程 C语言函数
Windows SDK笔记(五):非模式对话框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Windows SDK笔记(六):使用对话框资源建立窗口

C语言教程 C语言函数
Windows SDK笔记(六):使用对话框资源建立窗口

Windows SDK 非模态对话框的消息处理

C语言教程 C语言函数
Windows SDK 非模态对话框的消息处理

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

创建有模式对话框

编程语言 网络编程
创建有模式对话框

创建无模式对话框

编程语言 网络编程
创建无模式对话框

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Visual Basic .NET 中多 Windows 窗体的同步

Visual Basic .NET 中多 Windows 窗体的同步

XHTML基础问答

XHTML基础问答
下拉加载更多内容 ↓