336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
BSTR과 마찬가지로 VARIANT형도 자신이 싣게될 데이터형에 따라 알아서 처리하는 _variant_t 클래스를 제공합니다. V_VT와 V_자료형 매크로를 사용해 일일이 데이터형을 지정하지 않아도 된다는 뜻입니다. 3편에서 보였던 소스를 _variant_t 형으로 다시 작성해보겠습니다.
/* ex08.cpp */
#include "stdafx.h"
int main(int argc, char * argv[])
{
::setlocale(LC_ALL, "");
if (SUCCEEDED(::CoInitialize(NULL)))
{
{
_bstr_t bstr1, bstr2, bstr3;
_variant_t variant;
IXMLDOMDocumentPtr xmlDocument;
IXMLDOMProcessingInstructionPtr xmlProcessingInstruction;
IXMLDOMElementPtr xmlElement;
IXMLDOMAttributePtr xmlAttribute;
if (!SUCCEEDED(xmlDocument.CreateInstance(__uuidof(DOMDocument))))
{
::wprintf(L"xmlDocument가 생성되지 않았습니다.\n");
::CoUninitialize();
return -1;
}
bstr1 = TEXT("xml");
bstr2 = TEXT("version=\"1.0\"");
xmlDocument->createProcessingInstruction(bstr1, bstr2, &xmlProcessingInstruction);
xmlDocument->appendChild(xmlProcessingInstruction, NULL);
bstr1 = TEXT("document");
xmlDocument->createElement(bstr1, &xmlElement);
bstr1 = TEXT("name");
bstr2 = TEXT("tapito.tistory.com");
variant = bstr2;
xmlDocument->createAttribute(bstr1, &xmlAttribute);
xmlAttribute->put_value(variant);
xmlElement->setAttributeNode(xmlAttribute, NULL);
bstr1 = TEXT("number");
variant = (int)1000;
xmlDocument->createAttribute(bstr1, &xmlAttribute);
xmlAttribute->put_value(variant);
xmlElement->setAttributeNode(xmlAttribute, NULL);
bstr1 = TEXT("average");
variant = 3.14159f;
xmlDocument->createAttribute(bstr1, &xmlAttribute);
xmlAttribute->put_value(variant);
xmlElement->setAttributeNode(xmlAttribute, NULL);
xmlDocument->appendChild(xmlElement, NULL);
xmlDocument->get_xml(bstr3.GetAddress());
::wprintf(L"%s", (const wchar_t *)bstr3);
}
::CoUninitialize();
}
return 0;
}
다시 설명하면
VARIANT variant; V_VT(&variant) = VT_BSTR; V_BSTR(&variant) = bstr2;
이랬던 부분이
_variant_t variant; variant = bstr2;
이와 같이 단순화 되었다는 뜻입니다. 자료형을 판별하는 등의 작업은 클래스 내부에서 알아서 이뤄지는 것이죠
'Application Programming Interface > Windows API' 카테고리의 다른 글
| Visual C++로 MSXML 사용하기 #6 (0) | 2014.08.19 |
|---|---|
| Visual C++로 MSXML 사용하기 #5 (0) | 2014.08.12 |
| Visual C++로 MSXML 사용하기 #3 (0) | 2014.08.12 |
| Visual C++로 MSXML 사용하기 #2 (2) | 2014.08.11 |
| Visual C++로 MSXML 사용하기 #1 (1) | 2014.08.11 |