【问题标题】:How to get width and height from CreateWindowEx() window? C++如何从 CreateWindowEx() 窗口获取宽度和高度? C++
【发布时间】:2010-10-11 13:28:38
【问题描述】:

我已经用 CreateWindowEx() 函数创建了一个窗口,现在我如何从我创建的那个窗口中获取宽度和高度?这听起来很基本,但我找不到任何答案;_;

这是必需的,因为窗口高度是根据 Windows 想要创建的方式自动创建的。

语言 C 或 C++

【问题讨论】:

    标签: c++ c windows winapi window


    【解决方案1】:

    使用GetWindowRect。从左边减去右边得到宽度,从顶部减去底部得到高度。

    RECT rect;
    if(GetWindowRect(hwnd, &rect))
    {
      int width = rect.right - rect.left;
      int height = rect.bottom - rect.top;
    }
    

    附带说明,如果您想要客户区而不是整个窗口。您可以使用GetClientRect。有关该窗口的其他信息,您可以使用GetWindowInfo

    【讨论】:

      【解决方案2】:

      我相信你在找GetWindowInfo

      例子:

      HWND window = ::CreateWindowEx(...);
      WINDOWINFO info;
      if ( ::GetWindowInfo(window, &info) ) {
        ...
      }
      

      【讨论】:

        【解决方案3】:

        您是否尝试过返回WINDOWINFO 结构的GetWindowRect()GetWindowInfo()

        【讨论】:

        • GetWindowRect() 是正确的选择,感谢你们!
        【解决方案4】:

        鉴于没有说明您需要该大小的原因,并且如果窗口样式设置为包含可调整大小的属性[并且用户使用最小化/最大化/恢复或拖动窗口边缘来调整窗口大小],则大小可能会发生变化,您的最安全的选择是包含 WM_SIZE 的消息处理程序并使用 wparam 和 lparam 参数值来确定窗口尺寸。这样,您将始终知道当前大小。 WM_SIZE 在窗口创建后的消息序列中被调用。

        【讨论】:

          猜你喜欢
          • 2013-11-29
          • 2014-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-28
          • 1970-01-01
          相关资源
          最近更新 更多