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

简介: 1 在多文档多视图的MFC架构中,要想获得当前选中的CView可重写CView::OnActivateView函数,如下: void OnActivateView(BOOL bActivate,              CView * pActivateView,              CV...

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

目录
相关文章
|
2月前
MFC的视图窗口
MFC的视图窗口
11 0
|
2月前
MFC窗口创建机制
MFC窗口创建机制
10 0
|
API C# Windows
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
本篇主要介绍一些与窗口句柄相关的一些API,比如设置窗口状态、当前激活的窗口、窗口客户区的大小、鼠标位置、禁用控件等,以及介绍Winform中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
1720 0
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
|
C#
C#中获得窗体的句柄
C#中获得窗体的句柄
223 0
WinForm 创建窗口句柄时出错
WinForm 创建窗口句柄时出错
452 0
WinForm 创建窗口句柄时出错
MFC设置窗体大小SetWindowPos
SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);     表示不考虑(0,0),仅仅将大小改为200x300,位置不变    SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);    表示不考虑200X300,只是把位置挪到(0,0).
4060 0
|
C# C++
获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄
原文:获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄 有时候在c++调用wpf控件的时候,wpf控件想自己显示窗体,但需要设置owner属性。迂回解决办法是设置wpf的window窗体的父窗体为进程的句柄。
3059 0