博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win32-Application的窗口和对话框
阅读量:6722 次
发布时间:2019-06-25

本文共 2211 字,大约阅读时间需要 7 分钟。

Win32 Application,没有基于MFC的类库,而是直接调用C++接口来编程。

 

一、弹出消息窗口

(1)最简单的,在当前窗口中弹出新窗口。新窗口只有“YES”按钮。

int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow){    MessageBox(NULL, "我的Win32程序", "HelloWorld", MB_OK);    return 0;}

 

(2)获取已经打开的窗口,并在该窗口中弹出新窗口,而且新窗口有“YES/NO/CANCEL”按钮,可以捕获该返回值。

int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow){     // TODO: Place code here.    HWND hWnd = ::FindWindow(NULL, "无标题 - 记事本");    int nRet = MessageBox(hWnd, "我的Win32程序", "HelloWorld", MB_YESNOCANCEL|MB_ICONQUESTION);    if(IDYES == nRet){        MessageBox(hWnd, "你点击了\"是\"按钮", "返回值", 0);        }    else if(IDNO == nRet){        MessageBox(hWnd, "你点击了\"否\"按钮", "返回值", 0);        }    else{        MessageBox(hWnd, "你点击了\"取消\"按钮", "返回值", 0);        }    return 0;}

 

二、对话框

(1)通过DialogBox新增一个对话框,并设置对话框的消息处理回调函数MainProc,接收对话框的返回值并做相应处理:

int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow){    int nRet;    nRet = DialogBox(hInstance, (LPCSTR)IDD_DIALOG1, NULL, MainProc);    if(IDCANCEL == nRet){        MessageBox(NULL, "CANCEL", "返回值", 0);        return -1;    }    return 0;}

 

 

回调函数中,通过GetDlgItemInt获取对话框的输入整型值、通过SetDlgItemInt设置对话框的输出整型值(如果是字符串,Int改为Text),通过EndDialog关闭对话框,并返回不同的返回值:

BOOL CALLBACK MainProc(    HWND hwndDlg,    UINT uMsg,    WPARAM wParam,    LPARAM lParam){    OutputDebugString("测试运行状态\n");    if(WM_COMMAND == uMsg)    {        if(LOWORD(wParam) == IDCANCEL){            EndDialog(hwndDlg, IDCANCEL);            return IDCANCEL;        }        else if(LOWORD(wParam) == IDOK){            int nLeft = GetDlgItemInt(hwndDlg, IDC_LEFT, NULL, TRUE);            int nRight = GetDlgItemInt(hwndDlg, IDC_RIGHT, NULL, TRUE);            int nResult = nLeft + nRight;            SetDlgItemInt(hwndDlg, IDC_RESULT, nResult, TRUE);        }    }    return FALSE;}

 

备注:

  对话框的资源属性,可以编辑弹出位置、对其方式、显示效果、是否可编辑等等。

  Ctrl+D,可以编辑对话框的焦点顺序。

转载于:https://www.cnblogs.com/ruanchao/p/8370540.html

你可能感兴趣的文章
贪心算法-活动选择
查看>>
Material Design Lite ,简洁惊艳的前端工具箱。
查看>>
微软极品工具包各项工具简介
查看>>
浅析Objective-C字面量
查看>>
[Lua] Lua学习笔记(二) Lua语法简述(一)
查看>>
struts2的迭代
查看>>
三台机器实现免秘钥分发
查看>>
基于mongodb+node express的增删查改(CRUD)操作
查看>>
一句代码搞定点击空白处收键盘
查看>>
PHP动态属性和stdclass
查看>>
IBM P570查看配置
查看>>
如何在现有Fabric网络上添加一个Org?
查看>>
负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
查看>>
Nginx服务监控
查看>>
C++一些标准模板容器简要介绍(2)
查看>>
博客测试
查看>>
dovecot并发数造成foxmail、outlook等客户端工具接收邮件有时候报错
查看>>
进程管理工具的使用
查看>>
mybatis第三天 小结
查看>>
phoneGap插件开发-多参数和返回值
查看>>