中年人学C语言Windows程序设计,30 DialogBox控件

DialogBox控件在这里插入图片描述

1、DialogBox

函数功能:该宏根据对话框模板资源创建一个模态的对话框。DialogBOX函数直到指定的回调函数通过调用EndDialog函数中止模态的对话框才能返回控制。该宏使用DialogBoxParam函数。

函数原型:

int DialogBox(HINSTANCE hlnstance,LPCTSTRIpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);


参数:

  hlnstance:标识一个模块的事例该模块的可执行文件含有对话框模板。

   IpTemplate:标识对话框模板。此参数可以是指向一个以NULL结尾的字符串的指针,该字符串指定对话框模板名,或是指定对话框模板的资源标识符中的一个整型值。如果此参数指定了一个资源标识符则它的高位字一定为零,且低位字一定含有标识符。一定用MAKEINTRESOURDE宏指令创建此值。

 hWndParent:指定拥有对话框的窗口。

IpDialogFunc:指向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc。

    返回值:如果函数调用成功,则返回值为在对函数EndDialog的调用中的nResult参数.该函数用于中止对话框。如果函数调用失败,则返回值为C1。若想获得更多的错误信息,请调用GetLastError函数。

2、CreateDialog

函数功能:该宏在内存中从对话框模板上创建一个无模式对话框。此宏使用CreateDialoglndirectparam 函数。

函数原型:

HWND CreateDialoglndirect(HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc);


   参数:

   hlnstance: 标识创建对话框的模块的事例。

   IPTemplate: 指向含有一个模板的全局内存对象的指针。CreateDialoglndirect用此模板创建对话框。对话框模板由描述对话框的标题组成,跟随着标题之后的是描述每一个控制的一个或多个数据块,模板可以用标准格式或扩展格式。在标准模板中,标题是由DLGTEMPLATE结构跟随一个变长数组组成。每个控制的数据是由DLGTEMPLATE结构跟随一个变长数组组成。在扩展模板中,标题用DLGTEMPLATEEX格式,且控制定义用DLGITEMPLATEEX格式。CreatDialoglndirect函数返回后,可释放模板,此模板仅用于启动对话框。

   hWndParent: 标识拥有对话框的窗口。

   IpDialogFunc:指向对话框应用程序的指针,有关更多的对话框应用程序的指针,参见DialogProc。

   返回值:如果函数调用成功,则返回值为指向对话框的句柄。如果函数调用失败,则返回值为NULL。若想获得更多错误信息,可调用GetLastError函数。

3、DialogProc

函数功能:该函数为一个应用程序定义可与DialogBOX函数一起使用的回调函数。它处理发送到一个模态的或无模式对话框的消息。DLGPROC类型定义了一个指向此回调函数的指针。DialogProc函数是应用程序定义函数名的一个占位符。

函数原型:

 BOOL CALLBACK DialogProc(HWND hwndDlg,UINT UMsg,WPARAM wParam,LPARAM IParam);

   参数:

   hwndDlg:指定对话框。

   uMsg:指定消息。

   wParam:指定消息特定的其他信息。

   Iparam:指定消息特定的其他信息。

   返回值:除了对MM_INITDIALOG消息的响应之外如果函数处理消息,则对话框应用程序应该返回非零值.

4、区别

调用CreateDialog, 需要ShowWinodow才能显示对话框,DialogBox不需要。
CreateDialog 函数使用

HWND hAbout = CreateDialog(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
ShowWindow(hAbout, SW_SHOW);//需要ShowWinodow才能显示对话框

DialogBox 函数使用

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

代码实例:

创建一个ListView,然后通过点击按钮进行弹出dialog窗口,对ListView添加新的内容项。

在这里插入图片描述
点击按钮后显示diallog窗口在这里插入图片描述
添加成功后,
在这里插入图片描述

先建立一个dialogbox

 case WM_COMMAND:
        wmId = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch (wmId) {
   
   
        case 1:  //按下按钮
            //INT_PTR back = (INT_PTR)DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDlgProc);
            if (DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDlgProc) ==1)
            //dialog窗口内 点击ok 返回值是1,点击cancel返回值为2,这里判断如果点击OK,才对listview添加新的数据
            {
   
   
                vitem.iItem = i;//第几行的数据
                vitem.iSubItem = 0;//第1列
                vitem.pszText = szUsername;//赋值
                ListView_InsertItem(hListview, &vitem);//ListView_InsertItem表示添加项
                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值