我想從Windows API獲取監視數據。 GetSystemMetrics()
命令以像素爲單位返回錯誤的寬度。 據微軟的網站上,這是因爲我需要SetProcessDPIAware()
Windows API MONITORINFO結構
這意味着我最好能夠創建一個application manifest我不明白。
在尋找同等級別的替代品時,我找到了multiple display monitors functions and structs。我必須通過HMONITOR
訪問我想要的矩形結構,但得到HMONITOR
是我遇到問題的地方。
MonitorFromWindow(hwnd,MONITOR_DEFAULTTOPRIMARY)
這個命令是出於scope-奇怪,因爲GetMonitorInfo()
[我需要HMONITOR
用於]不會引起任何問題。我已經有windows.h
和windowsx.h
包括在內。我錯過了一個圖書館或者是什麼問題?
在另外一張紙條上,看到它後,很明顯,使顯示器使用者可以調整也可能很好。 SM_CMONITORS
應該返回一個計數,但我想知道如何將這些數字轉換爲我需要獲取監視器特定信息的HMONITOR
數據。
::編輯::
我把編輯在這裏,因爲「評論」功能不爲我提供足夠的空間來放置,其中要求
另外的代碼片段,我使用GNU GCC與MinGW
#include <iostream>//using these libraries
#include <Windowsx.h>
#include <windows.h>
using namespace std;
int main()
{
//should print screen width in pixels
LPMONITORINFO target;
//create a monitor info struct to store the data to
HMONITOR Hmon = MonitorFromWindow(hwnd,MONITOR_DEFAULTTOPRIMARY);
//create a handle to the main monitor
//(should start at top left of screen with (0,0) as apposed to other monitors i believe)
//if i could gather aditional info on what monitors are available that might be useful
GetMonitorInfo(Hmon, target);
//Get the necessary data and store it to target
cout << "bottom of selected monitor in pixels: " << target->rcMonitor.bottom
<< "Top of the selected monitor" << target->rcMonitor.top
<< "right extreme of selected monitor" << target->rcMonitor.right
<< "left extreme of selected monitor" << target->rcMonitor.left;
return 0;
}
您能否給出一個簡短的完整代碼示例來重現您的問題? – chris
您正在嘗試使用哪種編譯器版本? – Maximus
是的;謝謝。我在問題中添加了附加信息,因爲它不適合分配的評論大小。 – user1964975