我无法阻止用户在ListView中编辑标签

根据msdn, http://msdn.microsoft.com/en-us/library/bb774798%28VS.85%29.aspx ,返回TRUE会阻止用户编辑标签。

所以我写了下面的代码:主要:

WinMain(...) { DialogBox(..., DlgProc) } 

DLGPROC:

 DlgProc(...) { switch(message) { case WM_NOTIFY: if((NMHDR *)lParam->code == LVN_BEGINLABELEDIT) { return TRUE; return FALSE; ... } 

仍然可以编辑标签。 我不想取消LVS_EDITLABELS的样式,因为有时候我想允许用户编辑标签。

有谁知道这个问题? 谢谢。

从DialogProc()返回TRUE并不意味着你的想法。 引用MSDN库文章:

通常,对话框过程在处理消息时应返回TRUE,如果不处理则返回FALSE。 如果对话框过程返回FALSE,则对话框管理器将执行默认对话框操作以响应该消息。

如果对话框过程处理需要特定返回值的消息,则对话框过程应通过在返回TRUE之前立即调用SetWindowLong(hwndDlg,DWL_MSGRESULT,lResult)来设置所需的返回值。 请注意,您必须在返回TRUE之前立即调用SetWindowLong; 之前这样做可能会导致DWL_MSGRESULT值被嵌套的对话框消息覆盖。