概述
2019独角兽企业重金招聘Python工程师标准>>>
要创建一个新的窗口,需要先使用 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 errorn");
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编码
转载于:https://my.oschina.net/tigerBin/blog/905412
最后
以上就是缓慢母鸡为你收集整理的MFC创建窗口 RegisterClassEx 和 CreateWindow的全部内容,希望文章能够帮你解决MFC创建窗口 RegisterClassEx 和 CreateWindow所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复