次の方法で共有


NOTIFY_HANDLER

更新 : 2007 年 11 月

メッセージ マップにエントリを定義します。

NOTIFY_HANDLER( 
      id, 
      cd, 
      func  
)

パラメータ

  • id
    [入力] メッセージを送信しているコントロールの ID。

  • cd
    [入力] 通知コード。

  • func
    [入力] メッセージ ハンドラ関数の名前。

解説

NOTIFY_HANDLER は、通知コードとコントロール ID に基づいて、WM_NOTIFY メッセージを指定されたハンドラ関数に割り当てます。

NOTIFY_HANDLER マクロに指定する関数は、すべて次のように定義する必要があります。

LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

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

836f6t1z.alert_note(ja-jp,VS.90).gifメモ :

メッセージ マップは、常に BEGIN_MSG_MAP で開始します。開始した後、ALT_MSG_MAP を使って、さらに代替メッセージ マップを宣言することもできます。END_MSG_MAP マクロは、メッセージ マップの終了位置を示します。どのメッセージ マップにも、BEGIN_MSG_MAPEND_MSG_MAP のインスタンスが 1 つずつ生成されている必要があります。

NOTIFY_HANDLER のほかに、MESSAGE_HANDLER を使用して、識別子やコードに関係なく、WM_NOTIFY メッセージを割り当てることもできます。この場合、MESSAGE_HANDLER(WM_NOTIFY, OnHandlerFunction) は、すべての WM_NOTIFY メッセージを OnHandlerFunction に送ります。

ATL でのメッセージ マップの使い方の詳細については、「メッセージ マップ」を参照してください。

使用例

class CMyDialog2 : public CDialogImpl<CMyDialog2>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog2)
      NOTIFY_HANDLER(IDC_TREE1, NM_CLICK, OnNMClickTree1)
   END_MSG_MAP()

public:
   // When a CMyDialog2 object receives a WM_NOTIFY message 
   // identified by IDC_TREE1 and NM_CLICK, the message is 
   // directed to CMyDialog2::OnNMClickTree1 for the actual
   // processing.
   LRESULT OnNMClickTree1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};

必要条件

ヘッダー : atlwin.h

参照

参照

NOTIFY_ID_HANDLER

NOTIFY_CODE_HANDLER

REFLECTED_NOTIFY_CODE_HANDLER

NOTIFY_RANGE_HANDLER

COMMAND_HANDLER

その他の技術情報

メッセージ マップ マクロ (ATL)

ATL マクロ