CWnd与HWND,GetSafeHwnd()与m_hWnd

Posted xixixing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CWnd与HWND,GetSafeHwnd()与m_hWnd相关的知识,希望对你有一定的参考价值。

HWND是Windows系统中的窗口句柄,CWnd是MFC中的窗体类,两者的所属不同。CWnd对HWND进行了封装类,更加高级也更加简化。

HWND是Window内核处理对象,系统通过HWND进行操作,而我们则更多的通过CWnd提供的函数来间接操作HWND。

HWND是CWnd类的组成部分,CWnd对象的成员中有HWND对象(m_hWnd)。

以下三种都可获取控件句柄:

HWND hwnd = GetDlgItem(控件的ID)->GetSafeHwnd();   //获取句柄,GetSafeHwnd()比m_hWnd更安全,因为内部会判断是否为NULL,推荐使用

HWND hwnd = GetDlgItem(控件的ID)->m_hWnd;   //获取句柄

CWnd *pWnd = GetDlgItem(控件的ID); //获取控件句柄

 

【参考】

https://www.cnblogs.com/suanec/p/3892836.html

以上是关于CWnd与HWND,GetSafeHwnd()与m_hWnd的主要内容,如果未能解决你的问题,请参考以下文章

(转)CWnd与HWND的区别与转换

HWND CWnd 等的互相转换

GetSafeHwnd

无法在 MFC 无窗口 Activex 中获取 Cwnd 类的句柄?

HWND CWND 转换

MFC CWnd