MFC 单文档下用CTabView实现多页面视图

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();
}
 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值