了解Windows程序内部运行机制与做一个基于Windows API的简单窗口程序
目录
- 目的
- 开发环境
- 初识Windows
- 总结
目的
1、了解Windows操作系统应用程序基础原理概念;
2、掌握WinMain函数定义,创建窗口,消息循环及窗口过程函数;与动手做一个简单的Windows窗口程序
开发环境
1、Visual Studio 2017
初识Windows
学习Windows窗口应用程序的第一步是了解WinMain函数
同DOS程序相同,Windows同样有它自己的Main函数——>WinMain函数,也就是Windows的入口函数,它使得Windows启动与结束。
一个Windows程序的运行步骤:
1、WinMain函数的定义
2、创建一个窗口
3、进行消息循环
4、编写窗口过程函数
一个简单的例子来说明WinMain函数的定义
最简单的Windows程序就是如此显示一个消息窗口,代码如下:
#include<Windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
MessageBox(NULL, "Visual C++", "窗口消息", 0); //显示消息对话框,MessageBox(句柄,显示内容,标题,MB_OK[此参数类型多种,如:MB_YESNO,MB_OKCANCEL等])
return 0;
}
创建一个窗口(均用实例中的代码进行说明)
创建一个Windows窗口需要经过以下操作步骤:
1、设计一个窗口类;
2、注册窗口类;
3、创建窗口;
4、显示及更新窗口。
1️⃣、设计一个窗口类
WNDCLASS wn1; //定义一个窗口类
wn1.style = CS_HREDRAW | CS_VREDRAW; //窗口类的类型
wn1.lpfnWndProc = Win1; //窗口的过程函数(回调函数)
wn1.cbClsExtra = 0; //窗口类的附加内存,一般设置为0
wn1.cbWndExtra = 0; //窗口附加内存空间,通常设置为0
wn1.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//画刷句柄通俗的说就是窗口的背景
wn1.hCursor = LoadCursor(NULL, IDC_APPSTARTING); //光标句柄;使用系统预定义光标时,第一个参数为NULL,第二参数有很多,仅限于系统预订光标
wn1.hIcon = LoadIcon(NULL, IDI_ERROR)