為了我自己的教育,我正在玩一些在線示例的代碼片段。
在這些例子的早期,有這樣幾行:
在這些例子的早期,有這樣幾行:
HWND hDesktopWnd = GetDesktopWindow()。
HDC hDesktopDC = GetDC(hDesktopWnd)。
為了方便起見,我在基于對話框的演示MFC專案中添加了一個新按鈕,我期望測驗的代碼被寫入::OnBnClickedRuntest()函式中。
這在過去作業得很好,我以這種方式研究、修改和測驗了其他各種代碼片段。然而,對于這幾行,我得到了一個E0144的編譯時錯誤:
"CWnd *"型別的值不能用于初始化 "HWND "型別的物體
我想,我遇到了某種名稱匹配/可見性問題。因為我希望呼叫 GetDesktopWindow() 和 GetDC() 中定義的 winuser.h,但顯然 CWnd 類也有這些名稱完全相同、回傳型別不同的方法。
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdesktopwindow
https://docs.microsoft.com/en-us/cpp/mfc/reference/cwnd-class?view=msvc-160#getdesktopwindow
顯然,我的測驗代碼被放置在MFC對話框的OnButtonClicked函式中,GetDesktopWindow()和GetDC() 傾向于呼叫CWnd::GetDesktopWindow()和CWnd::GetDC() 方法,而不是預定的winuser.h函式。
我如何向編譯器說明,我想使用 uj5u.com熱心網友回復: 對函式使用范圍決議運算子:
標籤:CWnd方法,而不是winuser.h相同名稱的函式?
::GetDesktopWindow()。
::GetDC()。
