在MFC按钮点击函数中调用winuser.h的GetDesktopWindow而非CWnd同名方法
问题解决方法
要明确指定调用全局命名空间下的Win32 API,只需在函数名前添加**全局作用域解析符::**即可,修改后的代码如下:
HWND hDesktopWnd = ::GetDesktopWindow(); HDC hDesktopDC = ::GetDC(hDesktopWnd);
补充说明
::是C++的作用域解析运算符,当运算符左侧没有指定类名或命名空间名时,代表指向最外层的全局命名空间,刚好匹配winuser.h中定义的Win32 API的作用域。- 该写法是MFC开发中的通用规范,所有遇到MFC类成员方法和Win32全局API同名冲突的场景(例如
SendMessage、ReleaseDC、MoveWindow等),都可以通过加::前缀的方式解决。
内容的提问来源于stack exchange,提问作者Keve
相关产品推荐
相关产品推荐

