关键在于VARIANT变量我不会设!

解决方案 »

  1.   

    typedef struct tagVARIANT  {
        VARTYPE vt;
        unsigned short wReserved1;
        unsigned short wReserved2;
        unsigned short wReserved3;
        union {
            unsigned char        bVal;                        // VT_UI1.
            short                    iVal;                        // VT_I2    .
            long                    lVal;                        // VT_I4    .
            float                    fltVal;                    // VT_R4    .
            double                dblVal;                    // VT_R8    .
            VARIANT_BOOL        boolVal;                        // VT_BOOL.
            SCODE                    scode;                    // VT_ERROR.
            CY                        cyVal;                    // VT_CY    .
            DATE                    date;                        // VT_DATE.
            BSTR                    bstrVal;                    // VT_BSTR.
            IUnknown                FAR* punkVal;            // VT_UNKNOWN.
            IDispatch             FAR* pdispVal;            // VT_DISPATCH.
            SAFEARRAY            FAR* parray;            // VT_ARRAY|*.
            unsigned char        FAR* pbVal;                // VT_BYREF|VT_UI1.
            short                    FAR* piVal;                // VT_BYREF|VT_I2.
            long                    FAR* plVal;                // VT_BYREF|VT_I4.
            float                    FAR* pfltVal;            // VT_BYREF|VT_R4.
            double                FAR* pdblVal;            // VT_BYREF|VT_R8.
            VARIANT_BOOL        FAR* pboolVal;                // VT_BYREF|VT_BOOL.
            SCODE                    FAR* pscode;            // VT_BYREF|VT_ERROR.
            CY                        FAR* pcyVal;            // VT_BYREF|VT_CY.
            DATE                    FAR* pdate;                // VT_BYREF|VT_DATE.
            BSTR                    FAR* pbstrVal;            // VT_BYREF|VT_BSTR.
            IUnknown FAR*        FAR* ppunkVal;            // VT_BYREF|VT_UNKNOWN.
            IDispatch FAR*        FAR* ppdispVal;        // VT_BYREF|VT_DISPATCH.
            SAFEARRAY FAR*        FAR* pparray;            // VT_ARRAY|*.
            VARIANT                FAR* pvarVal;            // VT_BYREF|VT_VARIANT.
            void                    FAR* byref;                // Generic ByRef.
        };
    };
     我也不是很清楚
    可以看看MSDN中的说明。
      

  2.   

    CString str("kkkk");
    VARIANT var;
    VariantInit(&var);
    var.vt = VT_BSTR;
    var.bstrVal = str.SysAllocString();
    VariantClear(&var);//////////////////BSTR bstr;
    bstr = SysAllocString(L"xxxx");
    VARIANT var;
    VariantInit(&var);
    var.vt = VT_BSTR;
    var.bstrVal = bstr;
    VariantClear(&var);
    SysFreeString(&bstr);
      

  3.   

    或者用COleVariant就可以了COleVariant var("kkkk");
    构造函数
    COleVariant( const VARIANT& varSrc );COleVariant( const COleVariant& varSrc );COleVariant( LPCVARIANT pSrc );COleVariant( LPCTSTR lpszSrc );COleVariant( LPCTSTR lpszSrc, VARTYPE vtSrc );COleVariant( CString& strSrc );COleVariant( BYTE nSrc );COleVariant( short nSrc, VARTYPE vtSrc = VT_I2 );COleVariant( long lSrc, VARTYPE vtSrc = VT_I4 );COleVariant( const COleCurrency& curSrc );COleVariant( float fltSrc );COleVariant( double dblSrc );COleVariant( const COleDateTime& dateSrc );COleVariant( const CByteArray& arrSrc );COleVariant( const CLongBinary& lbSrc );具体查msdn
      

  4.   

    VARIANT vf,vs,ve,vo;
    memset(&vf,0,sizeof(vf));   //vf需要查询的字符串
    memset(&vs,0,sizeof(vs));   //vs开始的地方
    memset(&ve,0,sizeof(ve));   //ve结束的地方  
    memset(&vo,0,sizeof(vo));   //vo选项
    BSTR bstr;
    bstr = SysAllocString(L"you need find string");
    VARIANT vf;
    VariantInit(&vf);
    vf.vt = VT_BSTR;
    vf.bstrVal = bstr;
    VariantClear(&vf);
    SysFreeString(&bstr);
    vs.vt = VT_I4;     
    vs.iVal = 0;       //重头开始      ve.vt = VT_I4;     
    ve.iVal = 100;    //查询到100的地方为为止vo.vt = VT_I4;     
    vo.iVal = 2;  //2 = 整个单词   4 = MatchCase   8 =NoHighlight      
    m_richtextctrl.Find(vf);
    //如果没有找到返回-1
      

  5.   

    long nret = m_richtextctrl.Find(vf,vs,ve,vo);
      

  6.   

    'Find' : cannot convert parameter 1 
    from 'struct tagVARIANT' to 'const char *'
      

  7.   

    CRichEditCtrl::FindText
    long FindText( DWORD dwFlags, FINDTEXTEX* pFindText ) const;