用ATL编写的单实例(DLL)服务器的原代码的例子

    技术2026-06-05  7

    要想单实例,必须控制IClassFactory接口。 在你的对象类声明里 加入 DECLARE_CLASSFACTORY_EX(CMyClassFactory) CMyClassFactory是你从CComClassFactory继承来的。 重载CreateInstance函数。 CreateInstance函数如下 HRESULT   CMyClassFactory::CreateInstance(LPUNKNOWN   pUnkOuter, REFIID   riid,   void**   ppvObj) {           _ASSERTE(m_pfnCreateInstance   !=   NULL);           HRESULT   hRes   =   E_POINTER;           static   void   *   pObj   =   NULL;   //   用于保存实例指针           //   如果实例已存在直接返回           if(pObj)           {                     *ppvObj   =   pObj;                     ((LPUNKNOWN)pObj)-> AddRef();                     hRes   =   S_OK;           }           else   //   不存在创建新的           {                     hRes   =   m_pfnCreateInstance(pUnkOuter,   riid,   &pObj);                     *ppvObj   =   pObj;           }           return   hRes; } 

    最新回复(0)