CtabViewSDI界面:
CMyAppView : public CTabView {};
添加了2个视图,一个是CGuideView,基类是CView,一个是CMyEditView,基类是CEditView,添加视图即TabView属性设置这里忽略.....
以下是解决视图标签关闭按钮出现错误的方法之一:
重载CGuideView,和CMyEditView的WM_CLOSE 消息响应函数,在里面加入向父窗口发送关闭窗口的消息,在父窗口(即CMyAppView)里添加处理这条消息的函数,用RemoveView(nTab),移除Tabview的这条标签即可。
代码如下:
在CMyAppView里加代码
头文件:
#define WM_CLOSETAB WM_USER + 1
afx_msg LRESULT OnCloseTab(WPARAM, LPARAM);
实现文件:
BEGIN_MESSAGE_MAP(CMyAppView, CTabView)
ON_MESSAGE(WM_CLOSETAB,OnCloseTab)
END_MESSAGE_MAP()
LRESULT CMyAppView::OnCloseTab(WPARAM,LPARAM)
{
CMFCTabCtrl& ctrl = GetTabControl();
int nTab = ctrl.GetActiveTab();
RemoveView(nTab);
return 0;
}
CGuideView文件重载WM_CLOSE消息
void CGuideView::OnClose()
{
CWnd* pWnd = GetParent();
if (pWnd->IsKindOf(RUNTIME_CLASS(CMFCTabCtrl)))
pWnd->GetParent()->SendMessage(WM_CLOSETAB);
CView::OnClose();
}