2021-07-16 VS2019定义窗口

首先知道一些定义:

HINSTANCE hInstance:窗口句柄,可以理解为一个窗口的标识符,相当于我们每个人都有一个身份证号一样,用来辨识不同的窗口。
HINSTANCE hPreInstance:32位及以上的计算机不会用到,都设为0。
LPSTR ICmdLine:等同于char* 类型,即字符串指针,往往是在命令行由用户输入的,所以很少用到。
int CmdShow: 用于指定窗口的显示状态,比如最大化、最小化等。
WINAPI:我们发现WinMain前面还有一个WINAPI,它表明函数的调用约定,即函数从调用方接受参数的方式。我们现在只需要先按这个格式定义我们的入口就行了。

#include<Windows.h>

//自定义的窗口过程
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
	switch (Msg) {
	case WM_DESTROY://关闭进程
		PostQuitMessage(0);
		return 0;
	default:
		return DefWindowProc(hWnd, Msg, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPreInstance, _In_ LPSTR ICmdLine,_In_ int nCmdShow) {

	// 创建窗口类
	WNDCLASS wnd = {
		CS_HREDRAW,
		MyWindowProc,          // 使用自定义的窗口过程函数
		0,0,hInstance,
		LoadIcon(NULL,IDI_APPLICATION),
		LoadCursor(NULL,IDC_ARROW),
		(HBRUSH)(GetStockObject(WHITE_BRUSH)),
		NULL, L"MyWindow"
	};
	// 注册窗口类
	RegisterClass(&wnd);
	// 创建窗口
	HWND hWnd = CreateWindow(L"MyWindow", L"newWindow", WS_OVERLAPPEDWINDOW,
		100, 100, 500, 500, NULL, NULL, hInstance, NULL);
	// 显示窗口
	ShowWindow(hWnd, nCmdShow);
	// 更新窗口
	UpdateWindow(hWnd);
	//消息循环
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) 
	{    // 循环获取消息
		TranslateMessage(&msg);               // 翻译消息
		DispatchMessage(&msg);                // 派发消息
	}
	return 0;
}

备注:
1、 int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPreInstance, _In_ LPSTR ICmdLine,_In_ int nCmdShow)

我不加_In_ ,_In_opt_,_In_,_In_j就一直警告:

 严重性    代码      说明                                     项目             文件           行       

警告    C28251    “WinMain”的批注不一致: 此实例包含 无批注。请参见 c:\program files (x86)\windows kits\10\include\10.0.18362.0\um\winbase.h(933)。  

 窗口显示图形    C:\Users\Administrator\source\repos\窗口显示图形\源1.cpp    66    

2、注册窗口->创建窗口->显示窗口->更新窗口的顺序来写

3、这里子系统要改成窗口

 4、运行结果为

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值