向导生成默认代码
在·int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)`函数生成TAB样式视图默认代码
CMDITabInfo mdiTabParams;
mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
mdiTabParams.m_bActiveTabCloseButton = TRUE; // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
mdiTabParams.m_bTabIcons = FALSE; // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
mdiTabParams.m_bAutoColor = TRUE; // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
EnableMDITabbedGroups(TRUE, mdiTabParams);
禁用关闭按钮修改代码
CMDITabInfo mdiTabParams;
mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
mdiTabParams.m_bActiveTabCloseButton = FALSE; // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
mdiTabParams.m_bTabIcons = FALSE; // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
mdiTabParams.m_bAutoColor = TRUE; // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
mdiTabParams.m_bTabCloseButton = FALSE;
EnableMDITabbedGroups(TRUE, mdiTabParams);
修改内容
- 将
mdiTabParams.m_bActiveTabCloseButton = TRUE;
修改为mdiTabParams.m_bActiveTabCloseButton = FALSE;
- 增加
mdiTabParams.m_bTabCloseButton = FALSE;
行,禁用关闭按钮。
参考资料
https://www.3dbuzz.com/forum/threads/185778-MFC-MDI-TabbedView-Disabling-Close
参考资料代码:
void CChildFrame::OnSetFocus(CWnd* pOldWnd)
{
CMainFrame* pFrame= (CMainFrame*) AfxGetMainWnd(); //Get Handle to MainFrame
CMDIChildWnd* pActiveChild = pFrame->MDIGetActive();
CView* pActivateView = pActiveChild->GetActiveView();
if ( pActiveChild != NULL ){
CDocument* pDoc = (CPeterRobertsConsultingDoc*)pActiveChild->GetActiveDocument();
if(((NULL != pDoc) && pActivateView->IsKindOf(RUNTIME_CLASS(cMainView))))
{
//View IS cMainView and should not be closed
CMDITabInfo mdiTabParams;
mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // other styles available...
mdiTabParams.m_bActiveTabCloseButton = false; // set to FALSE to place close button at right of tab area
mdiTabParams.m_bTabIcons = FALSE; // set to TRUE to enable document icons on MDI taba
mdiTabParams.m_bAutoColor = TRUE; // set to FALSE to disable auto-coloring of MDI tabs
mdiTabParams.m_bDocumentMenu = TRUE; // enable the document menu at the right edge of the tab area
mdiTabParams.m_bTabCloseButton = false;
pFrame->EnableMDITabbedGroups(TRUE, mdiTabParams);
}else{
CMDITabInfo mdiTabParams;
mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // other styles available...
mdiTabParams.m_bActiveTabCloseButton = true; // set to FALSE to place close button at right of tab area
mdiTabParams.m_bTabIcons = FALSE; // set to TRUE to enable document icons on MDI taba
mdiTabParams.m_bAutoColor = TRUE; // set to FALSE to disable auto-coloring of MDI tabs
mdiTabParams.m_bDocumentMenu = TRUE; // enable the document menu at the right edge of the tab area
mdiTabParams.m_bTabCloseButton = true;
pFrame->EnableMDITabbedGroups(TRUE, mdiTabParams);
}
}
CMDIChildWndEx::OnSetFocus(pOldWnd);
}