2009-08-31 20 views
0

Windowsでは、フォアグラウンドウィンドウ(GetForegroundWindow)である最小化されたウィンドウがあります。ウィンドウを非表示にして、再び表示されるようにしたい。ウィンドウを元の状態に戻すにはどうしたらいいですか?すなわち、ウィンドウが最小化される前に「復元」されていれば、復元する必要があります。最小化する前に最大化した場合は、再度最大化し、特に復元しないかしてください。ウィンドウを元の状態に戻す方法(復元または最大化)?

私は一緒に設定することができるフラグでなければならないのみ{最小復元、最大}のうちウィンドウの現在の状態を決定するが、理論的には、最小及び最大化することができると思われます。ユーザーがそれをクリックすると

どのようにエクスプローラのタスクバーはウィンドウを表示するためにどのような状態に知っているのですか?

+0

ここにプログラムを書いていますか?もしそうなら、どの言語を使用していますか? – ChrisF

+0

申し訳ありませんが、C#アプリケーションを作成していますが、既にWin APIへのP/Invoke呼び出しが含まれているため、管理されたWinAPIソリューションでうまくいきます。私もCに精通しているので、私もそれを使うことができます。 – ygoe

答えて

1

あなたがCのようなものを使用する場合は、あなたがのShowWindow関数に上見ることができます:

ShowWindow(hWnd, SW_RESTORE) 

SW_RESTORE
起動し、 ウィンドウが表示されます。ウィンドウが最小化された場合、または が最大化された場合、システムは元のサイズと位置を に復元します。 アプリケーションでは、最小化されたウィンドウを復元するときにこのフラグ を指定する必要があります。

+0

"ウィンドウが(...)最大化されると、システムは元のサイズと位置に復元します。まさに私が欲しくないものです。ウィンドウが最小化され、前に最大化された場合、ウィンドウは最大化され、復元されません。 – ygoe

+0

これは非常に奇妙です - 私はそれを試して、それは良い作品です。ウィンドウが最小化され、前に最大化された場合、ウィンドウは再び最大化されます。私はちょうどバグがどこにあるか分かりません - 実装や文書で: –

+0

真。バグはドキュメントにあります。実際には期待どおりに動作します(文書化されていない場合)。通常(Microsoftはそれを「復元」と呼んでいます)のウィンドウで最小化し、再度復元します。最大化されたウィンドウは最小化され、再び最大化されます。ファイン。 :-) – ygoe

0

(私はあなたが例えば使用している言語を知らない)技術取得がなければ、プログラムは、現在の通常のサイズ、現在の状態と以前の状態を保存する必要があります。最小化から復元する際

そしてそれは以前の状態とサイズを確認することができます。

WPFで現在のサイズと状態がメインウィンドウのTopLeftHeightWidth及びWindowStateプロパティに格納されます。ロケーションとサイズのコピーはRestoreBounds構造体に保持され、これは例えばMaximizedからウィンドウを復元するときに基本クラスによって使用されます(そうする必要はありません)。

+0

あなたは、ウィンドウが最小化される前に、どのWindowStateを持っていたのか自分自身を覚えなければならないということですか?私がそれを知っていれば、私は以前の正しい状態に簡単に戻ることができます。私はOSが私のためにそれをやっていたと期待していた... – ygoe

+0

@LonelyPixel - いいえ、アプリはあなたのためにそれを覚えています。私はWPFが持つさまざまな構造を指摘していました。 – ChrisF

関連する問題