现在的位置: 首页 > 综合 > 正文

Windows API一日一练(6)CreateWindow函数

2013年10月05日 ⁄ 综合 ⁄ 共 2438字 ⁄ 字号 评论关闭
一个窗口要显示,先要把它创建出来。那就需要调用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行是传递给窗口的自定义参数为空。
 
如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。
通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。

 

抱歉!评论已关闭.