如何关闭 CMFCTabCtrl 中的选项卡

Posted

技术标签:

【中文标题】如何关闭 CMFCTabCtrl 中的选项卡【英文标题】:How to close tab in CMFCTabCtrl 【发布时间】:2013-05-09 11:30:36 【问题描述】:

我在我的 MFC 应用程序中使用了 CMFCTabCtrl,并且我启用了活动的选项卡关闭按钮。

m_TabControl.EnableActiveTabCloseButton();

但是当我点击关闭按钮时,标签并没有关闭。如何正确关闭标签?..

谢谢。

【问题讨论】:

【参考方案1】:

当您单击关闭按钮时,WM_CLOSE 消息会发送到初始化期间在 AddTab 中使用的窗口。

因此,在那个子窗口中,添加一个WM_CLOSE 消息处理程序并执行以下操作:

void CMyTabWindow::OnClose()

    // nb - must be created with the tab ctrl as parent
    CMFCTabCtrl *pTab = static_cast<CMFCTabCtrl*>(GetParent());
    pTab->RemoveTab(pTab->GetActiveTab());

【讨论】:

@Zeus - 我的荣幸 - 在我的测试中,看起来一切都被正确破坏了,但最好还是仔细检查一下。 我有问题。动态添加和删除选项卡时,我将添加的选项卡对话框保存在 vector 中。但是如何从向量中删除关闭的选项卡对话框。有什么建议吗??.. @Zeus - 我会将CMyDialog* 存储在std::set 中,然后您可以按值将inserterase 存储起来,这样更容易。【参考方案2】:

尝试在您的 CTabCtrl 上使用 DeleteItem(index)。这将从您的选项卡控件中删除该选项卡。

【讨论】:

以上是关于如何关闭 CMFCTabCtrl 中的选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 CMFCtabCtrl 的 TabbedDocumentsMenu 上的工具提示“活动文件”?

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

如何优雅的写UI——添加MFC选项卡

SetFocus 和 KillFocus

使用关闭按钮切换引导选项卡

关闭选项卡以关注上一个选项卡而不是第一个选项卡时如何更改 dojo 内容选项卡焦点?