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

PlugIns编程

开发平台:

Visual C++

  1. // L1Plugin.h : CL1Plugin 的声明
  2. #pragma once
  3. #include "resource.h"       // 主符号
  4. #include "Plugin.h"
  5. #include "../plugin2/Plugin2.h"
  6. #include "../plugin2/Plugin2_i.c"
  7. #include "iserver.h"
  8. #include "testdlg.h"
  9. // CL1Plugin
  10. const short  FUNCTION_NUM = 3;
  11. extern HINSTANCE global_hInstance;   //全局运行程序实例
  12. class ATL_NO_VTABLE CL1Plugin : 
  13. public CComObjectRootEx<CComSingleThreadModel>,
  14. public CComCoClass<CL1Plugin, &CLSID_L1Plugin>,
  15. public IL1Plugin,
  16. public IDispatchImpl<_IPluginEvents, &__uuidof(_IPluginEvents), &LIBID_Plugin2Lib, /* wMajor = */ 1, /* wMinor = */ 0>,
  17. public IDispatchImpl<IPlugin, &__uuidof(IPlugin), &LIBID_Plugin2Lib, /* wMajor = */ 1, /* wMinor = */ 0>
  18. {
  19. public:
  20. CL1Plugin()
  21. {
  22. m_Dlg=NULL;
  23. }
  24. DECLARE_REGISTRY_RESOURCEID(IDR_L1PLUGIN)
  25. BEGIN_COM_MAP(CL1Plugin)
  26. COM_INTERFACE_ENTRY(IL1Plugin)
  27. COM_INTERFACE_ENTRY(_IPluginEvents)
  28. COM_INTERFACE_ENTRY(IPlugin)
  29. END_COM_MAP()
  30. DECLARE_PROTECT_FINAL_CONSTRUCT()
  31. HRESULT FinalConstruct()
  32. {
  33. return S_OK;
  34. }
  35. void FinalRelease() 
  36. {
  37. }
  38. public:
  39. IServer* m_pServer;
  40. CTestDlg * m_Dlg;
  41. // _IPluginEvents Methods
  42. public:
  43. // IPlugin Methods
  44. public:
  45. STDMETHOD(GetFunctionCount)( SHORT *  pCount)
  46. {
  47. // 在此处添加函数实现。 *pCount=FUNCTION_NUM;
  48. return S_OK;
  49. }
  50. STDMETHOD(DoFunction)( SHORT  index)
  51. {
  52. //----------------------------------------
  53. switch(index)
  54. {
  55. case 0:
  56. //AfxMessageBox("I am Plugin's first function");
  57. ::MessageBox(NULL,"无模式弹出窗口信息条","提示信息",MB_OK);
  58. break;
  59. case 1:
  60. AfxMessageBox("有模式窗口信息弹出提示");
  61. break;
  62. case 2:
  63. if(m_Dlg==NULL)
  64. {
  65. m_Dlg=new CTestDlg();
  66. m_Dlg->Create(NULL);
  67. }
  68. m_Dlg->ShowWindow(SW_SHOW);
  69. break;
  70. //default:;
  71. }
  72. return S_OK;
  73. }
  74. STDMETHOD(GetFunctionName)( SHORT  index,  CHAR *  name)
  75. {
  76. // 在此处添加函数实现。 // TODO: 在此添加实现代码
  77. switch(index)
  78. {
  79. case 0:
  80. strcpy(name,"简单功能1");
  81. break;
  82. case 1:
  83. strcpy(name,"简单功能2");
  84. break;
  85. case 2:
  86. strcpy(name,"高级功能");
  87. break;
  88. default:;
  89. }
  90. return S_OK;
  91. }
  92. STDMETHOD(GetPluginName)(CHAR * name)
  93. {
  94. // 在此处添加函数实现。 strcpy(name,"测试插件"); return S_OK;
  95. }
  96. STDMETHOD(SendMouseMessage)(UINT Message, UINT flags, int x, int y)
  97. {
  98. return S_OK;
  99. }
  100. STDMETHOD(PassHDC)(HDC hDC)
  101. {
  102. return S_OK;
  103. };
  104. STDMETHOD(PassHWND)(HWND mHWND)
  105. {
  106. return S_OK;
  107. };
  108. STDMETHOD(SetServer)(IUnknown* iServer)
  109. {
  110. return S_OK;
  111. };
  112. STDMETHOD(ReDraw)(void)
  113. {
  114. return S_OK;
  115. };
  116. STDMETHOD(GetToolBarBitmap)(HBITMAP* hBitmap)
  117. {
  118. *hBitmap=::LoadBitmap(global_hInstance,MAKEINTRESOURCE(IDB_TOOLBAR));
  119. return S_OK;
  120. };
  121. };
  122. OBJECT_ENTRY_AUTO(__uuidof(L1Plugin), CL1Plugin)