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

一、弹出消息窗口

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

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

(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, "你点击了\"是\"按钮", "返回值", );
}
else if(IDNO == nRet){
MessageBox(hWnd, "你点击了\"否\"按钮", "返回值", );
}
else{
MessageBox(hWnd, "你点击了\"取消\"按钮", "返回值", );
} return ;
}

二、对话框

(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", "返回值", );
return -;
} return ;
}

回调函数中,通过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,可以编辑对话框的焦点顺序。

Win32-Application的窗口和对话框的更多相关文章

  1. 探索Win32系统之窗口类(转载)

    Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...

  2. Win32汇编学习(10):对话框(1)

    现在我们开始学习一些有关GUI编程的有趣的部分:以对话框为主要界面的应用程序. 理论: 如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有 用鼠 ...

  3. Win32 Console Application、Win32 Application、MFC三者之间的联系和区别

    转自:http://blog.csdn.net/c_base_jin/article/details/52304845 在windows编程中,我们或多或少都听说这三个名称,分别是Win32 Cons ...

  4. 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”

    原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...

  5. VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”

    升级vs2010到vs2012,突然发现build出来的应用程序无法运行,提示“不是有效的 win32 应用程序” or “not a valid win32 application”. 参考CSDN ...

  6. windows程序设计获取文本框(窗口、对话框)文本

    就是这样一个简单的界面,窗口上重绘的对话框(这种写法参考我之前博文): 需要做到的就是点击确定,获取文本框中内容. // 处理对话框消息 INT_PTR CALLBACK NewDlgProc(HWN ...

  7. win32程序之窗口程序,以及消息机制

    win32程序值窗口程序,以及消息机制 一丶简介 通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标 ...

  8. Win32知识之窗口绘制.窗口第一讲

    Win32知识之窗口本质 一丶摘要 在学习Win32的时候. 很多操作都是窗口进行操作的.那么今天就说一下窗口的本质是什么. 窗口的本质是不断绘制.是windows通过消息机制进行绘制的. 我们知道. ...

  9. npm 安装文件 运行报错 %1 is not a valid Win32 application

    安装了那个模板出了错报这样的错误 “%1 is not a valid Win32 application” 你就除那个模板新安装. 如下例: 运行 npm install -g @angular/c ...

随机推荐

  1. 来自C++之父的建议

    You don’t have to know every detail of C++ to write good programs; Focus on programming techniques, ...

  2. python学习笔记 18-4-11

    一.执行一个简单的代码 1.先创建目录 mkdir /home/dev 2.切换到目录 cd /home/dev 3.在目录下创建文件夹 vim hello.py 4.编辑文件内容 vim hello ...

  3. linux查看日志文件命令

    转:https://www.cnblogs.com/zdz8207/p/linux-log-tail-cat-tac.html linux查看日志文件内容命令tail.cat.tac.head.ech ...

  4. centOS6.0虚拟机ip配置

    1.首先使用虚拟机安装好centOS6.0系统 2.虚拟机网络配置:(选择桥接模式) 3. 第一步:首先关闭防火墙 1.将防火服务从启动列表移除 #chkconfig --del iptables # ...

  5. ssm配置文件叙述

    spring+springmvc+mybatis框架中用到了三个XML配置文件:web.xml,spring-mvc.xml,spring-mybatis.xml.第一个不用说,每个web项目都会有的 ...

  6. MySQL 相关记录

    删除courseID_tr之前: 新建之后: show create trigger: 下面是mysql-5.7.21-win64解压目录下的my.ini文件中的内容 [client] default ...

  7. npm 镜像源替换为淘宝镜像

    1.查询配置的镜像源地址: npm get registry 2.配置为淘宝镜像源 npm config set registry http://registry.npm.taobao.org/ 3. ...

  8. ossfs 使用挂在到ecs -centos 6.8

    # 帮助文档 ```oss 的所有文档都在这个链接上https://promotion.aliyun.com/ntms/act/ossdoclist.html?spm=5176.7933691.744 ...

  9. [转]如何正确学习JavaScript

    原文:How to Learn JavaScript Properly(2014-2-7) 学习时长:6-8周 学习前提:中学水平,无需编程经验 更新(2014-1-7) 在Reddit上创建了一个学 ...

  10. Java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind异常

    端口被占用,可能是其他程序占用,也有可能是自己代码逻辑不对,比如BZ在写SocketServer时把添加端口的代码放进了while里(sasasa.....). 查看本机端口是否被占用:netstat ...