比如一个字符串被格式化为
clrText.Format("%3d,%3d,%3d",GetRValue(clr3),GetGValue(clr3),GetBValue(clr3));怎样判断text是否跟clrText是同一格式?最好能写一些代码另外,有没有函数可以对一个已格式化的字符串进行format的逆向操作?

解决方案 »

  1.   

    CString str;
    str = "1,2,3";
    int a,b,c;
    sscanf(str, "%d,%d,%d", &a,&b,&c);
      

  2.   

    怎样判断text是否跟clrText是同一格式?解析字符串
      

  3.   

    sscanf(str, "%d,%d,%d", &a,&b,&c); ==> sscanf(str, "%3d,%3d,%3d", &a,&b,&c);
    sscanf的返回值是正确记取的个数,如果为3表示前面正确.但不排除后面还有内容.
      

  4.   

    bool IsWright(CString str)
    {
    if(str.GetLength() != 11)
    return false;
    int a;
    int num = sscanf(str, "%3d,%3d,%3d",&a,&a,&a);
    if(3 !=  num)
    return false; return true;
    }
    void CDlgcsdn20Dlg::OnButton5() 
    {
    bool b = IsWright("023,034,089");
    }
      

  5.   

    谢谢大家!但是现在又有个新问题了
    我重载了Edit控件的EN_CHANGE响应函数,但是我没输入一个字符都要调用该函数,而我只想再输入回车以后才调用该函数,请问怎么做?(不要用重载OnOK的方法)请大家帮忙,急!!
      

  6.   

    EN_KILLFOCUS中处理如果你不作处理,你一回车就把对话框关闭了
      

  7.   

    he_zhidan(何志丹:www.vcshare.net) 我已经处理过了,回车不会关闭对话框。我现在是想过滤掉EDIT框的其他输入在EDIT框里任何输入都会调用On_enchange(),,只在输入回车的时候才调用on_enchange()。或者想个办法在on_enchange()里过滤掉出回车以外的所有输入。
      

  8.   

    我现在是想过滤掉EDIT框的其他输入在EDIT框里任何输入都会调用On_enchange(),而我希望只在输入回车的时候才调用on_enchange()。或者想个办法在on_enchange()里过滤掉出回车以外的所有输入。
      

  9.   

    你可以重载CEdit类的OnChar()函数,或者在窗体的PreTranslateMessage里面过滤除回车以外的所有输入!
      

  10.   

    To ScatMan:
    具体的实现你按照我的方法查下资料,具体的代码我就不说了
      

  11.   

    to baoxue10181018(暴雪) 
    谢谢你的回复,可惜用你的方法还不如重载OnOK()简单。不知道有没有更好的方法,最好跟on_enchange()有关。
      

  12.   

    重载OnChange
    如果不是回车则直接返回