Types.cpp
上传用户:bjlvip
上传日期:2010-02-08
资源大小:744k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #define _WIN32_DCOM
  2. #include <windows.h>
  3. #include <iostream.h>
  4. #include <stdio.h>
  5. int main(int argc, char* argv[])
  6. {
  7. CoInitializeEx(NULL, COINIT_MULTITHREADED);
  8. VARIANT v1;
  9. VARIANT v2;
  10. VariantInit(&v1);
  11. VariantInit(&v2);
  12. v1.vt = VT_I4;
  13. v1.lVal = 5;
  14. HRESULT hr = VariantChangeType(&v2, &v1, 0, VT_BSTR);
  15. if(SUCCEEDED(hr))
  16. wprintf(L"%sn", v2.bstrVal);
  17. VariantClear(&v2);
  18. // ----------
  19. BSTR b1;
  20. b1 = SysAllocString(L"Testing BSTRs");
  21. wprintf(L"%sn", b1);
  22. wprintf(L"%d bytesn", SysStringByteLen(b1));
  23. wprintf(L"%d charactersn", SysStringLen(b1));
  24. SysFreeString(b1);
  25. // ----------
  26. long myArray[2][4];
  27. myArray[1][3] = 3;
  28. SAFEARRAYBOUND pSab[2];
  29. pSab[0].lLbound = 0;
  30. pSab[0].cElements = 4;
  31. pSab[1].lLbound = 0;
  32. pSab[1].cElements = 4;
  33. SAFEARRAY* pSa;
  34. pSa = SafeArrayCreate(VT_I4, 2, pSab);
  35. if(pSa == NULL)
  36. cout << "SafeArrayCreate failed" << endl;
  37. long index[2] = { 2, 1 };
  38. long data = 3;
  39. SafeArrayPutElement(pSa, index, &data);
  40. long NewData;
  41. SafeArrayGetElement(pSa, index, &NewData);
  42. cout << NewData << endl;
  43. long* pData;
  44. SafeArrayAccessData(pSa, (void**)&pData);
  45. *pData = 4;
  46. *(pData + 1) = 5;
  47. *(pData + 2) = 6;
  48. *(pData + 3) = 7;
  49. *(pData + 4) = 8;
  50. *(pData + 5) = 9;
  51. *(pData + 6) = 10;
  52. *(pData + 7) = 11;
  53. SafeArrayUnaccessData(pSa);
  54. index[0] = 3;
  55. index[1] = 1;
  56. SafeArrayGetElement(pSa, index, &NewData);
  57. cout << NewData << endl;
  58. VARIANT v3;
  59. VariantInit(&v3);
  60. v1.vt = VT_I4|VT_ARRAY;
  61. v1.parray = pSa;
  62. SafeArrayDestroy(pSa);
  63. CoUninitialize();
  64. return 0;
  65. }