大変、お世話になっています。
以下について、ご指導をよろしくお願いします。
●Windows XP VC++6 MFC ダイアログベース
●不明点
デュアルディスプレイ(2画面)のマシンで、ダイアログの表示を
指定(セカンダリ)することは、可能でしょうか。
m(__)m
画面(プライマリ)サイズを取得、ダイアログ位置を指定するところまで
できましたが、画面(セカンダリ)のサイズを取得がわかりません。
宜しくお願い致します。
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//追記 S 〜
RECT rec;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rec, 0);
SetWindowPos(&wndTop, rec.right, 0, 200, 200, SWP_SHOWWINDOW);
//〜追記 E
}
試したことはありませんが画面ごとにサイズを取りたいなら
EnumDisplayMonitorsからGetMonitorInfoでできそうな感じです。
マルチディスプレイの各種情報取得では・・・
GetSystemMetrics(SM_CMONITORS) で、ディスプレイ台数取得
GetSystemMetrics(SM_XVIRTUALSCREEN)
GetSystemMetrics(SM_YVIRTUALSCREEN)
GetSystemMetrics(SM_CXVIRTUALSCREEN)
GetSystemMetrics(SM_CYVIRTUALSCREEN) で、仮想画面全体のサイズ取得
MonitorFromPoint( p , MONITOR_DEFAULTTONEARESET) で、領域に対する
ディスプレイのハンドル取得・・・
GetMonitorInfo( hMon , &mInfo ) で、ディスプレイハンドルからサイズ
情報を取得。
と言う流れになります。
お試し下さい。
※ 各種APIの詳細は、ちゃんと調べて下さい。
ちゃんと書いてありますヨ!
以上。
subaruさん、ありがとうございました。
解決しました。
BOOL CTestDlg::OnInitDialog()
{
//Append Start
long x, y;
HMONITOR MonitorHandle;
MONITORINFO MonitorInfo;
x = 1280;
y = 0;
POINT Point = {x, y};
MonitorHandle = ::MonitorFromPoint(Point, MONITOR_DEFAULTTOPRIMARY);
MonitorInfo.cbSize = sizeof(MonitorInfo);
::GetMonitorInfo(MonitorHandle, &MonitorInfo);
//Append End
}
オショウさん、ご指導ありがとうございます。
勉強させていただきます。
ツイート | ![]() |