一个窗口要显示,先要把它创建出来。那就需要调用API函数CreateWindow了,所以在注册窗口后的第二步,就需要调用创建窗口函数。
函数声明如下:
WINUSERAPI
HWND
WINAPI
CreateWindowExA(
__in DWORD dwExStyle,
__in_opt LPCSTR lpClassName,
__in_opt LPCSTR lpWindowName,
__in DWORD dwStyle,
__in int X,
__in int Y,
__in int nWidth,
__in int nHeight,
__in_opt HWND hWndParent,
__in_opt HMENU hMenu,
__in_opt HINSTANCE hInstance,
__in_opt LPVOID lpParam);
WINUSERAPI
HWND
WINAPI
CreateWindowExW(
__in DWORD dwExStyle,
__in_opt LPCWSTR lpClassName,
__in_opt LPCWSTR lpWindowName,
__in DWORD dwStyle,
__in int X,
__in int Y,
__in int nWidth,
__in int nHeight,
__in_opt HWND hWndParent,
__in_opt HMENU hMenu,
__in_opt HINSTANCE hInstance,
__in_opt LPVOID lpParam);
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
#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)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif // !UNICODE
dwExStyle是扩展的窗口类型。
lpClassName是注册的窗口类型名称。
lpWindowName是窗口名称。
dwStyle是窗口类型。
X是窗口左上角位置。
Y是窗口左上角位置。
nWidth是窗口的宽度。
nHeight是窗口的高度。
hWndParent是父窗口。
hMenu是主菜单。
hInstance是应用程序实例句柄。
lpParam是传送给窗口的自定义参数。
调用这个函数的实例如下:
// First.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
HINSTANCE hinst;
char szTitle[] = "这是一个测试窗口";
char szWindowClass[] = "szClassName";
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
return 0;
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hinst = hInstance;
HWND hWnd;
hWnd = CreateWindow(szWindowClass, // szWindowClass是窗口注册名称
szTitle, // 窗口显示的标题
WS_OVERLAPPEDWINDOW, // 窗口显示类型
CW_USEDEFAULT, // 缺省的左上角坐标
CW_USEDEFAULT, // 窗口左上角坐标,由于X坐标设置为缺省的坐标了
CW_USEDEFAULT, // 设置窗口的宽度。使用缺省值
CW_USEDEFAULT, // 设置窗口的高度
NULL, // 父窗口设置为无
NULL, // 主菜单设置为无
hInstance, // 窗口当前实例句柄
NULL); // 传递给窗口的自定义参数
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。
通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。