2016-10-25 5 views
1

私はその位置を覚えておきたいC++ mfcアプリケーションを作成しています。ウィンドウを閉じる前にウィンドウが開いているはずです。ウィンドウを開くと、ファイルからデータを読み込んだり、ウィンドウが閉じられたデスクトップ、左上点の座標、ウィンドウサイズを復元して復元します。モニターアプリケーションの覚え書きは?

座標とサイズに問題はありませんが、私はウィンドウを持っているディスプレイを追跡する最善の方法は何ですか?

WinAPIのモニタ番号とモニタ番号でモニタを取得する方法がないため、ディスプレイの数が機能しません。

msnnによると、HMONITOR値が適合する可能性があります。「物理ディスプレイは、デスクトップの一部である限り、同じHMONITORを持っています。 (https://msdn.microsoft.com/en-us/library/dd144968(v=vs.85).aspx)。しかし、私がPCを再起動した場合、私が保存したHMONITORの価値は変わらないでしょうか?

+0

ハンドル( 'HMONITOR'の' H 'はハンドルを表します)はプロセス固有のものです。プログラムを2回連続して実行する場合は、それぞれ独自のハンドルを持つ2つの異なるプロセスを使用します。そうではありません。あなたは 'HMONITOR'変数を保存して別のプロセスにロードすることはできません。あなたは、 'HMONITOR'が表す実際の画面を取得する方法を理解する必要があります。 –

+0

座標は、モニタを識別します –

+0

@Someprogrammerdude、情報ありがとう、それを知らなかった:) – deserg

答えて

3

ウィンドウのサイズと場所を取得するためにアプリケーションを終了するときにGetWindowPlacement()に電話をかけることができます(最大化、復元などを含む)。この情報をレジストリ、アプリケーションデータなどのどこかに保存し、次回起動時にこの情報を読んでからSetWindowPlacement()に電話すると、ウィンドウは以前の場所に復元されます。

さらに、ウィンドウの新しい場所が表示されていることを確認し、再度移動することがないように移動しないようにする必要があります。これは、ラップトップで外部ディスプレイを使用していない場合など、モニタの数が異なる場合に発生する可能性があります。

+0

ありがとう、アンディ、あなたは助けに答えました! – deserg

+0

...間違った方法でゲット/セットしていることを除いて:) –

+0

@Roger oops、you're right!私はそれを修正します。それを指摘してくれてありがとう。 – Andy

関連する問題