我在谷歌搜索了所有,但沒有找到答案,所以如果有人知道這將是非常感謝!如何識別內屏分辨率啓用的多顯示器?
我想使用命令行或一些WinApi來檢查多顯示器的狀態。 例如:如果我設置:「擴展屏幕」或「重複屏幕」,我希望能夠驗證它。 只是不知道從哪裏開始。
非常感謝
我在谷歌搜索了所有,但沒有找到答案,所以如果有人知道這將是非常感謝!如何識別內屏分辨率啓用的多顯示器?
我想使用命令行或一些WinApi來檢查多顯示器的狀態。 例如:如果我設置:「擴展屏幕」或「重複屏幕」,我希望能夠驗證它。 只是不知道從哪裏開始。
非常感謝
我將開始與WinAPI的EnumDisplayMonitors功能:http://msdn.microsoft.com/en-us/library/dd162610%28VS.85%29.aspx
BOOL EnumDisplayMonitors(
_In_ HDC hdc,
_In_ LPCRECT lprcClip,
_In_ MONITORENUMPROC lpfnEnum,
_In_ LPARAM dwData
);
你需要調用這個函數設置第2個參數爲NULL這樣的:
EnumDisplayMonitors(NULL, NULL, MyPaintEnumProc, 0);
//Enumerates all display monitors.
//The callback function receives a NULL HDC.
現在你有你的MonitorEnumProc回調函數:http://msdn.microsoft.com/en-us/library/dd145061%28v=vs.85%29.aspx
BOOL CALLBACK MonitorEnumProc(
_In_ HMONITOR hMonitor,
_In_ HDC hdcMonitor,
_In_ LPRECT lprcMonitor,
_In_ LPARAM dwData
);
您wiil得到填補lprcMonitor回:
指向一個RECT結構。 如果hdcMonitor不爲NULL,則此矩形是由hdcMonitor和顯示監視器矩形標識的設備上下文的剪切區域的交點。設備上下文座標爲 。基於此值,所有的顯示器,你可以決定你是否有一個擴展模式(rects是不同的)或重複
If hdcMonitor is NULL, this rectangle is the display monitor rectangle. The rectangle coordinates are virtual-screen coordinates.
(他們是平等的)。
HTH - 祝您好運!
謝謝!只是一個小q,什麼是MyPaintEnumProc? VS不認識它。它應該是什麼類型?以及它如何連接到CallBack功能? (這是我的第一個C++程序對不起「初學者」的問題) – user1386966
MyPaintEnumProc是指向你的回調函數(一種MonitorEnumProc)的指針。在調用EnumDisplayMonitors之前,您需要聲明它:BOOL CALLBACK MyPaintEnumProc( HMONITOR hMonitor,HDC hdcMonitor,LPRECT lprcMonitor,LPARAM dwData ){/ *做些什麼* /} – duDE
謝謝!我現在試試 – user1386966
一個很好的問題! +1 – duDE