我想对编辑控件中的内容进行检查,要求只能输入字符和空格,
但是第一个字符不能是空格.

解决方案 »

  1.   

    for i=1 to len(str)
      t=mid(str,i,1)
      j=asc(t)
      if j满足条件 then
         resume program
      else
         msgbox "输入字符串不符合条件"
      endif
    next
      

  2.   

    利用EDIT控件的EN-CHANGE消息映射,在消息映射函数中滤处数字或空格
      

  3.   

    对不起,可能是我没说清楚,我是要在edit控件的OnChar函数中做判断的.
    我现在的问题是如何判断第一个字符是空格.如果第一个字符是空格,
    这个空格是要被删除,不会出现在edit中的.
    单纯只允许输入字符的edit控件我已经有现成的,现在的问题就是第一个
    字符是空格的问题了.
    因为不知道如何处理删除键,copy和paste的情况,我的思路有些乱,所以希望大家能给出具体代码.
      

  4.   

    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    CEdit::OnChar(nChar, nRepCnt, nFlags);
      CString szText;
      GetWindowText(szText);
      if(szText.GetLength() > 0 && szText.GetAt(0) == ' ')
      {
      szText.TrimLeft(' ');
      SetWindowText(szText);
      }
    }
      

  5.   

    CString str;
    GetDlgItem(IDC_***)->GetWindowText(str);
    int flag = str.Find(" ");
    //去掉前面所有的空格
    while (flag == 1)
    {
        str = str.Right(str.GetLength() - flag - 1);
        flag = str.Find(" ");
    }代码未经测试,只是思路!
    Good Luck!
      

  6.   

    我建议在输入完后进行判断,如果不符合就告诉用户这样的输入不合法,一边输入一边判断比较难办,还可以利用EN-CHANGE消息映射进行判断,
      

  7.   

    重载cedit类,在onchar中判断void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags); // TODO: Add your message handler code here and/or call default
    CString strEdit;
      GetWindowText(strEdit);
      if( (strEdit.GetLength()>0) && (strEdit.GetAt(0)==' ') )
      {
      strEdit.TrimLeft();
      SetWindowText(strEdit);
      }}
      

  8.   

    LongLongAgoImBoy(ThereIsAMe),thank you!That is waht I wanted!
      

  9.   

    奇怪?
    那什么我已经结贴,分数也没了,但LongLongAgoImBoy(ThereIsAMe)得分是0?