如何在浮动状态下隐藏 CDockablePane 中的标题栏?
Posted
技术标签:
【中文标题】如何在浮动状态下隐藏 CDockablePane 中的标题栏?【英文标题】:How to hide a title bar in CDockablePane in float state? 【发布时间】:2017-06-22 03:16:06 【问题描述】:virtual int GetCaptionHeight() const return 0;
我用这个可以在停靠状态下隐藏标题栏,但是当它浮动时,标题是存在的。
【问题讨论】:
【参考方案1】:只有在不浮动时才从窗格中绘制标题。只需查看GetCaptionHeight
的默认实现!
窗格在浮动时位于CPaneFrameWnd
内。
AFAIK 你必须控制外框窗口。它由CreateDefaultMiniframe
创建。它通常应该创建一个CPaneFrameWnd
。
从默认的迷你框架类派生您自己的类。 (应该是CPaneFrameWnd
,但最好重新检查一下)。有一个虚函数CPaneFrameWnd::GetCaptionRect
。
在您的 CDockablePane
类中使用 SetMiniFrameRTC
来设置这个新的类框架以用于您的窗格。
【讨论】:
我做了上面的步骤(DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE 需要修改为 DECLARE_SERIAL/IMPLEMENT_SERIAL),并且我覆盖了 void CSkinPaneFrameWnd::GetCaptionRect(CRect& rectCaption) const rectCaption = CRect(0, 0, 0 , 0); 但标题位置显示为黑色矩形。 嗯。调试。谁在调用 GetCaptionRect?如何评估? 谢谢你的回答,我发现它是在绘制标题时调用的,我很难做更多的研究。 在我的情况下,如果您返回的标题 rect 是空的,那么我看不到任何绘图都已完成。以上是关于如何在浮动状态下隐藏 CDockablePane 中的标题栏?的主要内容,如果未能解决你的问题,请参考以下文章
如何将停靠在选项卡中的 CDockablePane 带到前面