本人想用VC做一个简单的(ATL)COM,要求接收一字符串,然后判断这个字符串是否与预设的字符串相等,若相等的话返回一个字符串,我该怎么写?

解决方案 »

  1.   

    这样写对吗?
    STDMETHODIMP Cinput::post(BSTR in, BSTR *cout)
    {
    if(in=(unsigned short *)"HELLO")
      *cout=(unsigned short *)"you input ok!";
      else *cout=(unsigned short *)"you input error!";
    return S_OK;
    }
    ------------------------------
    还望大家们赐教!!
      

  2.   

    To wangjsxz(快乐宝贝):
      错了。
    STDMETHODIMP Cinput::post(BSTR in, BSTR *cout)
    {
            if((wcscmp(in,L"HELLO")==0)
                 *count=_bstr_t("you input ok!");
            else
                 *count=_bstr_t("you input failse!");
          return S_OK;
    }
      

  3.   

    To wangjsxz(快乐宝贝):
      错了。
    STDMETHODIMP Cinput::post(BSTR in, BSTR *cout)
    {
            if((wcscmp(in,L"HELLO")==0)
                 *count=(wchar_t *)_bstr_t("you input ok!");
            else
                 *count=(wchar_t *)_bstr_t("you input failse!");
          return S_OK;
    }
      

  4.   

    楼主的做法是错的!一般来说,COM的标准做法
    STDMETHODIMP Cinput::post(BSTR in, BSTR *cout)
    {
    if(wcscmp(in,L"HELLO")==0)
      *cout=SysAllocString(L"you input ok!");
      else 
      *cout=SysAllocString(L"you input error!)";
    return S_OK;
    }TO luozheng(David):你的做法也不对,有潜在问题的。
    应该:
    STDMETHODIMP Cinput::post(BSTR in, BSTR *cout)
    {
            if((wcscmp(in,L"HELLO")==0)
                 *count=_bstr_t("you input ok!").copy();
            else
                 *count=(wchar_t *)_bstr_t("you input failse!").copy();
          return S_OK;
    }