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

时间:2011-08-02 08:15:04

标签: c windows listview sdk

根据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的样式,因为有时我想允许用户编辑标签。

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

1 个答案:

答案 0 :(得分:3)

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

  

通常,对话框过程如果处理则应返回TRUE   消息,如果没有,则为FALSE。如果是对话框程序   返回FALSE,对话框管理器执行默认对话框   响应消息的操作。

     

如果对话框过程处理需要的消息   具体返回值,对话框程序应设置所需   通过调用SetWindowLong返回值(hwndDlg,DWL_MSGRESULT,lResult)   在返回TRUE之前立即。请注意,您必须致电   SetWindowLong在返回TRUE之前立即;早点这样做可能   导致DWL_MSGRESULT值被嵌套对话框覆盖   盒子留言。

相关问题