上传用户:easylife05
上传日期:2007-02-14
资源大小:393k
文件大小:4k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. #pragma once
  2. //------------------------------------------------------------
  3. //接口定义的一种方式,可以被引用
  4. interface DECLSPEC_UUID("FD1AB5B5-E66C-457D-81B4-6DDFD6B125E3")
  5. IMessageProxy : public IUnknown
  6. {
  7. };
  8. //----------------------------------------------------------------------------
  9. //也是接口定义,可以用于生成连接点
  10. interface DECLSPEC_UUID("9F4ECD95-2580-4E80-A0D1-15DCE194FADB")
  11. IMessage : public IUnknown
  12. {
  13. public:
  14. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MouseMove(UINT flags, int x, int y)=0;
  15. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE LMouseDown(UINT flags, int x, int y)=0;
  16. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE LMouseUp(UINT flags, int x, int y)=0;
  17. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE LMouseDClick(UINT flags, int x, int y)=0;
  18. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RMouseDown(UINT flags, int x, int y)=0;
  19. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RMouseUp(UINT flags, int x, int y)=0;
  20. virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RMouseDClick(UINT flags, int x, int y)=0;
  21. };
  22. //----------------------------------------------------------------------------
  23. //IMessage的IDL定义文件的部分
  24. [
  25. object,
  26. uuid(9F4ECD95-2580-4E80-A0D1-15DCE194FADB),
  27. helpstring("IMessage 接口"),
  28. pointer_default(unique)
  29. ]
  30. interface IMessage : IUnknown{
  31. [helpstring("方法MouseMove")] HRESULT MouseMove(UINT flags, int x, int y);
  32. [helpstring("方法LMouse")] HRESULT LMouseDown(UINT flags, int x, int y);
  33. [helpstring("方法LMouseUp")] HRESULT LMouseUp(UINT flags, int x, int y);
  34. [helpstring("方法LMouseDClick")] HRESULT LMouseDClick(UINT flags, int x, int y);
  35. [helpstring("方法RMouseDown")] HRESULT RMouseDown(UINT flags, int x, int y);
  36. [helpstring("方法RMouseUp")] HRESULT RMouseUp(UINT flags, int x, int y);
  37. [helpstring("方法RMouseDClick")] HRESULT RMouseDClick(UINT flags, int x, int y);
  38. };
  39. //-----------------------------------------------------
  40. //IMessage接口的实现类定义,部分。
  41. class ATL_NO_VTABLE CMessage : 
  42. public CComObjectRootEx<CComSingleThreadModel>,
  43. public CComCoClass<CMessage, &CLSID_Message>,
  44. public IMessage
  45. {
  46. public:
  47. CMessage()
  48. {
  49. }
  50. DECLARE_REGISTRY_RESOURCEID(IDR_MESSAGE)
  51. BEGIN_COM_MAP(CMessage)
  52. COM_INTERFACE_ENTRY(IMessage)
  53. END_COM_MAP()
  54. DECLARE_PROTECT_FINAL_CONSTRUCT()
  55. HRESULT FinalConstruct()
  56. {
  57. return S_OK;
  58. }
  59. void FinalRelease() 
  60. {
  61. }
  62. public:
  63. STDMETHOD(MouseMove)(UINT flags, int x, int y);
  64. STDMETHOD(LMouseDown)(UINT flags, int x, int y);
  65. STDMETHOD(LMouseUp)(UINT flags, int x, int y);
  66. STDMETHOD(LMouseDClick)(UINT flags, int x, int y);
  67. STDMETHOD(RMouseDown)(UINT flags, int x, int y);
  68. STDMETHOD(RMouseUp)(UINT flags, int x, int y);
  69. STDMETHOD(RMouseDClick)(UINT flags, int x, int y);
  70. };
  71. OBJECT_ENTRY_AUTO(__uuidof(Message), CMessage)
  72. //一种接口实现类的使用方法
  73. CMessage* m_pMessage = new CComObject<CMessage>;
  74. _ASSERT(m_pMessage != NULL);
  75. ((IMessage*)m_pMessage)->AddRef();
  76. //---------------------------------------------------------------------------
  77. //--------------------------------------------------------------------------
  78. //COM对象的类ID定义,可用于引用生成COM对象
  79. static const CLSID CLSID_MessageProxy = {0x4B29B155,0xAD81,0x4CD4,{0xAF,0xF9,0x48,0xA5,0x72,0xC5,0x25,0x92}};
  80. //接口IMessageProxy的接口ID定义
  81. static const IID    IID_IMessageProxy = {0xFD1AB5B5,0xE66C,0x457D,{0x81,0xB4,0x6D,0xDF,0xD6,0xB1,0x25,0xE3}};
  82. //IMessageProxy接口的IDL定义文件,部分。
  83. import "oaidl.idl";
  84. import "ocidl.idl";
  85. [
  86. object,
  87. uuid(FD1AB5B5-E66C-457D-81B4-6DDFD6B125E3),
  88. helpstring("IMessageProxy 接口"),
  89. pointer_default(unique)
  90. ]
  91. interface IMessageProxy : IUnknown{
  92. };
  93. [
  94. uuid(6A8BBA0B-DC43-43E3-B4AA-DC2DFA40F5D9),
  95. version(1.0),
  96. helpstring("Platform 1.0 类型库")
  97. ]
  98. library PlatformLib
  99. {
  100. importlib("stdole2.tlb");
  101. [
  102. uuid(4B29B155-AD81-4CD4-AFF9-48A572C52592),  //具体的COM对象CLSID
  103. helpstring("MessageProxy Class")
  104. ]
  105. coclass MessageProxy
  106. {
  107. [default] interface IMessageProxy;
  108. };
  109. };
  110. //--------------------------------------------------------------------------