gpt4 book ai didi

Windows 编程 : pWnd and HWND difference

转载 作者:行者123 更新时间:2023-12-03 11:08:02 24 4
gpt4 key购买 nike

为什么 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);

实际上,为什么 Windows 会有 pWndHWND 这两种类型?

由于HWND可以通过pWnd->m_hWnd获取,所以函数总是可以将pWnd作为参数。它背后的设计理念是什么?

最佳答案

Windows 中没有一个函数采用CWnd*(您称之为pWnd)。 Windows(特别是 user32.dll)专门使用 HWND 来识别窗口对象。

class CWnd 是 MFC 的一部分,MFC 是构建在 Windows 之上的 C++ 库。只有 MFC 以及使用 MFC 编写的类和函数才知道那是什么。

(然后是以前称为 Metro 的现代 UI,它没有以上任何一项。它也不使用 user32.dll。但这是另一个话题。)

关于Windows 编程 : pWnd and HWND difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com