为什么MonitorFromWindow丢失/未声明?(C++/WINAPI)

Joh*_*n P 1 c++ winapi scope

我正在尝试使用Windows API,但我遇到了很多问题.最新的是:我包括Windows.h,暂时包含Winuser.h,但是MonitorFromWindow(以及相关字段,如MONITOR_DEFAULTTONEAREST)丢失了.特别,

...'MONITOR_DEFAULTTONEAREST' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

...'MonitorFromWindow' was not declared in this scope.
Run Code Online (Sandbox Code Playgroud)

其他方法显示得很好,比如LoadImage和CreateWindow.我缺少一些包容吗?我不认为这是我调用方法的方式,甚至是我包含头文件的方式,但如果你问,我仍然可以发布我的代码.没有多少.

编辑:当我检查范围中定义的内容时,最近的方法是ModifyWorldTransform(...)和MonikerCommonPrefixWith(...); 最近的字段都以MONITOR_INFO开头,MONITOR_ENUMPROC除外.没有MONITOR_DEFAULTTONEST/NULL /等.

编辑2:

#define UNICODE
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#include <winuser.h>
Run Code Online (Sandbox Code Playgroud)

...

HMONITOR monitor = NULL;
HWND CreateFullScreenWindow(HWND hwnd){
    if(monitor==NULL){
        monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
    }
    return hwnd;
}
Run Code Online (Sandbox Code Playgroud)

Che*_*Alf 5

#define UNICODE
#define _WIN32_WINNT 0x0500     // Windows 2000
#include <windows.h>

auto main() -> int
{
    (void) MonitorFromWindow;
}
Run Code Online (Sandbox Code Playgroud)

如果工具链支持Windows 2000或更早版本,这只是一个问题,显然MinGW g ++编译器就是这样.


MinGW g ++ 4.7.2的相关标题部分<winuser.h>:

#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
WINUSERAPI HMONITOR WINAPI MonitorFromPoint(POINT,DWORD);
WINUSERAPI HMONITOR WINAPI MonitorFromRect(LPCRECT,DWORD);
WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND,DWORD);
#endif
Run Code Online (Sandbox Code Playgroud)