2015-02-05 7 views
0

내 프로젝트는 탭 컨트롤이있는 간단한 WIN32 대화 상자입니다. 어떤 상황에서는 사용자가 탭을 변경하지 못하도록하고 싶습니다. MS documentation은 매우 간단합니다. -탭 컨트롤 : 선택 항목이 변경되지 않도록하려면 어떻게해야합니까?

선택 사항이 변경되지 않도록하려면 TRUE를, 선택 사항을 변경하려면 FALSE를 반환합니다.

그러나 이것은 단지 작동하지 않습니다!

코드 :

\t case WM_NOTIFY: 
 
\t \t if (((LPNMHDR)lParam)->idFrom == IDC_DEVTABS) 
 
\t \t { 
 
\t \t \t if (((LPNMHDR)lParam)->code == TCN_SELCHANGING) 
 
\t \t \t \t return (INT_PTR)TRUE; 
 
\t \t \t \t //return (INT_PTR)OnSelChanging(hDlgTab); 
 
\t \t \t if (((LPNMHDR)lParam)->code == TCN_SELCHANGE) 
 
\t \t \t \t OnSelChanged(hDlgTab); 
 
\t \t \t \t 
 
\t \t \t return (INT_PTR)TRUE; \t \t \t 
 
\t \t }

내가 내 부모 대화 상자가 메시지를 수신 볼 수 있지만, 탭 어쨌든 변화하고있다. 어떤 생각에서 탭이 변경되는 것을 막을 수 있습니까?

답변

4

난 당신이 DWLP_MSGRESULT 창 데이터를 통해 값을 반환 할 필요가 가정으로 컨트롤이 대화 상자에있는 경우.

SetWindowLongPtr(hWndDlg, DWLP_MSGRESULT, TRUE); 
return TRUE; 

대화 프로 시저의 반환 값은 대화 관리자에게 메시지가 처리되었는지 여부를 나타냅니다. 메시지의 실제 반환 값은 DWLP_MSGRESULT을 통해 제공됩니다.

항상 그렇듯이,이 좋은 토론 Raymond's blog를 참조하십시오.