2011-08-16 8 views
2

제가 만든 속성 시트가 ​​있고 각각의 탭 페이지는 동일한 pfnDlgProc을 공유합니다. pfnDlgProc에서,이 코드가 있습니다PSN_QUERYCANCEL이 속성 시트를 닫지 않습니다.

switch (msg) { 
    case WM_NOTIFY: 
     nmhdr = (NMHDR*)lParam; 

     switch (nmhdr->code) { 
      case PSN_QUERYCANCEL: 
       printf("PSN_QUERYCANCEL\n"); 
       SetWindowLong(nmhdr->hwndFrom, DWL_MSGRESULT, FALSE); 

       return TRUE; 
     } 

     break; 

    ... 
} 

내 속성 시트에서 취소 버튼을 클릭 PSN_QUERYCANCEL은 인쇄되지만 속성 시트는 닫히지 않습니다. 왜 이런거야? 거기에 내가 그것을 허용/할 가까이해야 할 일이 있습니까? 나는 핸들러에 DestroyWindow(nmhdr->hwndFrom)을 추가 할 수 있다는 것을 알았지 만, 그것을 할 수있는 적절한 방법일까요?

답변

0

알림을 보낸 창 핸들에 DWL_MSGRESULT를 설정하고 있지만 WM_NOTIFY를 처리중인 대화 상자는 아닙니다. nmhdr-> hwndFrom 창 핸들을 사용하는 대신 pfnDlgProc에 전달되는 HWND를 사용해보십시오.

+0

두 가지 방법으로 시도했지만 어떤 방법으로도 작동하지 않습니다. –

관련 문제