来源:网络 | 2007-10-26 | (有14034人读过)
一个窗口要显示,先要把它创建出来。那就需要调用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是传送给窗口的自定义参数。 调用这个函数的实例如下: #001 // #002 // 函数: InitInstance(HINSTANCE, int) #003 // #004 // 目的: 保存程序实例句柄,并创建窗口显示。 #005 // #006 // 蔡军生 2007/07/12 #007 // #008 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) #009 { #010 HWND hWnd; #011 #012 hInst = hInstance; // 保存实例句柄到全局变量里。 #013 #014 hWnd = CreateWindow(szWindowClass, #015 szTitle, #016 WS_OVERLAPPEDWINDOW, #017 CW_USEDEFAULT, #018 0, #019 CW_USEDEFAULT, #020 0, #021 NULL, #022 NULL, #023 hInstance, #024 NULL); #025 #026 if (!hWnd) #027 { #028 return FALSE; #029 } #030 #031 ShowWindow(hWnd, nCmdShow); #032 UpdateWindow(hWnd); #033 #034 return TRUE; #035 } 第14行里就是调用创建窗口函数。szWindowClass是窗口注册名称,前面已经介绍过注册的。 第15行的szTitle是窗口显示的标题。 第16行是窗口显示类型。 第17行是缺省的左上角坐标。 第18行是窗口左上角坐标,由于X坐标设置为缺省的坐标了,所以会忽略这里的所有设置的值。 第19行是设置窗口的宽度。使用缺省值。 第20行同样忽略窗口的高度。 第21行是没有父窗口。 第22行是没有主菜单。 第23行是窗口当前实例句柄。 第24行是传递给窗口的自定义参数为空。 如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。 通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。
|