![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
複数のモニタを接続したディスプレイで、
フォームを表示させたいのですが、
フォームを閉じた際に、どの位置で表示されていたかを保存しておき、
それを元に、再度フォームを開くときには閉じられた位置に表示をさせたいと思います。
フォームのトップ、レフトを保存しておいた場合、2つめのディスプレイで
表示されていた場合も、一つ目のディスプレイに再度開いたときに表示されてしまいます。
閉じられたときには2台接続されていて、2台目に表示があったとしても、
次開かれるときに2台目がない場合表示されていないように見えたり、
GetSystemMetrics()関数を使用して仮想ディスプレイの全サイズを
取得しても、1台目と2台目のウィンドウサイズが違った場合、
座標をうまくずらすことができなかったりしています。
何とかなりませんでしょうか?
環境はC++Builder6です。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
TForm::Top, Leftなどはモニターに表示されている領域内での位置です。
フォームが現在表示されているモニターに関するの情報はTForm::Monitorで取得できます。
TMonitor::Top, Leftなどで仮想デスクトップ内でのモニターの位置が取得できますから、それとTForm::Top, Leftなどを組み合わせればフォームの仮想デスクトップ内での絶対位置がわかります。
また、フォームを表示するときにも、TForm::Monitorで表示されるモニターを指定することが可能です。
マルチモニター環境下のモニター全体の情報はTScreen*型のグローバル変数であるScreenを介してTScreen::Monitorsを参照すれば得られます。
前回アプリケーション起動時とモニター構成が変っているときは、TScreen::MonitorFromRect(), MonitorFromPoint()あたりを使えば何とかなりそうです。
あとはヘルプとにらめっこしてがんばってください。
うちにはマルチモニター環境がないので私自身は試したことがありません(苦笑。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
【マクロ】フォルダを2つのモニターの定位置に並べたい
Excel(エクセル)
-
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
-
4
デュアルディスプレイ 起動画面を指定するには?
モニター・ディスプレイ
-
5
Access VBAにおいて画像を任意のディスプレイに表示させる方法
Access(アクセス)
-
6
DoEventsがやはり分からない
Visual Basic(VBA)
-
7
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
8
Excel VBAでデュアルディスプレイを使用するメリットについて
Excel(エクセル)
-
9
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
10
C# マルチディスプレイにて、フォームの初期位置をCenterScre
その他(プログラミング・Web制作)
-
11
フォームの位置を取得したい
Visual Basic(VBA)
-
12
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
13
UserForm
Visual Basic(VBA)
-
14
GROUP BYを行った後に結合したい。
Oracle
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
17
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
18
VBA(エクセル)のユーザーフォームの固定
Visual Basic(VBA)
-
19
マルチディスプレイを使用していますがexcelマクロが使えない
Visual Basic(VBA)
-
20
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでユーザーフォームを再表示...
-
ExcelVBAのユーザーフォームの...
-
タスクバーにフォーム名を表示...
-
エクセルVBA フォーム上でOnkey...
-
【VBAユーザーフォームで閉じる...
-
エクセルVBAのフォームを最...
-
指定の動作中ユーザーフォーム...
-
フォームのアクティブと非アク...
-
ユーザーフォームのラベルに時...
-
EXCEL VBA ユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
ふと疑問に思ったこと。
-
Excelのユーザーフォームのテキ...
-
ユーザーフォームのテキストボ...
-
最小化最大化のボタンの表示を...
-
ExcelVBAのユーザーフォームでe...
-
Access フォームが前面に表示さ...
-
モーダルフォームとモードレス...
-
MSGBOXのフォント大きさ変更
-
フォームの二重起動の阻止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
クリックイベントなのに、2回ク...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
MSGBOXのフォント大きさ変更
-
Microsoft Formsの「個人情報や...
-
VBA(エクセル)のユーザー...
-
'ユーザーフォーム右上隅の[×...
-
【VBAユーザーフォームで閉じる...
-
Excelにて、ユーザーフォームで...
-
コントロールの存在確認
-
Accessで、一つのフォーム画面...
-
ユーザーフォーム上に現在日時...
-
ACCESSのフォーム、開くんです...
-
ユーザーフォームのラベルに時...
おすすめ情報