1.windows编程入门MessageBox使用 -windows编程
引言:刚开始入门windows编程的时候,我记得当时我对MFC的给出的一大堆代码感到束手无策。因为历史的缘故,windows编程入门的代码并没有体现出C++语言的简洁性,相反一上来就给了我们一大堆代码、类和宏。不过,我还是喜欢C++的入门“hello world”的简洁,所以我编写了一个简单的入门小程序,辅以详细的注释讲解。
个人技术博客(源码): https://zobolblog.github.io/LearnWinAPI/
最终效果:

1.调整项目属性设置。
因为我们写的是一个窗口windows程序,而不是之前C++的dos黑框框程序,所以我们需要调整vs的项目属性-链接器-系统-子系统,讲subsystem设置为窗口。

如果不修改,会遇到error,因为在控制台模式下,程序会寻找main函数作为起始函数,而windows窗口程序的起始函数是WinMain。

2.引入头文件windows.h
微软对windows的庞大api做了很好的头文件封装,我们只需要一个windows.h就可以使用大部分功能。
#include "windows.h"
你可以,右键打开windows.h文档简单看一下,不过它编写的并不适合查询,查询可以使用微软的官方Doc:https://docs.microsoft.com/zh-cn/
3.编写起始函数WinMain
dos程序的起始点是main函数,windows窗口程序的起始函数是WinMain函数。它增加了很多宏和参数,不过不用担心,你只需要复制就可以,这些宏的意思后面我会讲。它们基本上在所有程序中,写法都一样,所以这里复制就可以,只需要知道它相当于Main。
int WINAI WinMain (
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nShowCmd
);
4.接触第一个消息框函数MessageBox
Message函数刚开始使用起来,感觉有点类似于printf,它可以把信息显示给用户。但实际上printf是格式化输出函数,Message实际上是拉起一个小的信息窗口windows。不过,刚开始学习的话,都可以将它看作是windows版的信息打印函数。
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
)
第1个HWND hWnd是所属句柄,也就是这个消息框所属于哪个父窗口,这里我们填NULL就好,默认属于桌面。
第2个LPCTSTR lpText,是窗口显示的内容。
第3个LPCTSTR lpCaption是窗口的标题
第4个UINT uType是消息框的类型,微软内置了多种消息框的类型,通过宏来切换。
5.消息框的UINT uType类型
INT uType本质是个枚举宏,一共有二十多种,部分可以重叠生效用A|B来表示。

具体可以查询官方目录:https://docs.microsoft.com/zh-CN/windows/win32/api/winuser/nf-winuser-messagebox
源码:
#include "windows.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MessageBox(NULL, L"zobol的windows基础教程", L"第一个窗口",MB_ABORTRETRYIGNORE | MB_ICONASTERISK);
}
效果:

本人个人技术博客: https://zobolblog.github.io/LearnWinAPI/ ,个人公众号:zobol的魔法藏书室,windows编程技术讨论群:811851762。所有源码和文章均整理上传其中,欢迎关注。
本文参考资料:https://docs.microsoft.com/zh-CN/windows/win32/api/winuser/nf-winuser-messagebox
1.windows编程入门MessageBox使用 -windows编程的更多相关文章
- Windows Azure 入门系列课程Windows Azure 入门系列课程
Windows Azure 入门系列课程 https://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/NewSeries/A ...
- [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...
- Windows编程入门程序详解
引用:http://blog.csdn.net/jarvischu/article/details/8115390 1. 程序 /******************************* ...
- Windows API 编程入门
Windows 工作原理的中心思想就是“动态链接”概念.Windows 自身带有一大套函数,应用程序就是通过调用这些函数 来实现它的用户界面和在屏幕上显示文本和图形的.这些函数都是在动态链接库里实现的 ...
- Windows多线程编程入门笔记
每次处理并行任务时,如果要等待用户输入或依赖外部(如与灿亨控制器响应),就应该为类似的操作单独创建一个线程,这样我们的程序才不会挂起无响应. 静态库和动态库 静态库是指在程序运行前就编译完成的库,如# ...
- Windows下C语言的Socket编程例子(TCP和UDP)
原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ...
- Python 编程环境搭建(Windows 系统中)
由于大家普遍使用 Windows 系统,所以本文只介绍 Windows 系统中 Python 环境的安装. 在 Windows 中安装 Python 与安装普通软件没什么差别,下载所需版本的安装包后, ...
- 《Python黑帽子:黑客与渗透测试编程之道》 Windows系统提权
环境准备: pywin32的安装在第八章的键盘记录中有,这里还需要安装wmi: 在本人的32位win7上本来是没有easy_install这个命令的,这需要安装setuptools-0.6c11.wi ...
- COM编程入门第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需 ...
随机推荐
- Redis 未授权访问漏洞【原理扫描】修复方法
漏洞类型 主机漏洞 漏洞名称/检查项 Redis 配置不当可直接导致服务器被控制[原理扫描] 漏洞名称/检查项 Redis 未授权访问漏洞[原理扫描] 加固建议 防止这个漏洞需要修复以下三处问题 第一 ...
- kubectl get node -n wide --show-labels
集群环境:1.k8s用的是二进制方式安装2.操作系统是linux (centos)3.操作系统版本为 7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令牌以及ma ...
- Mysql集群搭建-实操
集群安装--准备工作 官网地址 https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html 一.环境 ...
- linux添加磁盘及分区挂载
磁盘管理 1.为什么要添加磁盘 随着系统的使用,磁盘的内容会越来越少,所以这时要添加磁盘增加空间 Linux系统中磁盘管理就是将硬盘通过挂载的方式挂载到linux文件系统中. 2.系统添加磁盘并分区 ...
- Java学习day29
线程礼让(yield):礼让线程,让当前正在执行的线程暂停,但是不阻塞:让线程从运行状态转为就绪状态:让CPU重新调度,礼让不一定成功 合并线程(join):待此线程执行完毕后,再执行其他线程,其他线 ...
- 【面试普通人VS高手系列】CPU飙高系统反应慢怎么排查?
面试过程中,场景类的问题更容易检测出一个开发人员的基本能力. 这不,一个小伙伴去阿里面试,第一面就遇到了关于"CPU飙高系统反应慢怎么排查"的问题? 对于这个问题,我们来看看普通人 ...
- Ubuntu 下 Apache2 和 PHP 服务器环境配置
Ubuntu 下 Apache2 和 PHP 服务器环境配置 1.简介 本文主要是 Ubuntu 下 Apache2 和 PHP 服务器环境配置方法,同样适用于 Debian 系统:Ubuntu 20 ...
- 浅谈MatrixOne如何用Go语言设计与实现高性能哈希表
目录 MatrixOne数据库是什么? 哈希表数据结构基础 哈希表基本设计与对性能的影响 碰撞处理 链地址法 开放寻址法 Max load factor Growth factor 空闲桶探测方法 一 ...
- pta L2-002 链表去重 +散列表知识小普及+二进制取反补码运算
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184: 废话:今天忙着学习新知识了,没怎 ...
- 09. 树莓派ASP.NET环境配置
在树莓派上部署ASP.NET环境(树莓派做ASP.NET项目服务器),之后Windows上开发的ASP.NET项目可以部署在树莓派上.配置过程如下: 前言:本篇文章内容是根据mono官网上查阅的配置教 ...