在MFC中获取窗口\视图句柄 &获取当前活动的CView .

1 在多文档多视图的MFC架构中,要想获得当前选中的CView可重写CView::OnActivateView函数,如下:

void
OnActivateViewBOOL bActivate,
              CView * pActivateView,
              CView * pDeactiveView)
{
 ifbActivate)
 {
     SetEnableTRUE);
 }
 else
 {
     SetEnableFALSE);
 }

    CView::OnActivateViewbActivate,
                             pActivateView,
                     pDeactiveView);
}

2 获得窗口或者视图句柄

2.1 获得窗口句柄

要找到某个CWnd对象的HWND,用GetSafeHwnd)。

在窗口类中,有句柄的成员变量,可以直接访问:   m_hWnd   
在窗口类外,可以用AfxGetMainWnd)->m_hWnd获得。

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

想得到一个控件的的句柄

GetDlgItemID…)->m_hWnd

2.2 获得视图的句柄

AfxGetMainWnd)->GetActiveView);

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注