在MFC中獲取窗口\視圖句柄 &獲取當前活動的CView .


1 在多文檔多視圖的MFC架構中,要想獲得當前選中的CView可重寫CView::OnActivateView函數,如下:

void
OnActivateView(BOOL bActivate,
              CView * pActivateView,
              CView * pDeactiveView)
{
 if(bActivate)
 {
     SetEnable(TRUE);
 }
 else
 {
     SetEnable(FALSE);
 }

    CView::OnActivateView(bActivate,
                             pActivateView,
                     pDeactiveView);
}

 

2 獲得窗口或者視圖句柄

2.1 獲得窗口句柄

 

要找到某個CWnd對象的HWND,用GetSafeHwnd()。

在窗口類中,有句柄的成員變量,可以直接訪問:   m_hWnd   
在窗口類外,可以用AfxGetMainWnd()->m_hWnd獲得。

在MainFrame里直接用this;   
其它地方用   CMainFrame*   pMainFrame   =   (CMainFrame*)theApp.m_pMainWnd;  

想得到一個控件的的句柄

GetDlgItem(ID…)->m_hWnd

 

2.2 獲得視圖的句柄

AfxGetMainWnd()->GetActiveView();

SDI:   ((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();     
MDI:   ((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveFrame()->GetActiveView();  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM