我有一个使用 WTL 8.1 开发的用于 Windows XP SP3 的 VS2008 C++ 应用程序。我的应用程序包含一个选项卡控件,该控件在调整应用程序边框大小时闪烁。
我的窗口层次结构如下所示:
CFrameWindowImpl CMainFrm
|-CSplitterWindow Splitter
|-CTabView Configuration Tabs
| |-CDialogImpl Configuration View 1
| |-CDialogImpl Configuration View 2
| |-CDialogImpl Configuration View 3
|-CDialogImpl Control View
我正在尝试的解决方案是让CFrameWindowImpl
派生类使用该WS_EX_COMPOSITED
样式,并且它下面的所有窗口都使用该WS_EX_TRANSPARENT
样式。不幸的是,这使得选项卡控件按钮显示为一个空的黑条,并且任何配置视图的控件根本不显示。
如果我删除WS_EX_COMPOSITED
andWS_EX_TRANSPARENT
样式,表单会正确显示,但是CTabView
在调整大小时,它下面的所有内容都会可怕地闪烁。
我需要更改什么来消除闪烁并正确绘制控件?
谢谢,保罗
编辑:让它工作。根据 Mark Ransom 的建议,我删除了所有WS_EX_TRANSPARENT
样式。我只将WS_EX_COMPOSITED
样式放在(包含在 中)。其他控件根据需要通过.CTabCtrl
CTabView
WTL::CDoubleBufferImpl<>