MFC:当没有选项卡存在时,如何绘制 CTabView 背景?

Posted

技术标签:

【中文标题】MFC:当没有选项卡存在时,如何绘制 CTabView 背景?【英文标题】:MFC: How do you Paint a CTabView Background When no tabs exist? 【发布时间】:2020-02-20 03:27:41 【问题描述】:

我要显示一些文本,可能在没有选项卡的情况下使用DrawText()CTabView 客户区来解释它们不存在的原因。但是,CTabView::OnPaint() 不会被调用,除非在应用程序启动时调用一次。此外,当所有选项卡都隐藏时,CTabView::OnDraw() 也不会被调用。我想CMFCTabCtrl 可能是获得OnPaint() 回调的那个?但是,当未显示所有选项卡(通过CMFCTabCtrl::ShowTab() 隐藏)时,如何将某些内容输出到由CTabView 占用的CSplitterWnd 的行/列。 ??

TIA!!

【问题讨论】:

由于CTabView是从CView派生的,所以必须在OnDraw旁边调用其他方法,比如OnEraseBkg ...你检查了吗? 在你的情况下,腐烂的原因是 CTabView 被隐藏了......你可以检查一下...... 【参考方案1】:

选项卡控件的工作方式是隐藏所有选项卡视图 - 除了打开的选项卡视图。

如果没有打开任何选项卡视图,则不会收到绘制消息(也不会收到 WM_ERASEBACKGROUND)。

您可以尝试在选项卡控件的 OnPaint 处理程序中实现您的绘画内容。

【讨论】:

以上是关于MFC:当没有选项卡存在时,如何绘制 CTabView 背景?的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭 CMFCTabCtrl 中的选项卡

使 MFC CTabCtrl 不使用绘图选项卡的完整控件宽度

MFC CTabCtrl如何为选项卡添加关闭按钮

如何从 MFC 选项卡控件 (TabCtrl) 获取额外数据?

C++,MFC MDI,激活特定选项卡

如何从MFC选项卡控件(TabCtrl)获取额外数据?