【问题标题】:I included <winuser.h>, but compiler throws "was not declared" at MonitorFromWindow我包含 <winuser.h>,但编译器在 MonitorFromWindow 抛出“未声明”
【发布时间】:2020-02-02 18:05:29
【问题描述】:

已经有一个post关于它,但它并没有解决错误。我尝试注释掉 winuser.h 上的 if,但没有效果。

// Header
    #include <windows.h>
    #include <winuser.h>

// Cpp
 monitorA = MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY); // Errors
    GetMonitorInfo(monitorA, &monitorAInfo); // No error

错误:“MonitorFromWindow”未在此范围内声明

错误:“MONITOR_DEFAULTTOPRIMARY”未在此范围内声明

另外,我正在使用带有 gcc 编译器的 Code::blocks。

【问题讨论】:

  • 可能是因为 WINVER &lt; 0x0500 在你的情况下
  • 我把winuser上的if语句注释掉了,效果一样,不起作用。
  • 你不需要编辑窗口标题,但定义WINVER(但是你有非常非常旧的窗口。h 或不是来自 sdk)

标签: c++ winapi


【解决方案1】:

假设您的&lt;winuser.h&gt; 副本实际上支持MonitorFromWindow(),那么请确保您将WINVER 设置为0x0500 或更高以启用MonitorFromWindow()。有关详细信息,请参阅以下内容:

Using the Windows Headers: Setting WINVER or _WIN32_WINNT

Update WINVER and _WIN32_WINNT

What's the difference between WINVER, _WIN32_WINNT, _WIN32_WINDOWS, and _WIN32_IE?

【讨论】:

  • 我以前试过这个,但没有用,但现在可以了。我想我没有将#define 放在#include 之前。谢谢。
  • 一开始你不适合#include &lt;winuser.h&gt;documentation 对此非常清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多