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

PlugIns编程

开发平台:

Visual C++

  1. // Plugin.cpp : DLL 导出的实现。
  2. #include "stdafx.h"
  3. #include "resource.h"
  4. #include "Plugin.h"
  5. class CPluginModule : public CAtlDllModuleT< CPluginModule >
  6. {
  7. public :
  8. DECLARE_LIBID(LIBID_PluginLib)
  9. DECLARE_REGISTRY_APPID_RESOURCEID(IDR_PLUGIN, "{69F7AA49-D71D-45AB-8F02-C2D142127E41}")
  10. };
  11. CPluginModule _AtlModule;
  12. class CPluginApp : public CWinApp
  13. {
  14. public:
  15. // 重写
  16.     virtual BOOL InitInstance();
  17.     virtual int ExitInstance();
  18.     DECLARE_MESSAGE_MAP()
  19. };
  20. BEGIN_MESSAGE_MAP(CPluginApp, CWinApp)
  21. END_MESSAGE_MAP()
  22. CPluginApp theApp;
  23. HINSTANCE global_hInstance;   //全局运行程序实例
  24. BOOL CPluginApp::InitInstance()
  25. {
  26. BOOL success=CWinApp::InitInstance();
  27. if (success)
  28. global_hInstance=this->m_hInstance;
  29. return  success;
  30. }
  31. int CPluginApp::ExitInstance()
  32. {
  33.     return CWinApp::ExitInstance();
  34. }
  35. // 用于确定 DLL 是否可由 OLE 卸载
  36. STDAPI DllCanUnloadNow(void)
  37. {
  38.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  39.     return (AfxDllCanUnloadNow()==S_OK && _AtlModule.GetLockCount()==0) ? S_OK : S_FALSE;
  40. }
  41. // 返回一个类工厂以创建所请求类型的对象
  42. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
  43. {
  44.     return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
  45. }
  46. // DllRegisterServer - 将项添加到系统注册表
  47. STDAPI DllRegisterServer(void)
  48. {
  49.     // 注册对象、类型库和类型库中的所有接口
  50.     HRESULT hr = _AtlModule.DllRegisterServer();
  51. return hr;
  52. }
  53. // DllUnregisterServer - 将项从系统注册表中移除
  54. STDAPI DllUnregisterServer(void)
  55. {
  56. HRESULT hr = _AtlModule.DllUnregisterServer();
  57. return hr;
  58. }