CreateWindow() 原型如下:
[C++] 纯文本查看 复制代码 HWND CreateWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
该函数可以用来创建一个层叠窗口,弹出窗口,或一个子窗口。在函数中指定了窗口类,窗口标题,窗口风格,窗口的初始化位置以及窗口的大小(可选)。
函数如果执行成功,那么返回一个新窗口的句柄;若失败则返回 NULL,错误信息可用 GetLastError() 函数获取。
第一个参数 lpClassName 是窗口类的名字,该名字和初始化窗口类中的成员 lpszClassName 是同一个。
第二个参数 lpWindowName 是窗口标题栏上面的名字,如下图所示:
上图中的 Win32Main 就是由该参数指出。
第三个参数 dwStyle 用来指定窗口风格。表示窗口风格的选项有很多,一般情况下,可将之设置为 WS_OVERLAPPEDWINDOW ,这个选项有其它若干项相或而成,定义如下:
[C++] 纯文本查看 复制代码 #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \
WS_CAPTION | \
WS_SYSMENU | \
WS_THICKFRAME | \
WS_MINIMIZEBOX | \
WS_MAXIMIZEBOX)
其中,WS_OVERLAPPED 表示要创建的是一个重叠窗口。一个重叠窗口时指该窗口有一个标题栏与一个边框。
WS_CAPTION 表示创建一个有标题栏的窗口。
WS_SYSMENU 表示创建的窗口的标题栏上具有窗口菜单,如果你在标题栏的图标上单击一下若是能看到弹出一个菜单,那么该菜单就是窗口菜单。指定该选项,也就必须指定 WS_CAPTION 选项。
WS_THICKFRAME 表示创建的窗口具有可调边框。可调边框是当你把鼠标放在窗口的边框上可以拖拽窗口并可以改变窗口的大小。
WS_MINIMIZEBOX 和 WS_MAXIMIZEBOX 分别表示窗口上具有最小化按钮和最大化按钮。设置这两个项时,必须同时设定 WS_SYSMENU 。
第四个和第五个参数(x, y)分别用来指定窗口的水平和垂直坐标位置。一般情况下,我们会将 x 参数设置为 CW_USEDEFAULT ,这样系统会为窗口提供一个默认的起始坐标,此时 y 参数将被忽略。
第六个和第七个参数(nWidth, nHeight)分别指示了窗口的宽度和高度。同样的,通常我们也会将 nWidth 设置为 CW_USEDEFAULT ,这样系统会为我们提供默认的宽度和高度,此时 nHeight 参数被忽略。
第八个参数 hWndParent 是一个父窗口句柄,对于一个单窗口程序来说,并不存在父窗口,因此这时该参数可以设置为 NULL 。
第九个参数 hMenu 是一个菜单句柄。
第十个参数就是当前应用程序实例句柄,也就是 WinMain() 中的第一个参数。
第十一个参数指向一个值的指针,该值传递给窗口 WM_CREATE 消息。该值通过在 IParam 参数中的 CREATESTRUCT 结构传递。如果应用程序调用 CreateWindow 创建一个MDI 客户窗口,则 lpParam 必须指向一个CLIENTCREATESTRUCT结构。 |