根据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的样式,因为有时我想允许用户编辑标签。
有谁知道这个问题?谢谢。
答案 0 :(得分:3)
从DialogProc()返回TRUE并不意味着你的想法。引用MSDN库文章:
通常,对话框过程如果处理则应返回TRUE 消息,如果没有,则为FALSE。如果是对话框程序 返回FALSE,对话框管理器执行默认对话框 响应消息的操作。
如果对话框过程处理需要的消息 具体返回值,对话框程序应设置所需 通过调用SetWindowLong返回值(hwndDlg,DWL_MSGRESULT,lResult) 在返回TRUE之前立即。请注意,您必须致电 SetWindowLong在返回TRUE之前立即;早点这样做可能 导致DWL_MSGRESULT值被嵌套对话框覆盖 盒子留言。