MFC中CFrameWnd::GetActiveView函數的使用

被一個小bug卡了很長時間,走了很多彎路。應該先查MSDN的。我的錯誤在於不知道“在MDI應用程序中,MDI主框架窗口沒有一個關聯的視圖。 相反,每個單獨的子窗口(CMDIChildWnd)具有一個或多個關聯的視圖。”

http://technet.microsoft.com/zh-cn/exchange/zs0t7t34(v=VS.80)


CFrameWnd::GetActiveView

調用該成員函數獲取指向活動視圖(如果有)附加到框架窗口(CFrameWnd)。

CView* GetActiveView( ) const;
返回值

對當前 CView的指針。 如果沒有當前視圖中,返回 NULL

備註

此函數返回 NULL,在調用對MDI主框架窗口(CMDIFrameWnd)。 在MDI應用程序中,MDI主框架窗口沒有一個關聯的視圖。 相反,每個單獨的子窗口(CMDIChildWnd)具有一個或多個關聯的視圖。 在MDI應用程序的活動視圖可以通過首先查找活動的MDI子窗口然後找到該子窗口的事件視圖獲取。 活動MDI子窗口可以通過調用函數來找到MDIGetActive 或 GetActiveFrame 如下面所示:


CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->GetMainWnd();

// Get the active MDI child window.
CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();

// or CMDIChildWnd *pChild = pFrame->MDIGetActive();

// Get the active view attached to the active MDI child window.
CMyView *pView = (CMyView*)pChild->GetActiveView();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章