我的项目是带有选项卡控件的简单WIN32对话框。 在某些情况下,我想阻止用户更改选项卡。 MS documentation非常简单 -
返回TRUE以防止选择更改,或返回FALSE以允许更改选择。
然而,这只是行不通!
代码:
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;
}
我可以看到我的父对话框收到消息,但无论如何都会改变标签。知道我怎么能阻止标签改变吗?
答案 0 :(得分:4)
如果你的控件在对话框中,我认为是,你需要通过DWLP_MSGRESULT
窗口数据返回值。
SetWindowLongPtr(hWndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
对话框过程的返回值向对话管理器指示是否处理了消息。消息的实际返回值通过DWLP_MSGRESULT
提供。
与往常一样,请参阅Raymond's blog,以便对此进行详细讨论。