根据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值被嵌套的对话框消息覆盖。
以上就是c/c++开发分享我无法阻止用户在ListView中编辑标签相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549303.html