Jam*_*ing 0 windows winapi mfc visual-studio visual-c++
为什么Windows中的某些功能需要pWnd参数而其他功能需要HWND参数?例:
// Get a dc for a CWnd object pointer.
CPaintDC dc(pWnd);
// Send my private massage.
::SendMessage(pWnd->m_hWnd, WM_MYMESSAGE, (LPARAM) &dc.m_ps, 0);
Run Code Online (Sandbox Code Playgroud)
其实,为什么Windows系统有两种类型的pWnd和HWND?
由于HWND可以通过pWnd->m_hWnd,所以函数总是可以pWnd作为参数.它背后的设计理念是什么?
Windows中没有一个功能可以使用CWnd*(您可以调用pWnd).Windows(特别是user32.dll)专门HWND用于标识窗口对象.
class CWnd是MFC的一部分,MFC是一个基于Windows构建的C++库.只有使用MFC编写的MFC和类和函数才能知道它是什么.
(然后有现代UI,以前称为Metro,它没有以上任何一种.它也没有使用user32.dll.但这是另一个主题.)
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |