创建窗口的尺寸

在Windows下,创建Win32窗口的时候会制定其宽高。如果我们制定的这个尺寸只是窗口的客户区(一个普通的Direct3D窗口程序那样),那么由于直接调用CreateWindow的时候,接受的尺寸却是整个窗口的尺寸,就会造成实际的客户区域要比我们设想的要小。这是因为实际的窗口中除了客户区外,还可能包含边框和标题栏,这部分实际上也是要占用空间的,所以就造成客户区被压缩了。

为了准确的创造出客户区尺寸,就必须事先计算出包含了边框和标题栏的窗口尺寸后,再传给CreateWindow。

 

1 DWORD window_style;
2  // 指定创建的窗口包含标题栏和边框(WS_CAPTION本身就包含了WS_BORDER)
3  // 实际中发现即使不指定WS_CAPTION也没有什么差别
4  window_style = WS_SYSMENU | WS_CAPTION;
5
6 // 想在(100,100)处创建一个包含了512*512大小客户区的窗口
7 int x = 100, y = 100;
8 int width = 512, height = 512;
9
10 // 计算获得最终的窗口尺寸
11 RECT window_rect;
12 SetRect(&window_rect, x, y, x + width, y + height);
13 AdjustWindowRect(&window_rect, window_style, FALSE);

 

将AdjustWindowRecet返回的window_rect重新传给CreateWindow即可创建出正确的窗口

 

posted @ 2010-05-20 11:05  芈希有  阅读(381)  评论(0编辑  收藏  举报