2012-03-13 5 views
5

私は2つのコントロール:ツリービューリストボックスとダイアログボックスを持っています。 私のダイアログボックスのメッセージハンドラもあります。リストボックス」コントロールのプロパティで通知値がTRUEに設定されているという事実にもかかわらず、木箱から通知が正常に来ますが、リストボックスから通知が来たことがない理由リストボックス通知

case WM_NOTIFY: 
     { 
      switch(LOWORD(wParam)) 
      { 
       case IDC_LIST1: //we NEVER comes here 
         if(((LPNMHDR)lParam)->code == NM_CLICK) 
         { 
          //do some work; 
          return (INT_PTR)TRUE; 
         } 
         break; 
       case IDC_TREE1: 
         if(((LPNMHDR)lParam)->code == NM_DBLCLK) 
         { 
         //do some work; 
         return (INT_PTR)TRUE; 
         } 
         break; 
      } 
     } 
     break; 

だから、私は理解できません。 ありがとうございます。

答えて

11

ドキュメントを確認してみましょう。

List Box Styles

LBS_NOTIFY

は、ユーザがリストボックスの項目(LBN_SELCHANGE)をクリックするたびに親ウィンドウに通知コードを送信するために、リストボックスを引き起こす(アイテムをダブルクリックLBN_DBLCLK)、または選択を取り消す(LBN_SELCANCEL)。

LBN_SELCHANGE

は、リストボックスの選択は、ユーザ入力の結果として変更されたアプリケーションに通知します。 リストボックスの親ウィンドウは、WM_COMMANDメッセージを通じてこの通知コードを受信します。

LBN_DBLCLK

は、ユーザーがリストボックスをダブルクリックしたアイテムを持っているアプリケーションに通知します。 リストボックスの親ウィンドウは、WM_COMMANDメッセージを通じてこの通知コードを受信します。

LBN_SELCANCEL

は、ユーザーがリストボックスの選択を解除したアプリケーションを通知します。 リストボックスの親ウィンドウは、WM_COMMANDメッセージを通じてこの通知コードを受信します。

結論:リストボックスは、親、ないWM_NOTIFYを通知するWM_COMMANDを使用しています。