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 |