⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 variantwrapper.cpp

📁 JDesktop Integration Components (JDIC)
💻 CPP
字号:
/* * Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved. Use is * subject to license terms. *  * This program is free software; you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. */ #include "stdafx.h"#include "VariantWrapper.h"#include <comdef.h>using namespace _com_util;VariantWrapper::VariantWrapper(){	vt = VT_EMPTY;}VariantWrapper::VariantWrapper(VARIANT *pV){	ATLASSERT(pV);	ATLASSERT(AfxIsValidAddress(pV, sizeof(VARIANT), TRUE));	vt = VT_VARIANT;	pvarVal = pV;}VariantWrapper::~VariantWrapper(void){	unsigned long i;	switch (vt)	{	    case VT_BSTR:		    SysFreeString(bstrVal);		    break;	    case VT_ARRAY | VT_VARIANT:		    for (i = 0; i < parray->rgsabound[0].cElements; i++)			    if (((VARIANT *) parray->pvData)[i].vt == VT_BSTR)				    SysFreeString(((VARIANT *) parray->pvData)[i].bstrVal);		    delete parray->pvData;		    delete parray;		    break;	    default:		    break;	}}LPSTR VariantWrapper::ToString(){	USES_CONVERSION;    VARIANT* pV = NULL;    char* retStr = NULL;    if (vt == VT_VARIANT && pvarVal != (VARIANT*) NULL)    {        pV = pvarVal;    }     else     {        pV = this;    }        switch (pV->vt)    {        case VT_BSTR:            retStr = _com_util::ConvertBSTRToString(pV->bstrVal);            break;        case VT_UI1:            retStr = new char[256];            itoa((int) pV->bVal, retStr, 10);            break;        case VT_I2:            retStr = new char[256];            itoa((int) pV->iVal, retStr, 10);            break;        case VT_I4:            retStr = new char[256];            itoa((int) pV->lVal, retStr, 10);            break;        case VT_BOOL:            retStr = new char[256];            if (pV->boolVal)            {                sprintf(retStr, "%s\0", "true");            }            else            {                sprintf(retStr, "%s\0", "false");            }        default:            break;    }    return retStr;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -