vc获得窗口句柄

来源:互联网 发布:oracle数据库日志查看 编辑:程序博客网 时间:2024/04/28 23:58

一,在vc中经常要弹出对话框来提示用户,有可能你要提示用户的地方不是在对话框类中,此时就要获得对话框句柄来弹出提示,经常用的获得对话框句柄的函数有这些:

  1. this->m_hwnd 
  2. HWND GetForegroundWindow(VOID); 
  3. GetSafehWnd //取你程序所在窗口类的句柄 
  4. GetActiveWindow //取当前活动窗口句柄 
  5. AfxGetMainWnd //取主窗口句柄 
  6. GetForegroundWindow //取前台窗口句柄 
  7. FindWindow 
  8. EnumWindow 

 

二,关于m_hWnd
 m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员,先看一下MSDN的解析: 

The handle of the Windows window attached to this CWnd. The m_hWnd data member is a public variable of type HWND.

由此可知,它是窗口类的一个句柄,凡是从CWnd派生的类都有这个句柄,凡是以CWnd派生的类定义的对象内部也都有这个句柄,它是类或者对象标识自己的句柄
凡是窗口都有一个句柄用来标识自己,在CWnd类中将这个句柄作为一个成员变量直接封装了,所以CWnd类的成员函数都没有句柄这个参数了,比如::ShowWindow(HWND hWnd),CWnd类或者派生类中,这个函数就没有参数了,CWnd::ShowWindow(),其实这个函数实现很简单,就是调用了::ShowWindow(HWND hWnd),因为在类里已经封装好了,所以也不需要在传递参数了。

 哪如何获得窗口类的自己的句柄呢?有如下方法:
1
this->m_hWnd;
2
GetSafeHwnd();
3
AfxGetMainWnd()->m_hWnd;

原创粉丝点击