異なるシステム上の複数の監視アプリケーション

複数のモニターをサポートするシステムとないシステムで複数のモニターウェア アプリケーションを動作させるには、アプリケーションを Multimon.h にリンクします。 また、1 つの C ファイルにCOMPILE_MULTIMON_STUBSを定義する必要もあります。 システムが複数のモニターをサポートしていない場合、 GetSystemMetrics から既定値が返され、複数のモニター関数は 1 つのディスプレイしかないかのように動作します。 複数のモニター システムでは、アプリケーションは正常に動作します。

負の座標はマルチモニター システムで簡単に発生する可能性があるため、GET_X_LPARAMマクロと GET_Y_LPARAM マクロを使用して、lParam にパックされた座標を取得 する 必要があります。

ウィンドウを非表示にするには、負の座標やSM_CXSCREENより大きい座標やSM_CYSCREENを使用しないでください。 これらの制限を使用して非表示にするWindowsは、別のモニターに表示されることがあります。 同様に、ウィンドウがプライマリ モニターにスナップする原因となる可能性があるため、これらの制限を使用してウィンドウを表示し続けないでください。 これらの問題については、既存のアプリケーションを再検討することをお勧めします。 ただし、プライマリ モニターでアプリケーションを実行するか、プライマリ モニターを仮想画面の左上隅に保持することで、既存のアプリケーションの問題を最小限に抑えることができます。

SM_CXMAXTRACKとSM_CYMAXTRACKは、1 台のモニターだけでなく、デスクトップ用に定義されていることに注意してください。 これらの制限を使用するWindowsは、再定義する必要がある場合があります。

親ウィンドウまたは関連ウィンドウが子ウィンドウと同じモニター上にない可能性があります。 ウィンドウのモニターを見つけるには、アプリケーションで MonitorFromWindow 関数を使用する必要があります。

すべてのモニターにスクリーン セーバーを表示するには、最新バージョンの Scrnsave.lib にリンクします。 それ以外の場合、スクリーン セーバーはプライマリ モニターにのみ表示され、他のモニターは変更されません。 最新の Scrnsave.lib にリンクされているスクリーン セーバーは、単一のモニター システムと複数のモニター システムの両方で動作します。 モニターごとに異なるスクリーン セーバーを使用するには、複数のモニター機能を使用して各モニターを個別に処理します。

タブレットなどの絶対座標でシステムに座標を配信する入力デバイスでは、カーソル入力がプライマリ モニターに制限されます。 モニター間Tablet PC入力を切り替えるには、OEM の手順を参照してください。

絶対座標で送信されたマウス入力を仮想画面全体にマップするには、MOUSEEVENTF_ABSOLUTEとMOUSEEVENTF_VIRTUALDESKTOPで INPUT 構造体を使用します。

BitBlt 関数は、複数のモニター システムに適しています。 ただし、ソースと宛先のデバイス コンテキストが異なる場合、 MaskBltPlgBltStretchBltTransparentBlt 関数は失敗します。