MFC创建窗口 RegisterClassEx 和 CreateWindow
博客专区 > tigerBin 的博客 > 博客详情
MFC创建窗口 RegisterClassEx 和 CreateWindow
tigerBin 发表于7个月前
MFC创建窗口 RegisterClassEx 和 CreateWindow
  • 发表于 7个月前
  • 阅读 57
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

要创建一个新的窗口,需要先使用 RegisterClassEx 注册一个新的窗口类型,然后调用CreateWindow宏创建一个已注册的窗口

#include <windows.h> 
#include <stdio.h>

// Global variable 
 
HINSTANCE hinst; 
 
// 回掉函数
 
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM)
{
	while(true);
	return 0;
}

 
// 函数入口点
 
int WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
	WNDCLASSEX wcx;
	//初始化窗口结构体
	wcx.cbSize 			= sizeof(WNDCLASSEX);
	wcx.style  			= CS_HREDRAW | CS_VREDRAW;
	wcx.lpfnWndProc 	= MainWndProc;
	wcx.cbClsExtra 		= 0;
	wcx.cbWndExtra 		= 0;
	wcx.hInstance		= hinstance;
	wcx.hIcon			= LoadIcon(0, IDI_APPLICATION);
	wcx.hCursor			= LoadCursor(0, IDC_ARROW);
	wcx.hbrBackground	= 0;
	wcx.lpszMenuName	= "MainMenu";
	wcx.lpszClassName	= "MainWindow";
	wcx.hIconSm			= 0;
	//注册一个窗口
	ATOM wc = RegisterClassEx(&wcx);

	if (!wc)
	{
		printf("Register error!\n");
		return -1;
	}
	//创建一个窗口,只能创建已经注册到系统的窗口类型
	HWND hWnd = CreateWindow("MainWindow","Window exp",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL);

	if (!hWnd)
	{
		printf("Create error\n");
		return -1;
	}
	//显示窗口
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	return 0;
} 

CreateWindow是一个宏定义

#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif

他们最终调用的函数是

#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

CreateWindowW使用Unicode编码

CreateWindowA使用ANSI编码

标签: MFC C/C++
共有 人打赏支持
粉丝 0
博文 48
码字总数 14652
×
tigerBin
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: