Мой проект — простое диалоговое окно WIN32 с вкладкой.
При некоторых условиях я хочу запретить пользователю изменять вкладку. МИЗ документация довольно просто —
Возвращает ИСТИНА, чтобы предотвратить изменение выбора, или ЛОЖЬ, чтобы разрешить изменение выбора.
Однако это просто не работает!
Код:
case WM_NOTIFY:
if (((LPNMHDR)lParam)->idFrom == IDC_DEVTABS)
{
if (((LPNMHDR)lParam)->code == TCN_SELCHANGING)
return (INT_PTR)TRUE;
//return (INT_PTR)OnSelChanging(hDlgTab);
if (((LPNMHDR)lParam)->code == TCN_SELCHANGE)
OnSelChanged(hDlgTab);
return (INT_PTR)TRUE;
}
Если ваш элемент управления находится в диалоговом окне, как я полагаю, вам нужно вернуть значение через DWLP_MSGRESULT
данные окна.
SetWindowLongPtr(hWndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
Возвращаемое значение из диалоговой процедуры указывает диспетчеру диалогов, было ли обработано сообщение. Фактическое возвращаемое значение для сообщения предоставляется через DWLP_MSGRESULT
,
Как всегда, увидеть Блог Раймонда для хорошего обсуждения этого.