0
爲什麼Windows中的某些功能需要參數pWnd
,而其他功能需要參數HWND
?例如: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系統有兩種類型pWnd
和HWND
?
由於HWND
可以通過pWnd->m_hWnd
獲得,該功能可以隨時總是可以pWnd
作爲參數。背後的設計理念是什麼?
我的猜測(和它只是一個猜測)是一些採用HWND的API首先出現並保持向後兼容。後來的API使用pWnd構造,它封裝了HWND,但也提供了更多信息。 –
第一個函數是MFC特定的,因此它可能需要MFC特定的參數。第二個不是MFC函數,所以它不能。 –
順便說一句,你可以使用一個CWnd封裝器來發送消息,像這樣:'pWnd-> SendMessage(WM_MYMESSAGE,(LPARAM)&dc.m_ps,0);' – cha