2012-10-10 133 views
0

我正在使用選項卡在MFC中編寫應用程序。我正在用自己的課程延伸CTabView班。

我想在關閉活動選項卡的同時捕獲事件,並實際從TabView中將其刪除。

消息WM_LBUTTONUP從來沒有在這裏處理 - 它不是在任何孩子班handlen - 我做錯了什麼?

當我關閉活動選項卡時,哪裏可以捕捉到事件?如何按下CTabView關閉按鈕?

IMPLEMENT_DYNCREATE(CBottomTabView, CTabView) 

BEGIN_MESSAGE_MAP(CBottomTabView, CTabView) 
    ON_WM_CREATE() 
    ON_WM_LBUTTONUP() 
END_MESSAGE_MAP() 

CBottomTabView::CBottomTabView() 
{ 
} 

CBottomTabView::~CBottomTabView() 
{ 
} 


BOOL CBottomTabView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
    if (!CTabView::PreCreateWindow(cs)) 
     return FALSE; 

    cs.dwExStyle |= WS_EX_CLIENTEDGE; 
    cs.style &= ~WS_BORDER; 
    cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 
     ::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL); 

    return TRUE; 
} 

int CBottomTabView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
    if (CTabView::OnCreate(lpCreateStruct) == -1) 
     return -1; 

    GetTabControl().SetLocation(CMFCBaseTabCtrl::LOCATION_BOTTOM); 
    GetTabControl().ModifyTabStyle(CMFCTabCtrl::STYLE_3D_ONENOTE); 
    GetTabControl().EnableTabDocumentsMenu(TRUE); 
    GetTabControl().EnableActiveTabCloseButton(TRUE); 
    GetTabControl().EnableTabSwap(TRUE); 

    AddView(RUNTIME_CLASS(CLogView),_T("Log")); 
    AddView(RUNTIME_CLASS(CLogView),_T("Log2")); 
    AddView(RUNTIME_CLASS(CLogView),_T("Log3")); 
    return 0; 
} 

// This method is never handled!!! 
void CBottomTabView::OnLButtonUp(UINT nFlags, CPoint point) 
{ 

    int nTab = GetTabControl().GetTabFromPoint(point); 
    GetTabControl().SetActiveTab(nTab); 
    if (GetTabControl().IsTabCloseButtonPressed()) 
    { 
     RemoveView(nTab); 
    } 
    else 
    { 
     CTabView::OnLButtonUp(nFlags, point); 
    } 

} 

// This metod is handled only when changing the tab 
void CBottomTabView::OnActivateView(CView* view) 
{ 
    CTabView::OnActivateView(view); 
} 

回答

0

這是因爲您已經在消息映射中要求了OnLButtonDown事件,而不是您要反應的OnLButtonUp事件。請更改消息映射或更改您的功能。

+0

對不起,我也在嘗試OnLButtonDown,並忘記將它改回來。我改回了我的消息映射 - 它仍然沒有效果。 – filipbe

相關問題