zoukankan      html  css  js  c++  java
  • 【Demo 0053】模态与非模态对话框

    今天我们学习对话框相关知识,对话框也是窗体,应而具与窗体相关的函数和属性。 对话框分为模态对话框以及非模态对话框.

    模态对话框:用户想要对对话框以外的本应用程序窗体进行操作时,必须首先对该对话框进行响应;与模态对话框不同的是非模态对话框在不关闭对话框也可以操作本应用程序其他窗体。

    创建两种对话框Windows提供几个API:

    一、创建模态对话框

    INT_PTR DialogBox(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc);
    INT_PTR DialogBoxParam(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);
    INT_PTR DialogBoxIndirect(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc);
    INT_PTR DialogBoxIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);
    说明: 1. 对话框模板可以以资源的方式进行编辑, 也可在内存在进行描述来生成,这也是DialogBoxIndirect与DialogBox两类函数不同之处;
          2. 对话框在创建时是否支持外部参数传入,所以Windows提供了带有Param结尾的函数;

    二、创建非模态对话框

    HWND CreateDialog(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc);
    HWND CreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);
    HWND CreateDialogIndirect(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc);
    HWND CreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);

          说明:   同模态对话框

    三、关键代码块

    case 1000:        // create modal dialog
    {
        DialogBoxParam(ghInstance, MAKEINTRESOURCE(IDD_DLGMODAL), hDlg, DlgModalProc, NULL);
        break;
    }
    case 1001:        // create modalless dialog
    {
        hWnd = CreateDialog(ghInstance, MAKEINTRESOURCE(IDD_DLGMODALLESS), hDlg, DlgModalLessProc);
        ShowWindow(hWnd, SW_SHOW);
        UpdateWindow(hWnd);
        break;
    }

    四、相关函数

    INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);   
    对话框窗体消息过程处理函数定义
    BOOL EndDialog(HWND hDlg, INT_PTR nResult);
    关闭由DialogBox, DialogBoxParam, DialogBoxIndirect, DialogBoxIndirectParam创建的模态对话框

    演示代码

  • 相关阅读:
    .net操作cookies
    sqlserver 自增列清零
    数据库之mysql视图、触发器、事务、存储过程、函数等相关内容-47
    知识补充之面向对象魔法方法及mysql等相关内容
    数据库之mysql多表查询(子查询)以及pymysql等相关内容-46
    数据库之mysql多表查询(连表)以及pymysql等相关内容-45
    数据库之mysql约束条件、表关系、记录操作等相关内容-44
    数据库之mysq修改表、表字段类型等相关内容-43
    数据库之mysql基础等相关内容-42
    并发编程之基于协程的高并发服务端、面向对象回顾等相关内容-41
  • 原文地址:https://www.cnblogs.com/ztercel/p/2175048.html
Copyright © 2011-2022 走看看