Windows API (DAY06) CreateWindow 函数

一个窗口要显示,先要把它创建出来。那就需要调用 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 //  
#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 行是传递给窗口的自定义参数为空。

如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值