我现在想对ListCtrl中的某一项进行编辑,
而且编辑的时候要对数据检验,只能输入数字和字母。
哪位大虾能帮帮我,不胜感激。

解决方案 »

  1.   

    http://www.codeguru.com/Cpp/controls/listview/Editing items and subitem
      

  2.   

    我看了一下,我试着在OnBeginlabeleditList中插入一个Edit控件,
    这个控件执行数据检验。但是没能成功,哪位大虾能提供一个方法给我参考?
      

  3.   

    1、设置CListCtrl对象为可编辑的。可以在其属性设置中将‘Edit Lables'选项选中,或是在程序中使用ModifyStyle加上LVS_EANBLEEDIT即可。
    2、在CListCtrl对象的父类中处理LVN_ENDLABELEDIT消息.例如:
    void CDlgSnippet::OnEndlabeleditListFile(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here
    TRACE("%s\n", pDispInfo->item.pszText);
    m_ctlFileList.SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, 
    pDispInfo->item.pszText);
    *pResult = 0;
    }
    3、对数字和字母的检查
    isdigit(char ch)可以判断一个字符是否数字,isalpha(char ch)可以判断一个字符是否字母。
    例如:
    BOOL bResult = TRUE;
    CString csTest;
    csTest = _T("bigbigworld");
    for (int i = 0; i < csTest.GetLength(); i++)
    {
        char ch = csTest.GetAt(i);
        if (ch < 0)
        {// 遇到汉字
           bResult = FALSE;
           break;
         }
        else
        {
           if (!isdigit(ch) && !isalpha(ch))
           {
               bResult = FALSE;
               break;
            }
         }
    }
      

  4.   

    对(一切随风)的热心表示赞赏,
    不过你好象误解我的意思,你的这个方法我也知道,
    你是对输入的字符串作检验,是吧?
    但是我是想能不能把数据检验的功能做到CMyEdit的控件中去,
    就像只能输入数字的Edit一样,当你输入字符时,就没有反应。
      

  5.   

    很简单啊,在CMyEdit中处理WM_CHAR消息过滤字符就可以了。
      

  6.   

    在CMyEdit中处理WM_CHAR消息过滤字符,这个我也知道,
    可是怎样把编辑控件转换为CMyEdit,这部分我还不知道如何搞定,
    哪位高手来出出手?