如何创建一个窗口?
- W_Z_C
- 共 578 字,阅读约 1 分钟
本节内容主要介绍 Windows 窗口创建 的第二步,如何真正的创建一个窗口。在 Windows 中创建新的窗口实例,需要调用 CreateWindowEx 函数。
HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class
L"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);
if (hwnd == NULL)
{
return 0;
}
函数详细的描述可以参考 MSDN 文档,这里简要的做一下概述:
- dwExStyle 是一个窗口扩展样式(例如让窗口透明),一般直接传空。
- lpClassName 是在 填充窗口类 的时候所起的名字,它是用来告诉你建立的窗体和那个窗口类进行关联。
- lpWindowsName,这个就是窗口的标题名。
- dwStyle,窗口的样式,具体的很多样式组合非常丰富。这里用正常的窗口参数 WS_OVERLAPPEDWINDOW ,它是一堆窗口样式的组合。
- 第五个和第六个参数表示窗体在建立时的在桌面的位置。从左往右是 x 轴,坐标依次增大,从上到下是 y 轴,坐标依次增大。窗口的左上角是坐标(0,0),当然这里指的是客户区,不算标题栏菜单栏和窗体边界之类的。
- 第七个和第八个参数分别带表窗体的宽和高。
- hWndparent 是代表窗体是否有父窗体,填 NULL。
- hMenu 代表着菜单句柄,表示是否窗体有的菜单,填 NULL。
- hinstance 一样是窗体应用实例句柄,只要传进 WinMain 函数 的第一个参数即可。
- 最后一个参数是一个附加参数,类型为 void*。你可以通过该参数将一些自定义数据传递给窗口过程函数。
如果函数执行成功会返回一个窗口的句柄,如果失败则会返回 NULL。