0

私はWTLの初心者です。

私が取り組んでいるプロジェクトのクラスの 1 つは、WTL GUI クラスです。そのメッセージ マップには次のレコードが含まれます。

COMMAND_CODE_HANDLER(0, OnMenuClick)

OnMenuClickWM_COMMANDメニューのクリック後に送信されるすべての を処理します。OnMenuClick他のすべてのメッセージを処理しながら、特定のメッセージに対して別のコマンド ハンドラーを設定する方法はありますか?

私はこれを試しました:

COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask);
COMMAND_CODE_HANDLER(0, OnMenuClick)

動作し、コマンドをOnStartTask処理ID_START_TASKしますが、宣言の順序に依存します。文字列の宣言順序を変更すると、コマンドがOnMenuClick処理されID_START_TASKます。

私はVS 2008 + WTL 8.0を使用しています

4

1 に答える 1

2

COMMAND_HANDLERから:

メッセージマップは、CommandHandlerが呼び出される前にbHandledをTRUEに設定します。CommandHandlerがメッセージを完全に処理しない場合は、bHandledをFALSEに設定して、メッセージをさらに処理する必要があることを示す必要があります。

WTLは、ハンドラーがメッセージを処理したことを通知しない限り、ハンドラーを呼び出します。ハンドラーがbHandledを明示的にFALSEに設定しない場合、WTLはメッセージを次のハンドラーに渡しません。

于 2012-02-18T04:07:32.837 に答える