0

我试图让显示器检查是否关闭。

在检查之前GetDevicePowerState,我试图以这种方式检索监视器:

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <winuser.h>
using namespace std;

int main(int argc, char *argv[])
{
    POINT* p = new POINT;
    p->x=0;
    p->y=0;
    HMONITOR* monitor = MonitorFromPoint(p,DWORD.MONITOR_DEFAULTTOPRIMARY);
    system("PAUSE");
    return EXIT_SUCCESS;
}

但它不断地给我:

main.cpp `MonitorFromPoint' undeclared (first use this function) 

我哪里出错了?

4

1 回答 1

7

您的代码有许多问题,但它们都不应该导致您看到的错误消息。这是带有一些更正的代码,并添加了更多内容以显示至少某种测试结果:

#include <iostream>
#include <windows.h>

int main(int argc, char *argv[])
{
    POINT p{ 0, 0 };
    HMONITOR monitor = MonitorFromPoint(p, MONITOR_DEFAULTTONULL);

    if (monitor == NULL) 
        std::cout << "No monitor found for point (0, 0)\n";
    else {
        MONITORINFOEX info;
        info.cbSize = sizeof(info);

        GetMonitorInfo(monitor, &info);
        std::cout << "Monitor: " << info.szDevice << "\n";
    }
}

我已经使用 VC++ 2013 和 MinGW 4.8.1 对此进行了测试,在这两种情况下,它的编译和运行都没有任何问题,产生:

Monitor: \\.\DISPLAY1

...作为两种情况下的输出。

于 2013-11-08T16:34:35.590 回答