1

私はMFCC++アプリケーションに取り組んでいます。SystemMenuプロパティがに設定されているダイアログで作業していたFALSEため、最大化する機能がありません。タイトルバーのダブルクリックメッセージを処理したい。どうやってやるの?

編集:

今回は皆さんにわかりやすいと思います。システムメニュー(およびシステムボタンまたはアイコン)がないダイアログがあります。ユーザーがそのダイアログのタイトルバーをダブルクリックしたときに、プログラムに関数を呼び出させたいx();

4

2 に答える 2

5

技術的には、WM_NCLBUTTONDBLCLKを処理し、ウィンドウのキャプション領域でダブルクリックが発生したかどうかを確認する必要があります。おそらくWM_NCHITTESTを送信し、戻り値が であることをテストしますHTCAPTION

(更新: JohnCz が正当に指摘しているように、送信WM_NCHITTESTは実際には必要ありません。WM_NCLBUTTONDBLCLKその結果は既に に含まれているためですwParam。)

次に、WM_SYSCOMMANDをウィンドウSC_MAXIMIZEに送信wParamして最大化するだけです。

ただし、実際には、ダイアログ ボックスがサイズ変更を処理し、それに応じてコントロールをレイアウトする準備ができていない場合、あまり効果がありません。前回チェックしたとき、この機能は MFC の標準ではありませんでした。

于 2013-01-07T20:17:52.447 に答える
1

ここにはある種の混乱があると思います:

フレデリック・ハミディ

正解です。WM_NCLBUTTONDBLCLK メッセージの処理は正しい方法ですが、WM_NCLBUTTONDBLCLK メッセージは、MFC フレームワークが WM_NCLBUTTONDBLCLK ハンドラーで変換するヒット情報を提供するため、HitTest を呼び出す必要はありません。

ビクター、

WM_NCLBUTTONDBLCLK メッセージを処理して達成しようとしているのは、正確には何ですか?

あなたが私たちにそれを明確にしたら、あなたの要件を満たす他の方法があるかもしれません. システム メニューがないという事実は、アプリが非クライアント エリア メッセージを受信することを妨げません。

于 2013-01-08T23:29:32.740 に答える