CToolBarCtrl: カスタマイズ通知の処理

Windows ツール バー コモン コントロールは、挿入、削除、またはツールバーのボタンを再配置すること、システム定義のカスタム ダイアログ ボックスなど組み込みのカスタマイズ機能を備えています。アプリケーションのカスタマイズ機能が提供されをユーザーがツールバーをカスタマイズすることができますの範囲を制御するかどうかを決定します。

これらのカスタマイズ機能をユーザーにツールバーにCCS_ADJUSTABLEスタイルを与えることによって利用できます。カスタマイズ機能ボタンを新しい位置にドラッグしたり、ボタンをツールバーからドラッグして削除すること。さらに、ユーザーを追加、削除、およびツールバーのボタンを再配置するには、ユーザーが [ツールバーのカスタマイズ] ダイアログ ボックスを表示するツールバーをダブルクリックできます。アプリケーションは、 Customizeメンバー関数を使用してダイアログ ボックスを表示することができます。

ツール バー コントロールを親ウィンドウのカスタマイズ プロセスの各手順で通知メッセージを送信します。ユーザー SHIFT キー押しボタンのドラッグを開始する場合、ツールバーは自動的にドラッグ操作を処理します。ツールバー、ボタンを削除することがあるかどうかを確認するのには、親ウィンドウにTBN_QUERYDELETE通知メッセージを送信します。親ウィンドウがFALSEを返す場合は、ドラッグ操作を終了します。それ以外の場合、ツールバー マウス入力をキャプチャし、ユーザーがマウス ボタンを解放するまで待機。

マウス ボタンを離すと、ツール バー コントロールは、マウス カーソルの位置を決定します。カーソルがツールバーの外側にある場合、ボタンは削除されます。カーソルが別のツールバー上の場合は、ツールバーはTBN_QUERYINSERT通知メッセージを特定のボタンの左側にボタンを挿入できるかどうを確認するのには、親ウィンドウを送信します。親ウィンドウがTRUEを返す場合、ボタンが挿入されます。それ以外の場合、これではありません。ツールバーをドラッグ操作の終了を通知するには、 TBN_TOOLBARCHANGE通知メッセージを送信します。

ユーザーは、SHIFT キーを押しせずドラッグ操作の開始には、ツール バー コントロール、オーナー ウィンドウにTBN_BEGINDRAG通知メッセージを送信します。独自のボタン ドラッグ コードを実装するアプリケーションこのメッセージは、シグナルとしてを使用して、ドラッグ操作を開始できます。ツールバーをドラッグ操作の終了を通知するには、 TBN_ENDDRAG通知メッセージを送信します。

[ツールバーのカスタマイズ] ダイアログ ボックスを使用して、ツールバー、ユーザーをカスタマイズするとき、ツール バー コントロール通知メッセージを送信します。ツールバー、ツールバーをダブルクリックする前にダイアログ ボックスが作成された後、 TBN_BEGINADJUST通知メッセージを送信します。次に、ツールバーはTBN_QUERYINSERT通知メッセージ、ツールバー ボタンを挿入することができるかどうかを確認するのには、一連の送信を開始します。親ウィンドウがTRUEを返す場合は、ツールバーはTBN_QUERYINSERT通知メッセージの送信を停止します。親ウィンドウTRUEはボタンを返さない場合、ダイアログ ボックス、ツールバーを破棄します。

次に、ツール バー コントロールは、ボタンをツールバーのボタンごとにTBN_QUERYDELETE通知メッセージを送信することによって、ツールバーから削除できるかどうを決定します。親ウィンドウは、ボタンを削除することがあることを示すためにTRUEを返します。それ以外の場合はFALSEを返します。ツールバーのすべてのツールバー ボタン、ダイアログ ボックスに追加しますが、削除できない淡色表示。

ツールバーを [ツールバーのカスタマイズ] ダイアログ ボックスのボタンについての情報を必要なときに、それは、情報が必要なボタンのインデックスと、 TBNOTIFY構造体のアドレスを指定する、 TBN_GETBUTTONINFO通知メッセージを送信します。親ウィンドウ構造の関連情報を入力する必要があります。

[ツールバーのカスタマイズ] ダイアログ ボックスには、[ヘルプ] ボタンとリセット ボタンが含まれています。ユーザーが [ヘルプ] ボタンを選択した場合は、ツール バー コントロール、 TBN_CUSTHELP通知メッセージを送信します。親ウィンドウは、ヘルプ情報を表示することによって対応する必要があります。リセット ボタンは、ユーザーを選択すると、ダイアログ ボックスはTBN_RESET通知メッセージを送信します。ツールバーについて] ダイアログ ボックスを再初期化するにはこのメッセージをシグナルします。

これらのメッセージすべてのWM_NOTIFYメッセージとは、オーナー ウィンドウのメッセージ マップ エントリを次の形式のオーナー ウィンドウのメッセージ マップに追加処理できます。:

ON_NOTIFY ( wNotifyCode, idControl, memberFxn

wNotifyCode

通知メッセージの識別子コードは、 TBN_BEGINADJUSTなど。

idControl

通知を送るコントロールの識別子。

memberFxn

この通知を受け取ったときに呼び出されるメンバー関数。

メンバー関数は、次のプロトタイプを宣言するだろう:

afx_msg void memberFxn( NMHDRpNotifyStruct, LRESULT 結果 );

通知メッセージのハンドラーが返された場合は、それは結果で指すLRESULTで置くべき。

各メッセージには、 pNotifyStructNMHDR構造体またはTBNOTIFY構造体のいずれかをポイントします。これらの構造を説明します。:

NMHDR構造体に次のメンバーが含まれています:

typedef 構造体 tagNMHDR {HWND hwndFrom; 特価;//メッセージを送信するコントロールのハンドルUINT idFrom; ・ ・ コントロールの識別子を送信メッセージUINT コード;//通知コード;下記参照} NMHDR(&N)

hwndFrom

通知を送るコントロールのウィンドウ ハンドル。このハンドルはCWndのポインターに変換するには、 CWnd::FromHandleを使用します。

idFrom

通知を送るコントロールの識別子。

コード

通知コード。このメンバー値TTN_NEEDTEXTTBN_BEGINADJUSTなどのコントロールの種類を特定することができます。 またはそれ以下の一般的な通知の値の 1 つをすることができます。:

TBNOTIFY構造の次のメンバーを含む:

typedef 構造体 {NMHDR hdr;//すべての WM_NOTIFY メッセージに共通の情報int iItem;//ボタンのインデックス関連の通知TBBUTTON tbButton;//ボタンについての情報の通知に関連付けられています。int cchText; 特価;//ボタンのテキスト内の文字の数LPSTR lpszText;/アドレス ボタンのテキスト} TBNOTIFY、これまで ※ LPTBNOTIFY(&N)

hdr

すべてのWM_NOTIFYメッセージに共通の情報。

iItem

通知に関連付けられたボタンのインデックス。

tbButton

通知に関連付けられたツール バー ボタンに関する情報を含むTBBUTTON構造体。

cchText

ボタンのテキストの文字数。

lpszText

ボタンのテキストへのポインター。

ツールバーが送る通知は次のとおりです。:

Index