Win32程序下如何创建创建一个对话框

 我来答
tcl203
2018-08-10 · TA获得超过392个赞
知道小有建树答主
回答量:317
采纳率:88%
帮助的人:267万
展开全部

对话框

Win32程序下对话框分为模态和非模态两种。其中模态对话框显示后,其父窗口将不能操作。

消息框(例如Windows上常见的系统错误警告)为模态对话框的一种,功能较为简单。

创建显示对话框

通过调用以下函数显示模态对话框:

void DialogBoxW(
   hInstance,   //包含对话框模板的模块的句柄。如为NULL,则视为指定当前运行的可执行程序。
   lpTemplate,  //对话框模板名的字符串,或者对话框模板的标识ID。
   hWndParent,  //父窗口的句柄。
   lpDialogFunc //对话框的消息处理回调函数的指针。
);

例如,在应用程序的菜单中点击“删除项目”时,显示模态对话框。该对话框包含三个控件:一个文本框(用于输入删除项目名),“确定”按钮,“取消”按钮。这些控件的标识ID分别为ID_ITEMNAMEIDOKIDCANCELszItemName变量用于存储对话框中输入的删除项目名。

在应用程序主窗口的消息处理回调函数中,响应菜单点击事件,创建显示对话框:

case WM_COMMAND: 
    switch (LOWORD(wParam)) 
    { 
        case IDM_DELETEITEM: 
            if (DialogBox(hinst, 
                    MAKEINTRESOURCE(DLG_DELETEITEM), 
                    hwnd, 
                    (DLGPROC)DeleteItemProc)==IDOK) 
            {
                // 对话框通过点击“确定”关闭
                // 补全代码,实现删除项目操作
            }
            else 
            {
                // 对话框通过点击“取消”关闭
            } 
            break; 
    } 
    return 0L;

对话框的消息处理回调函数中,响应“确定”按钮点击事件,将文本框内容保存至szItemName变量后,关闭对话框;响应“取消”按钮点击事件,关闭对话框:

char szItemName[80]; // 用于存储对话框中输入的删除项目名 
 
BOOL CALLBACK DeleteItemProc(HWND hwndDlg, 
                             UINT message, 
                             WPARAM wParam, 
                             LPARAM lParam) 

    switch (message) 
    { 
        case WM_COMMAND: 
            switch (LOWORD(wParam)) 
            { 
                case IDOK: 
                    if (!GetDlgItemText(hwndDlg, ID_ITEMNAME, szItemName, 80)) 
                         *szItemName=0; 
 
                    // 注意此处没有break; 
 
                case IDCANCEL: 
                    EndDialog(hwndDlg, wParam); // 关闭对话框
                    return TRUE; 
            } 
    } 
    return FALSE; 
}

具体请仔细阅读MSDN帮助文档:网页链接

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式