在MFC中查找HWND

来源:互联网 发布:淘宝店招收藏店铺代码 编辑:程序博客网 时间:2024/05/20 15:11

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

 

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

 

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

 

想得到一个控件的的句柄

GetDlgItem(ID…)->m_hWnd

 

得到视图的句柄

AfxGetMainWnd()->GetActiveView();

 

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

 

 

 

分类:

GetSafeHandle();
this-> hWnd;
GetDlgItem(hwnd,ID);//获取窗口ID所对应的HWND的子窗口句柄


在主窗口中,如果要用到父窗口的句柄,可以用
HWND   GetParent(HWND   hWnd)       得到
  参数为当前所在子窗口的句柄,函数的返回值就是当前子窗口的父窗口句柄

在父窗口中,如果有子窗口句柄,可以调用 GetWindowLong(hwndChild,GWL_ID)
   参数GWL_ID就是用语获取子窗口的句柄


HWND   FindWindow(
    LPCTSTR   lpClassName,   //   pointer   to   class   name
    LPCTSTR   lpWindowName   //   pointer   to   window   name
);
其中lpClassName是窗口的类名,你可以用spy++来查看其类的名称;lpWindowName是窗口的名称,一般指的是窗口的标题。如果窗口的名称唯一,则窗口的类名可以省略,如:
HWND   hWnd;
hWnd   =   ::FindWindow(NULL,   "你的窗口标题 ");


对象-> GetSafeHwnd();     //控件对象