代码之家  ›  专栏  ›  技术社区  ›  Ljdawson

创建方形窗口C++

  •  3
  • Ljdawson  · 技术社区  · 16 年前

    陷入了一个棘手的问题。我正在使用C++和VC++使用CealWistWOW()命令在C++中创建一个GUI。

    我的问题是,如何使内部的可绘制区域成为一个完美的正方形。当传入要创建的窗口的大小时,其中一些将从顶部的菜单栏、边框等处扣除。是否可以传入任何实时变量,例如创建500x500窗口:

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

    谢谢大家

    3 回复  |  直到 16 年前
        1
  •  4
  •   GManNickG    16 年前

    我通常的做法是 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 和; realHeight 到 CreateWindow .

    正如其名称所示,该函数将根据您的窗口样式和菜单使用来调整窗口,以便客户机区域与您所需的大小相匹配。

        2
  •  0
  •   Toad    16 年前

    您可以在此处找到所有相关的大小(Windows框架宽度、菜单栏高度等): GetSystemMetrics() . 使用这些值,您应该能够创建一个完美的方形窗口。

        3
  •  0
  •   i_am_jorf    16 年前

    您可以从 GetSystemMetrics() API调用。

    例如,菜单将 SM_CXMENU 和 SM_CYMENU .