2013-06-18 13 views
10

私は現在少し混乱しています:WM_CLOSE::CloseWindowは何らかの形で "関連"しているのですか、まったく異なるものですか?CloseWindowとWM_CLOSEの関係は何ですか

Closing Windowsのドキュメントには、API機能CloseWindowはまったく記載されていません。 CloseWindowは本当に "MinimizeWindow"と呼ばれるのですか、何が欠けていますか?

+0

私はここで質問しました。「ダイアログ定数DS_RECURSEの値は何ですか?」 (http://stackoverflow.com/questions/15024372/what-is-the-value-of-a-dialog-constant-ds-recurse) - 私のトピックは閉鎖されました。 "CloseWindowとWM_CLOSEの関係は何ですか?"また閉じる必要があります: – kero

+0

@kero:何かを行うために文書化されていない定数の値を求めました。これは実用的なプログラミングの質問ではありません。この質問とはまったく反対です。それがあなたのものが閉鎖された理由です、そして、これはそうではありません。 – IInspectable

答えて

5

CloseWindowおよびWM_CLOSEは完全に無関係です。 CloseWindow関数の名前に誤りがあります。その逆関数、OpenWindowは、同様に悪いことに、ウィンドウを復元するという名前が付けられています。

私はこれらの名前を疑うが、おそらく私は当時、私たちは今を最小限に呼び出すを復元することをして推測しています1または2のWindowsバージョンに、確かに非常に長い道のりをさかのぼり、近いと呼ばれ、 オープン

ウィンドウを最小化または復元する通常の方法は、SW_MINIMIZEまたはSW_RESTOREShowWindowに渡すことです。

CloseWindowOpenWindowのすべてを忘れてしまうことをお勧めします。

6

CloseWindowは、まれにwinapiという名前の機能がありません。実際にウィンドウを閉じるわけではなく、ウィンドウを最小化するだけです。あなたが意味するものはDestroyWindow()でした。

WM_CLOSEは通常Altキー + F4を押すか、ウィンドウの閉じるボタンをクリックして、ユーザーに応じて、既定のウィンドウプロシージャによって生成されたメッセージです。基礎となるメッセージはWM_SYSCOMMAND,SC_CLOSEです。また、Window + Closeメニュー項目のように、コードでもを生成することができます。

ウィンドウプロシージャまたはMFCメッセージマップでWM_CLOSEを聞くことができます。ユーザーは、ウィンドウが閉じられると予想します。だから、通常DestroyWindow()と呼んでいる。例えば、メッセージボックスを表示し、データを保存するかどうかをユーザーに尋ねることができます。そして、彼がをクリックした場合、をクリックした場合、DestroyWindow()とは電話しません。

関連する問題