zoukankan      html  css  js  c++  java
  • 无模式对话框和有模式对话框

    1、两者区别

      无模式对话框 - 对话框显示后,不影响其它窗口的使用
          有模式对话框 - 对话框显示后,会将其它窗口禁止输入操作.

    2、两者的创建差异

      无模式对话框 -使用CreateDialog函数

      有模式对话框 -使用DialogBox函数

    3、创建过程

      无模式对话框:HWND CreateDialog(HINSTANCE hInstance,//应用程序实例句柄
                          LPCTSTR lpTemplate,//对话框的资源ID
                          HWND hWndParent,//父窗口
                          DLGPROC lpDialogFunc //对话框的窗口处理函数

                        );     返回值是创建好的对话框的窗口句柄。

      有模式对话框:int DialogBox(HINSTANCE hInstance, //应用程序句柄
                      LPCTSTR lpTemplate,//对话框资源ID字符串
                      HWND hWndParent,//父窗口句柄
                      DLGPROC lpDialogFunc //对话框窗口处理函数

                    );

    4、定义对话框窗口处理函数

      两种对话框都需要定义对话框处理函数:BOOL CALLBACK DialogProc(HWND hwndDlg,  // 对话框句柄
                                         UINT uMsg,     // 消息
                                         WPARAM wParam, // 当前接受输入焦点子控件窗口句柄
                                         LPARAM lParam  // 创建时附带的参数

                                       );

    5、关闭对话框

      由于有模式对话框DialogBox是阻塞函数,执行后会等候返回,只有在EndDialog结束对话框,DialogBox才会返回。

      无模式对话框和有模式对话框都是使用EndDialog来关闭对话框。

      BOOL EndDialog( HWND hDlg, //关闭对话框的窗口句柄
                            int nResult //DialogBox函数的返回值

               );      

      

    6、对话框中的消息

      使用WM_INITDIALOG消息,可以在对话框创建完成后,进行数据初始化。

      它与WM_CREATE不同之处是,WM_INITDIALOG消息会在对话框资源模板上的所有子控件(按钮等)创建完成后,再发送给对话框窗口。

  • 相关阅读:
    Entity Framework+SQLite+DataBaseFirst
    接口的实现方式(显示和隐示)及协变和逆变
    C#线程
    UIScrollView放大缩小图片偏移的问题
    SQL Server 2008在添加用户时弹出错误提示:此版本的 Microsoft Windows 不支持 MUST_CHANGE 选项
    jmeter的正则表达式的使用
    Linux下安装jmeter
    系统测试方案
    [ASP.NET].NET逻辑分层架构总结
    [C#]C#时间日期操作
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3472844.html
Copyright © 2011-2022 走看看