
複数のモニタを接続したディスプレイで、
フォームを表示させたいのですが、
フォームを閉じた際に、どの位置で表示されていたかを保存しておき、
それを元に、再度フォームを開くときには閉じられた位置に表示をさせたいと思います。
フォームのトップ、レフトを保存しておいた場合、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も見ています
-
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
パソコンの画面に合わせてユーザーフォームを表示させたい
Visual Basic(VBA)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
5
Access VBAにおいて画像を任意のディスプレイに表示させる方法
Access(アクセス)
-
6
【マクロ】フォルダを2つのモニターの定位置に並べたい
Excel(エクセル)
-
7
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
モニタのサイズをVBAで取得することは可能ですか?
その他(Microsoft Office)
-
10
拡張ディスプレイの関連でエクセルの表示がおかしくなりました
モニター・ディスプレイ
-
11
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
クリックイベントなのに、2回ク...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
Excelにて、ユーザーフォームで...
-
ユーザーフォーム上に現在日時...
-
エクセルVBA(マクロ-コンボボッ...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのラベルに時...
-
Forms( )の使い方を教えて下さい。
-
オブジェクト(コントロール)...
-
Excelのユーザーフォームのテキ...
-
VBAのテキストフォームの折り返...
-
URL名を取得するには?
-
VB.NET MDI親フォームのスクロ...
-
アクセス2013 フォームが...
-
VBAでユーザーフォームを再表示...
-
ブックをCloseまたはQuitで閉じ...
-
フォームウィンドウを最前面に...
-
フォームを最背面に設定したい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
クリックイベントなのに、2回ク...
-
ユーザーフォーム上に現在日時...
-
テキストボックス入力データの...
-
VBAのテキストフォームの折り返...
-
ACCESSのフォーム、開くんです...
-
Hideについて(.NET)
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
モーダルフォームとモードレス...
-
EXCEL VBA ユーザーフォームの...
-
フォームのテキストボックスな...
-
コントロールの存在確認
-
パソコンの画面に合わせてユー...
-
フォームウィンドウを最前面に...
-
Accessで、一つのフォーム画面...
おすすめ情報