0

ChangeDisplaySettingsEx関数を使用して、デスクトップを2台のモニターに拡大しようとしています。デスクトップの解像度を1920x1080の解像度ではなく3840x1080にしたい。私は次のことを試しました:

 POINTL posPrimary={0};
 posPrimary.x=0
 posPrimary.y=0;

 DEVMODE mode_primary = {0};
 mode_primary.dmSize = sizeof(mode_primary);
 mode_primary.dmFields = DM_POSITION;
 mode_primary.dmPosition = posPrimary;
 mode_primary.dmPelsWidth = 3840;
 mode_primary.dmPelsHeight = 1080;

LONG status = ChangeDisplaySettingsEx(
    nameofMonitor,
    &mode_primary,
    nullptr, // reserved
   CDS_SET_PRIMARY | CDS_UPDATEREGISTRY,
    nullptr // no video parameter
);
  if (DISP_CHANGE_SUCCESSFUL != status) {
    printf("ChangeDisplaySettingsEx returned %d", status);
    return -__LINE__;
}

SetDisplayConfig関数も試しました。

SetDisplayConfig(0,NULL,0,NULL,SDC_TOPOLOGY_CLONE|SDC_APPLY);

SDC_TOPOLOGY_CLONEはモニターのクローンを作成するだけですが、SDC_TOPOLOGY_EXTENDはデスクトップを2番目のディスプレイに拡張します。

任意の提案をいただければ幸いです。

4

2 に答える 2

0

もう 1 つのオプションは、SAPPHIRE Vid-2X や Matrox 2H2Go などのデバイスを使用することです。これらの EDID には 3840x1080 が含まれるため、SetDisplayConfig を使用して 1920x1080 をセットアップし、複製された diwplay を取得するか、3840x1080 をセットアップして、1 つのデスクトップを両方のディスプレイにまたがるようにします。このようにして、グラフィックカード/ベンダーに依存しません。これを機能させるには、DL-DVI または DP が必要であることに注意してください。

于 2013-05-01T00:38:37.590 に答える