为什么MonitorFromWindow缺少/不申报? (C ++ / WINAPI)(Why

2019-10-19 04:00发布

我尝试在Windows API,我已经碰到了很多问题。 最近是这样的:我包括WINDOWS.H,暂时Winuser.h中,尚MonitorFromWindow(和相关的领域,如MONITOR_DEFAULTTONEAREST)失踪。 特别,

...'MONITOR_DEFAULTTONEAREST' was not declared in this scope

...'MonitorFromWindow' was not declared in this scope.

其他方法显示出来就好了,喜欢的LoadImage和CreateWindow的。 有一些包容我失踪? 我不认为这是我所调用的方法,甚至包括我的头文件的方式的方式,但如果你问,我仍然可以张贴我的代码。 没有太多的它。

编辑:当我检查什么是在范围界定,最近的方法是ModifyWorldTransform(...)和MonikerCommonPrefixWith(...); 最近领域所有MONITOR_INFO开始,除了MONITOR_ENUMPROC。 没有MONITOR_DEFAULTTONEAREST /空/等。

编辑2:

#define UNICODE
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#include <winuser.h>

...

HMONITOR monitor = NULL;
HWND CreateFullScreenWindow(HWND hwnd){
    if(monitor==NULL){
        monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
    }
    return hwnd;
}

Answer 1:

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

auto main() -> int
{
    (void) MonitorFromWindow;
}

这只是一个问题,如果该工具链支持Windows 2000或更早,因为显然MinGW的G ++编译器。


从MinGW的克++相关的头部分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


Answer 2:

该文件说,

Minimum supported client
   Windows 2000 Professional [desktop apps only]

我怀疑你需要设置WINVER0x500或更大。



文章来源: Why is MonitorFromWindow missing/not declared? (C++/WINAPI)
标签: c++ winapi scope