_vartiant_转换成CString

来源:互联网 发布:ae cc 2017 for mac 编辑:程序博客网 时间:2024/04/30 08:13
/*
 * function: var2str(const _variant_t   &var)
 *
 * purpose: cover the type "_vartiant_t"to the type "CString"
 *
 * parameters: _vartiant_t &var
 *
 * return value: CString
 *
 */
CString   var2str(const _variant_t   &var) 

    CString   strValue;
  
    switch   (var.vt) 
    { 
        case   VT_BSTR: 
        case   VT_LPSTR: 
        case   VT_LPWSTR:    /* character string */
            strValue   =   (LPCTSTR)(_bstr_t)var; 
            break; 
        case   VT_I1: 
        case   VT_UI1: 
            strValue.Format("%d",   var.bVal); 
            break; 
        case   VT_I2:        /* short int */ 
            strValue.Format("%d",   var.iVal); 
            break; 
        case   VT_UI2:       /* unsigned short int */ 
            strValue.Format("%d",   var.uiVal); 
            break; 
        case   VT_INT:       /* int */
            strValue.Format("%d",   var.intVal); 
            break; 
        case   VT_I4:        /* int */ 
            strValue.Format("%d",   var.lVal); 
            break; 
        case   VT_I8:        /* long int */
            strValue.Format("%d",   var.lVal); 
            break; 
        case   VT_UINT:      /* unsigned int */ 
            strValue.Format("%d",   var.uintVal); 
            break; 
        case   VT_UI4:       /* unsigned int */ 
            strValue.Format("%d",   var.ulVal); 
            break; 
        case   VT_UI8:       /* unsigned long int */ 
            strValue.Format("%d",   var.ulVal); 
            break; 
        case   VT_VOID:      /* void */
            strValue.Format("%8x",   var.byref); 
             break; 
        case   VT_R4:        /* float */
            strValue.Format("%.4f",   var.fltVal); 
            break; 
        case   VT_R8:        /* double float */
            strValue.Format("%.8f",   var.dblVal); 
            break; 
        case   VT_DECIMAL:   /* double */ 
            strValue.Format("%.8f",   (double)var); 
            break; 
        case   VT_BLOB: 
        case   VT_BLOB_OBJECT: 
        case   0x2011: 
            strValue   =   "[BLOB]"; 
            break; 
        case   VT_BOOL:      /* bool */   
            strValue   =   var.boolVal   ?   "TRUE"   :   "FALSE"; 
            break; 
        case   VT_DATE:      /* datetime */
            {
                DATE   dt   =   var.date; 
                COleDateTime   da   =   COleDateTime(dt);   
                strValue   =   da.Format("%Y-%m-%d   %H:%M:%S"); 
            }
            break; 
        case   VT_NULL:      /* null */
            strValue   =   ""; 
            break; 
        case   VT_EMPTY:     /* empty */
            strValue   =   ""; 
            break; 
        case   VT_UNKNOWN:   /* unkown type */ 
        default: 
            strValue   =   "UN_KNOWN"; 
            break; 
    }

    return   strValue; 
原创粉丝点击