2010-01-24 109 views
3

卡住了一个小问题。我使用命令CreateWindow()使用XP和VS C++在C++中创建GUI。创建方形窗口C++

我的问题是,如何让内部可涂漆区域成为完美的方形。当传递创建的窗口大小时,会扣除顶部的菜单栏,所有的边框等等。有没有任何实时变量可以传入,例如,创建一个500×500的窗口应该是:

...500+BORDER,500+MENU_TOP+BORDER... 

谢谢大家

回答

4

我通常这样做的方式是AdjustWindowRect。我发现它比其他建议的方法更简单(它应该同样适用,这是您的选择)。使用它作为这样的:

RECT rect = {0, 0, desiredWidth, desiredHeight}; 

AdjustWindowRect(&rect, windowStyle, hasMenu); 

const int realWidth = rect.right - rect.left; 
const int realHeight = rect.bottom - rect.top; 

又通realWidth & realHeightCreateWindow

顾名思义,该函数将根据您的窗口样式和菜单使用来调整窗口,以便客户端区域符合您所需的大小。

+0

很好,谢谢! – Ljdawson 2010-01-25 20:32:35

+0

没问题:3 – GManNickG 2010-01-25 20:42:28

0

,你可以找到所有相关的大小(窗口framewidth,菜单高度等)在这里:GetSystemMetrics()。使用这些值,您应该能够创建一个完美的方形窗口

0

您可以从GetSystemMetrics() API调用中获取所有UI度量标准。

例如,菜单将是SM_CXMENUSM_CYMENU