选项卡控件:如何防止选择更改?

时间:2015-02-05 08:19:24

标签: c++ winapi tabs tabcontrol win32gui

我的项目是带有选项卡控件的简单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;			
		}

我可以看到我的父对话框收到消息,但无论如何都会改变标签。知道我怎么能阻止标签改变吗?

1 个答案:

答案 0 :(得分:4)

如果你的控件在对话框中,我认为是,你需要通过DWLP_MSGRESULT窗口数据返回值。

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

对话框过程的返回值向对话管理器指示是否处理了消息。消息的实际返回值通过DWLP_MSGRESULT提供。

与往常一样,请参阅Raymond's blog,以便对此进行详细讨论。