乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      com(用DLL) 的例子

       水中麒麟 2013-09-16
      Comdll  的編寫
      inface.h
      ----------------------

      #ifdef   _INFACE_H
      #else  
      #define _INFACE_H
      #include <objbase.h> 
      interface IX:public IUnknown
      {
      virtual ULONG  __stdcall fx()=0;

      };

      interface IY:public IUnknown 
      {
      virtual void __stdcall fy()=0;

      };

      interface IZ:public IUnknown
      {
      virtual void __stdcall fz()=0;

      };
      class CA:public IX
      {
      virtual  HRESULT __stdcall QueryInterface (const IID & riid,void **ppv);
      virtual  ULONG  __stdcall AddRef();
      virtual ULONG __stdcall Release();
      virtual ULONG   __stdcall fx();

      public:
      CA();
      ~CA();
      private:
      long m_cRef;
      };
      extern "C"

      const IID IID_IX;
      const IID IID_IY;
      const IID IID_IZ;
      }
      #endif

      ------------------
      compnt1.cpp
      ----------------------------------



      #include "inface.h"
      #include <objbase.h>



      CA::CA()
      {
      m_cRef=0;

      }
      CA::~CA()
      {
      OutputDebugString("~ destructor \n");

      }
      HRESULT __stdcall CA::QueryInterface (const IID & riid,void **ppv)
      {
      if(riid==IID_IUnknown)
      {
      *ppv=static_cast<IX*>(this);

      }
      else if(riid==IID_IX)
      {
      *ppv=static_cast<IX*>(this);

      }
      /*
      else if(riid==IID_IY)
      {
      *ppv = static_cast<IY*>(this);

      }*/

      else
      {
      *ppv=NULL;
      return E_NOINTERFACE;

      }

      static_cast<IUnknown *>(*ppv)->AddRef();
      return S_OK;


      }

      ULONG  __stdcall CA::AddRef()
      {
      return InterlockedIncrement(&m_cRef);

      }
      ULONG __stdcall CA::Release()
      {

      return InterlockedDecrement(&m_cRef);


      }

      ULONG __stdcall CA::fx()
      {
      long a=10;

      return a;


      }

      extern "C" IUnknown * CreateInstance()
      {
      IUnknown *pI = static_cast<IX*>(new CA());
      pI->AddRef();
      return pI;

      }
      -----------------------
      guids.cpp
      ------------------------------

      #include <objbase.h>
      // {73373F3A-716D-488b-A821-2A0E963B6285}
      extern  const GUID IID_IX = 
      { 0x73373f3a, 0x716d, 0x488b, { 0xa8, 0x21, 0x2a, 0xe, 0x96, 0x3b, 0x62, 0x85 } };

      // {D8FED3FB-31D6-48c0-8FBA-E1B613281D36}
      extern const GUID IID_IY = 
      { 0xd8fed3fb, 0x31d6, 0x48c0, { 0x8f, 0xba, 0xe1, 0xb6, 0x13, 0x28, 0x1d, 0x36 } };


      // {8532846B-94E5-4a10-A632-36A49C5D5D76}
      extern  const GUID IID_IZ = 
      { 0x8532846b, 0x94e5, 0x4a10, { 0xa6, 0x32, 0x36, 0xa4, 0x9c, 0x5d, 0x5d, 0x76 } };


      ----------------
      comdll.def       //模塊定義軟件 
      --------------------------------------------------
      LIBRARY "Comdll"

      EXPORTS 
      CreateInstance  @1

      --------------------------------------------------------




      在     MFC   的中 結(jié)合


      #include "inface.h"

      #include "WinDef.h"
      IUnknown * CallCreateInstance(char * name)
      {
      typedef IUnknown * (* fun)();

      fun  func=NULL;
      HMODULE hMoudle;
      hMoudle=::LoadLibrary(name); //"Comdll.dll"
      if(hMoudle)
      {
      func=(fun)::GetProcAddress(hMoudle,"CreateInstance");
      if(func)
      {
      return func();

      }
      else
      {
      AfxMessageBox("func = NULL");
      }
      }
      else
      {
      AfxMessageBox("DLL faild");
      }


      return NULL;

      }
      void CCOMDlltest1Dlg::OnBnClickedOk()
      {
      // TODO: 在此添加控件通知處理程序代碼
      //OnOK();

      char buf[30];
      sprintf(buf,"%s","Comdll.dll");

      IUnknown *pi=CallCreateInstance(buf);
      IX * ix;

      pi->QueryInterface(IID_IX,(void **)&ix);
      CString str;
      str.Format("%ld",ix->fx());
      MessageBox(str);

      //typedef 
      }


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多