【问题标题】:Win32 C++ : Parent controls is drawn on top of childrenWin32 C++:父控件绘制在子控件之上
【发布时间】:2021-12-04 10:02:38
【问题描述】:

我目前正在为 Win32 窗口和控件编写一个使用自制包装器的 GUI 应用程序。我制作了一个自定义类,它应该充当子控件的容器。问题是我的自定义控件被绘制在子控件之上,这使得它们不可见。

我已将WS_CLIPCHILDREN 标志添加到我的容器中,但问题仍然存在。

【问题讨论】:

  • 你看过“z-order”吗?我做经典的 Windows 编程已经有一段时间了,但这就是我在阅读问题时突然想到的内容
  • 哦,好吧,我太笨了。我只是在我的方法中使用了 SetWindowPos() 来添加一个子控件,并且我做了它以便它被插入到父控件之后。做到了!现在我只有一个问题:我必须给子控件一个新的位置和一个新的大小,除非我已经初始化了它们。是否有一个等效的功能可以在不移动或调整大小的情况下一个接一个地插入控件?

标签: c++ windows win32gui


【解决方案1】:

正如 Jeromy Adofo 所指出的,问题与 Z 排序有关。

我使用了SetWindowPos()(MSDN 页面here)并像这样传递了前两个参数:SetWindowPos(childHwnd, parentHwnd, ...);,它成功了。

另一件事,SetWindowPos() 询问孩子的位置和大小。如果已经为您设置了这些值,并且您不想再次传递它们,请使用标志组合 SWP_NOMOVE | SWP_NOSIZE 并将位置和大小参数设置为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 2015-06-13
    • 2010-12-28
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多