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

Windows编程

开发平台:

Visual C++

  1. // component.idl
  2. /* Bug in MIDL: Comment out the three references to _maxcount_test in the component_p.c file */
  3. import "unknwn.idl";
  4. [ object, uuid(10000111-0000-0000-0000-000000000001) ]
  5. interface ITest : IUnknown
  6. {
  7. // pointer to one integer
  8. HRESULT SquareInteger([in] int myInteger, [out] int* square);
  9. // fixed array
  10. HRESULT SumOfIntegers1([in] int myIntegers[5], [out] int* sum);
  11. // conformant array
  12. HRESULT SumOfIntegers2([in] int cMax, [in, size_is(cMax)] int* myIntegers, [out] int* sum);
  13. // conformant array in a structure
  14. typedef struct tagSUM_STRUCT
  15. {
  16. int cMax;
  17. [size_is(cMax)] int* myIntegers;
  18. } SUM_STRUCT;
  19. HRESULT SumOfIntegers3([in] SUM_STRUCT* myIntegers, [out] int* sum);
  20. // varying array
  21. HRESULT SumOfIntegers4([in] int cFirst, [in] int cActual, [in, first_is(cFirst), length_is(cActual)] int* myIntegers[7], [out] int* sum);
  22. // conformant array with out parameter
  23. HRESULT ProduceIntegers1([in] int cMax, [out, size_is(cMax)] int* myIntegers);
  24. // varying array
  25. HRESULT ProduceIntegers2([out] int* pcActual, [out, length_is(*pcActual)] int myIntegers[4096]);
  26. // varying array with in, out parameter
  27. HRESULT SendReceiveIntegers([in, out] int* pcActual, [in, out, length_is(*pcActual)] int myIntegers[4096]);
  28. // open array
  29. HRESULT ProduceIntegers3([in] int cMax, [out] int* pcActual, [out, size_is(cMax), length_is(*pcActual)] int* myIntegers);
  30. // conformant array of characters
  31. HRESULT SendString1([in] int cLength, [in, size_is(cLength)] wchar_t* myString);
  32. // string attribute
  33. HRESULT SendString2([in, string] wchar_t* myString);
  34. // string in, out
  35. HRESULT SendReceiveString1([in, out, string] wchar_t* myString);
  36. // string in, out with maximum
  37. HRESULT SendReceiveString2([in] int cMax, [in, out, string, size_is(cMax)] wchar_t* myString);
  38. // dynamic string size on both sides
  39. HRESULT SendReceiveString3([in, out, string] wchar_t** myString);
  40. // a pointer to a pointer to one integer
  41. HRESULT SendInteger([in] int** test);
  42. // multidimensional arrays
  43. HRESULT SendIntegers1([in, size_is(, 2)] int** test);
  44. HRESULT SendIntegers2([in, size_is(3, )] int** test);
  45. HRESULT SendIntegers3([in, size_is(3, 2)] int** test);
  46. }
  47. [ uuid(10000333-0000-0000-0000-000000000001),
  48.   helpstring("IDL Test Component Type Library"),
  49.   version(1.0) ]
  50. library Component
  51. {
  52. importlib("stdole32.tlb");
  53. interface ITest;
  54. [ uuid(10000222-0000-0000-0000-000000000001) ]
  55. coclass TestIDL
  56. {
  57. interface ITest;
  58. }
  59. };