不同系統上的多個監視應用程式
若要讓多個 monitoraware 應用程式在具有和沒有多個監視器支援的系統上運作,請將您的應用程式與 Multimon.h 連結。 您也必須在一個 C 檔案中定義COMPILE_MULTIMON_STUBS。 如果系統不支援多個監視器,這會從 GetSystemMetrics 傳回預設值,而多個監視器函式的作用就如同只有一個顯示器一樣。 在多個監視系統上,您的應用程式正常運作。
因為負座標很容易在多監視系統中發生,所以您應該使用 GET_X_LPARAM 和 GET_Y_LPARAM 宏來擷取包裝在 lParam 中的座標。
請勿使用大於SM_CXSCREEN和SM_CYSCREEN的負座標或座標來隱藏視窗。 使用這些限制隱藏的Windows可能會出現在另一個監視器上。 同樣地,請勿使用這些限制讓視窗保持可見,因為這可能會導致視窗貼齊主要監視器。 最好針對這些問題重新建立現有的應用程式。 不過,您可以在主要監視器上執行應用程式,或將主要監視器保留在虛擬畫面左上角,將現有應用程式中的問題降到最低。
請注意,SM_CXMAXTRACK和SM_CYMAXTRACK是針對桌面定義,而不只是一個監視器。 Windows使用這些限制可能需要重新定義。
父視窗或相關視窗可能不在與子視窗相同的監視器上。 若要找出視窗的監視器,應用程式應該使用 MonitorFromWindow 函式。
若要在所有監視器上顯示幕幕保護,請連結至最新版的 Scrnsave.lib。 否則,螢幕保護裝置程式可能只會出現在主要監視器上,並讓其他監視器保持不變。 連結至最新 Scrnsave.lib 的螢幕保護裝置程式可同時在單一和多個監視器系統上運作。 若要在每個監視器上擁有不同的螢幕保護裝置,請使用多個監視器函式個別處理每個監視器。
以絕對座標將座標傳遞給系統的輸入裝置,例如平板電腦,其游標輸入僅限於主要監視器。 若要在監視器之間切換平板電腦輸入,請參閱 OEM 的指示。
若要將以絕對座標傳送的滑鼠輸入對應到整個虛擬畫面,請使用具有MOUSEEVENTF_ABSOLUTE和MOUSEEVENTF_VIRTUALDESKTOP的 INPUT 結構。
BitBlt函式適用于多個監視系統。 不過,如果來源和目的地裝置內容不同,MaskBlt、PlgBlt、StretchBlt 和 TransparentBlt函式將會失敗。