WINAPI:隐藏选项卡控件中的子元素

时间:2015-06-26 13:52:51

标签: c++ winapi tabcontrol

我在我的应用程序中使用TabControl几个标签。我在选项卡中隐藏子元素时遇到问题。我通常用

隐藏元素
ShowWindow(hElementName, SW_HIDE))

并用

显示它们
ShowWindow(hElementName, SW_SHOW))

但由于某种原因,它不适用于位于标签内的任何元素。

我试过调用

RedrawWindow(hElementName, NULL, NULL, RDW_INVALIDATE);   
RedrawWindow(hTabElementName, NULL, NULL, RDW_INVALIDATE);
RedrawWindow(hTabControlElementName, NULL, NULL, RDW_INVALIDATE);

但这并没有改变这种行为。关于我在这里做错了什么的建议?

更新:

感谢你的评论,peterchen和Jonathan Potter。我真的很感谢你对问题的帮助。我仍然遇到同样的问题。

到目前为止我做了什么:

  • 确保为选项卡控件和实际选项卡窗口设置了WS_CLIPSIBLINGS和WS_CLIPCHILDREN样式标志
  • 确保窗口句柄对我要处理的元素
  • 有效
  • 确保窗口句柄没有与代码中的任何其他位置混淆。现在(出于调试目的),它仅在代码中的四个位置提及。当它被初始化为NULL时,使用CreateWindowEx创建窗口时,在我显示/隐藏它的代码段中创建两次。

我会遇到同样的问题。

我做了一个观察:

我的应用程序具有最小化到托盘然后还原的功能。我通过隐藏主应用程序窗口来做到这一点。所以这就是我注意到的:如果选项卡控件上的元素应该被隐藏(并且它不是),并且我最小化然后恢复应用程序,则在重绘整个窗口之后,元素将按预期隐藏。这就是为什么我100%确定我在正确的元素上调用ShowWindow并且我不会在代码中的其他位置显示它。它与没有重新绘制的元素有关,但我无法理解究竟是什么问题。

0 个答案:

没有答案