【发布时间】:2011-08-02 16:56:46
【问题描述】:
根据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,因为有时我想允许用户编辑标签。
有人知道这个问题吗?谢谢。
【问题讨论】:
-
从
LVN_BEGINLABELEDIT返回TRUE确实有效。一定有其他事情正在发生干扰。 -
再贴一些代码,问题肯定出在其他地方。你能做一个非常小的应用程序,可以在这里发布来显示问题吗?
-
是的,我做到了,谢谢大家。我在返回 TRUE 之前添加了一行。 SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, TRUE);一切正常。微软在他们的架构中有一些肮脏的工作,哈哈