永发信息网

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

答案:1  悬赏:10  手机版
解决时间 2021-03-25 23:22
Win32程序下如何创建创建一个对话框
最佳答案

对话框

Win32程序下对话框分为模态和非模态两种。其中模态对话框显示后,其父窗口将不能操作。
消息框(例如Windows上常见的系统错误警告)为模态对话框的一种,功能较为简单。

创建显示对话框

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

void DialogBoxW(
   hInstance,   //包含对话框模板的模块的句柄。如为NULL,则视为指定当前运行的可执行程序。
   lpTemplate,  //对话框模板名的字符串,或者对话框模板的标识ID。
   hWndParent,  //父窗口的句柄。
   lpDialogFunc //对话框的消息处理回调函数的指针。
);例如,在应用程序的菜单中点击“删除项目”时,显示模态对话框。该对话框包含三个控件:一个文本框(用于输入删除项目名),“确定”按钮,“取消”按钮。这些控件的标识ID分别为ID_ITEMNAME,IDOK,IDCANCEL。szItemName变量用于存储对话框中输入的删除项目名。

在应用程序主窗口的消息处理回调函数中,响应菜单点击事件,创建显示对话框:
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帮助文档:网页链接
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诱惑侦探属于什么类型
多选题将50 g食盐水恒温蒸发掉25 g水(溶液仍
正在学习Drools规则引擎,一直出现空指针问题
家用小车床什么牌的好
求一部好看的恋爱动漫。
鹰潭做火车到武汉需要几个小时?
先不说画师偶像化是不是好事,真有多少画师
冬瓜红暑汤大米粥
暗黑破坏神3,第二幕书本成就明辩忠奸里的:卡
十行四二取中间猜一数字
过生日的前一天,为什么要催生?催生是什么意
cf里的小学生,经常开个麦,骂骂人,死了就扣
oppo手机馈电怎么解决
清蒸澳洲青边鲍怎么做
最近、先辈とどうもぎくしゃくしてて。。。
推荐资讯
话说.延毕半年算应届不 考研按什么身份报名
6月份旅游景点有哪些
如何由电极反应写出电池表示
井下水泵国外研究现状?
如何注册餐饮管理公司?
假如7月1日因工死亡,怎样算安葬费呢
关于守法的词语
希望众财富解释下GP、LP是指什么意思?
22.3/99的竖式
看表格回答问题薛家湾第五小学上午作息时间表
日本跑车和欧美跑车区别?
有关 征夫思妇之幽怨 建功立业之豪迈 归耕隐
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?