Я не могу запретить пользователю редактировать ярлыки в ListView

Согласно msdn, http://msdn.microsoft.com/en-us/library/bb774798%28VS.85%29.aspx , возврат TRUE запрещает пользователю редактировать метки.

Поэтому я написал код ниже: Main:

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

DlgProc:

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

Тем не менее, эти метки можно редактировать. Я не хочу отменять стиль LVS_EDITLABELS, потому что иногда я хотел бы разрешить пользователям редактировать ярлыки.

Кто-нибудь знает проблему? Спасибо.

Возrotation TRUE из DialogProc () не означает, что вы думаете. Цитата из статьи библиотеки MSDN:

Как правило, процедура диалогового windows должна возвращать TRUE, если она обрабатывает сообщение, и FALSE, если это не так. Если процедура диалогового windows возвращает FALSE, диспетчер диалога выполняет операцию диалога по умолчанию в ответ на сообщение.

Если процедура диалогового windows обрабатывает сообщение, требующее определенного возвращаемого значения, процедура диалогового windows должна установить желаемое возвращаемое значение, вызвав SetWindowLong (hwndDlg, DWL_MSGRESULT, lResult) непосредственно перед возвратом TRUE. Обратите внимание, что вы должны сразу же вызвать SetWindowLong перед возвратом TRUE; это может привести к тому, что значение DWL_MSGRESULT будет перезаписано вложенным диалоговым окном.