• ベストアンサー

WinAPIにてWM_SIZE以外の方法で最大化を検出したい

環境:WinXP, VS2005 WinAPIでウィンドウプロシージャのWM_SIZEメッセージを使えば 最大化状態などウィンドウの状態を調べることができますが、 プロシージャを直接使わないでするような方法はあるのでしょうか?

noname#88356
noname#88356

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・状態を取得するには IsZoomed()、IsIconic() 関数を利用します。  これを利用すると『最大化』『最小化』『普通の状態』を区別できます。 if ( IsZoomed(hWnd) ){    :  最大化状態    : } else if ( IsIconic(hWnd) ){    :  最小化状態    : } else{    :  普通の状態    : } その他 ShowWindow() 関数などがあるので状態を変更したいときに使います。 // 最大化 ShowWindow( hWnd, SW_MAXIMIZE ); // 最小化 ShowWindow( hWnd, SW_MINIMIZE ); // 元に戻す ShowWindow( hWnd, SW_RESTORE ); // 最小化する CloseWindow( hWnd ); // 最小化から元に戻す OpenIcon( hWnd ); 等があります。

noname#88356
質問者

お礼

かなり詳しい解説ありがとうございます! 全部が全部今の私に必要なものでした。 これからも色々とご指導頂きにやってくるかもしれませんがよろしくお願いいたします m(_ _)m

関連するQ&A

  • WM_SIZEとWM_SIZINGの違い (Win32API)

    Windowsプログラミングで、画面のサイズを変更したときに送られてくるメッセージで、 WM_SIZEで処理するのとWM_SIZINGで処理するのとでは何が違うのでしょうか? WM_SIZEとWM_SIZINGの違いは何なのでしょうか? また、似たようなものでWM_MOVEとWM_MOVINGの違いも教えてもらいたいです。

  • WM_SIZEを発生させる方法

    コントロールを動的に初めて表示させた時にコントロールを ウインドウの大きさに合わせてリサイズさせようと思います。 SendMessageなどを使った2つのパラメータを指定する という方法ではなく、それ以外の方法でWM_SIZEを 発生させる方法を教えてください。 WM_SIZEにリサイズのソースが書いてあるので、ウインドウを 初めて表示させた時にもそれを利用しようとしているところです。

  • HWNDの取得について

    環境:WinXP, VS2005 例えばウィンドウプロシージャで LRESULT WINAPI WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) などとHWND型の変数hWndがありますよね。 このhWndをウィンドウプロシージャの外から取得することは可能でしょうか?

  • WM_MOUSEWHEELをフォーカスが別ウィンドウの時でも検出したい

    WM_MOUSEWHEELをフォーカスが別ウィンドウの時でも検出したい! 現在VC++2005でWINAPIベースでマウス操作を取得するプログラムを作っています。 ホイール操作やマウスの左右クリックを検出しようとしていますが、 しかしWinAPIではWM_MOUSEWHEELに限らずマウスのクリックとかホイール操作を検出するには フォーカスがそのプログラムのウィンドウにないとダメでした。 私のプログラムではフォーカスがそのウィンドウにない時でも取得したいのですが、 そのようなことを行うことは可能なのでしょうか?

  • 最大フォントサイズについて

    WinXp Word2002(Sp2)を使用しています。 表示フォントですが、最大が72ptになって いますが、それ以上のサイズを表示する方法は ないのでしょうか? よろしくお願いいたします。

  • ウィンドウの最大化サイズを変更する方法はありませんか。

    ウィンドウの最大化サイズを変更する方法はありませんか。 Windowsのタイトルバーをダブルクリックするとそのウィンドウは画面一杯のサイズになりますが、これを自分の希望したサイズになるようにすることはできないでしょうか。

  • IEを常に最大化する方法ありますか?

    こんばんは。 IEを開くと、最小化の状態で出ますが、 これを常に最大化の状態にしておく事はできますか? 一度、設定すれば、IEを開けば 常に最大化の状態になるようにです。 会社のパソコンがそうなのですが(XPです) いつ開いても、最大化です。 いろいろいじってみたんですが、出来ません。 設定できる方法があれば教えて頂きたいです。 環境:winXP

  • トップレベルウィンドウって何ですか?

    トップレベルウィンドウって何ですか? http://www.winapi-database.com/Message/WM/WM_SETTINGCHANGE.html

  • WM_KEYDOWNでPrtScを捕まえる方法??

    ごく普通のウィンドウプロシージャでキーの判別を行っています 下記のように条件(1)が WM_KEYUP の際には(2)、(3)ともに検出します LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_KEYUP: ............ (1) switch(wp) { case VK_RETURN: { break; } ..... (2) case VK_SNAPSHOT: { break; } ..... (3) default: { break; } } break; } return; ところが条件(1)を WM_KEYDOWN に変更すると(2)の Enter は検出しますが、(3)の PrtSc を検出してくれません 質問1 なぜ PrtSc を WM_KEYDOWN では検出しないのですか? 質問2 WM_KEYUP WM_KEYDOWN のいずれか一方にしか反応しないキーはまだありますか? 質問3 どのようにしたら PrtSc の WM_KEYDOWN を捕まえることが出来ますか? 自分でも調べてみましたが、どうも判然と致しません 宜しくご指導のほどお願い申し上げます

  • ウインドウサイズの最大化の持続

    インターネットエクスプローラでウインドウサイズが最大化の状態を持続させたいのですがどうすればいいのでしょうか? サイズを一回かえてしまったために改めてIEを開いた時に変えたサイズで表示されてしまいます。

専門家に質問してみよう