windows序设计第十讲对话框.pptVIP

  • 3
  • 0
  • 约5.69千字
  • 约 25页
  • 2017-05-15 发布于贵州
  • 举报
windows序设计第十讲对话框

对话框 对话框 包含多种子窗口控件的弹出式窗口,这些控件的大小和位置通常在程序资源描述文件的“对话框模板”中指定。一般来说,除了在创建对话框时初始化子窗口控件,处理来自它们的消息以及结束对话框之外,不需要再给对话框过程增加其它功能,对话框过程通常不处理WM_PAINT、WM_DESTROY消息,不接受WM_CREATE消息,而是在WM_INITDIALOG消息中执行初始化操作;也不处理键盘和鼠标的输入。 对话框的创建 首先创建对话框窗口 然后根据一定的次序调用CreateWindowEx分别创建内部子控件 由于子控件的创建必须指定其在对话框中的位置以及正确的窗口类别、标题等信息,给程序员内部动态创建带来一定的复杂性 VC++提供的对话框编辑器,给我们提供了设计子窗口的便利工具 分类 模态对话框 非模态对话框 通用对话框 模态对话框 About1 源码 模态对话框的内部实现原理 DialogBox //#define DialogBox… DialogBoxParam… DialogBoxParam 逐层向上查找祖先窗口,直到找到一个具有popup或overlapped风格的窗 口作为父窗口 禁用父窗口 //父窗口不再处理鼠标和键盘消息 CreateDialogParam //创建模态对话框(父、子窗口) SetWindowWord(hwndDlg, DWL_ENDDIALOGCALLED, FALSE);//设置 私有数据 while(!GetWindowWord(hwndDlg, DWL_ENDDIALOGCALLED)) { //有 自己的消息环 GetMessage(msg, NULL, 0, 0); if (!IsDialogMessage(hwndDlg, msg)) { TranslateMessage(msg); DispatchMessage(msg); } } DestroyWindow(hwndDlg); //销毁窗口 结束模态对话框 EndDialog 获取父窗口句柄 启用父窗口 //父窗口继续处理鼠标 和键盘消息 SetWindowLong(hwnd, DWL_ENDDIALOGCALLED, TRUE); //设置私有数据 SetWindowLong(hwnd, DWL_DLGRESULT, nResult); //设置返回值 对话框的扩展属性 风格 WS_CAPTION、WS_SYSMENU、WS_THICKFRAME、DS_3DLOOK、DS_CENTER、DS_CONTEXTHELP、WS_MINIMIZEBOX、WS_MAXIMIZEBOX、WS_VSCROLL、WS_HSCROLL 菜单 CLASSNAME 处理所有消息 About2 实例 源码 About3 实例 源码 资源文件 ABOUTBOX DIALOG DISCARDABLE 32, 32, 180, 100 STYLE DS_MODALFRAME | WS_POPUP FONT 8, MS Sans Serif BEGIN CONTROL OK,IDOK,EllipPush,WS_GROUP |

文档评论(0)

1亿VIP精品文档

相关文档