月度存档: 八月 2013

win32 创建指定客户区大小的窗口

CreateWindow(TEXT(""), TEXT(""), WS_OVERLAPPEDWINDOW,
	CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

上面是创建一个窗口,位置和大小都有系统随意指定。

一般来说,如果写一个win32窗口,想指定其大小,往往第一感觉应该是客户区大小才对,因为鼠标等消息返回的坐标是客户区坐上叫为原点的。但事实却是:创建的窗口大小是包括标题栏等表框的,这让很多想要有指定客户区大小的初学者苦恼了(^_^包括我)。

下面介绍一种比较方便的方法来创建一个指定客户区大小的窗口:

RECT rect;
rect.right = w;
rect.bottom = h;
rect.left = 0;
rect.top = 0;
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, false);
CreateWindow(TEXT(""), TEXT(""), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, rect.right - rect.left, rect.bottom - rect.top,
NULL, NULL, hInstance, NULL);

继续阅读 »