选项卡控件:如何防止选择发生变化?
Tab Control: How to prevent the selection from changing?
我的项目是一个带有选项卡控件的简单WIN32对话框。
在某些情况下,我想阻止用户更改选项卡。 MS documentation 非常简单 -
Returns TRUE to prevent the selection from changing, or FALSE to allow the selection to change.
然而,这是行不通的!
代码:
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
window 数据 return 值。
SetWindowLongPtr(hWndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
对话过程中的 return 值向对话管理器指示消息是否已处理。消息的实际 return 值通过 DWLP_MSGRESULT
.
提供
一如既往,请参阅 Raymond's blog 以获得对此的良好讨论。
我的项目是一个带有选项卡控件的简单WIN32对话框。 在某些情况下,我想阻止用户更改选项卡。 MS documentation 非常简单 -
Returns TRUE to prevent the selection from changing, or FALSE to allow the selection to change.
然而,这是行不通的!
代码:
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
window 数据 return 值。
SetWindowLongPtr(hWndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
对话过程中的 return 值向对话管理器指示消息是否已处理。消息的实际 return 值通过 DWLP_MSGRESULT
.
一如既往,请参阅 Raymond's blog 以获得对此的良好讨论。