我在尝试检索 MONITORINFOEX
值时感到困惑。我试过:
typedef struct tagMONITORINFO {
DWORD cbSize;
RECT rcMonitor;
RECT rcWork;
DWORD dwFlags;
} MONITORINFO, *LPMONITORINFO;
typedef struct tagMONITORINFOEX {
CHAR szDevice[CCHDEVICENAME];
MONITORINFO tagMONITORINFO;
} MONITORINFOEX, *LPMONITORINFOEX;
MONITORINFOEX miea;
miea.tagMONITORINFO.cbSize = sizeof(MONITORINFOEX);
GetMonitorInfo(hMonitor, (&miea));
没有用。我将最后一行修改为:
GetMonitorInfo(hMonitor, ((LPMONITORINFO) &miea));
再次,没有运气。我收到有关 GetMonitorInfo
的第二个参数的编译器消息。
最佳答案
在您展示的代码中,您尝试自己定义作为 WinAPI 一部分的 struct
。不要那样做,没有必要。而是包括适当的头文件。
简单示例:
#include <cstdlib>
#include <iostream>
#include <windows.h>
int main()
{
// just a cheap way to get a handle
auto monitor{ MonitorFromWindow(GetConsoleWindow(), MONITOR_DEFAULTTONEAREST) };
MONITORINFOEXW miex{ sizeof miex }; // set cbSize member
if (!GetMonitorInfoW(monitor, &miex)) {
std::cerr << "GetMonitorInfo() failed :(\n\n";
return EXIT_FAILURE;
}
std::wcout << miex.szDevice << ": "
<< miex.rcMonitor.right - miex.rcMonitor.left << " x "
<< miex.rcMonitor.bottom - miex.rcMonitor.top << '\n';
}
示例输出:
\\.\DISPLAY1: 2560 x 1440
关于c++ - 在 Visual C++ 中访问 MONITORINFOEX 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281896/