2012-03-13 9 views
5

두 개의 컨트롤이있는 대화 상자가 있습니다. 트리보기목록 상자입니다. 대화 상자의 메시지 처리기도 있습니다. 그래서목록 상자 알림

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; 

나무 상자에서 알림을 성공적으로 오는 이유를 이해 할 수 없지만 목록 상자에서 알림 결코 TRUE 를 설정 목록 상자 '컨트롤 의 특성에 값을 통지한다는 사실에도 불구하고 온다. 감사합니다.

답변

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를 사용합니다.