• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 25  文章 - 29  trackbacks - 0
            <2006年7月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            常用鏈接

            留言簿(4)

            隨筆分類(22)

            隨筆檔案(25)

            文章分類(2)

            文章檔案(2)

            相冊(cè)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 56568
            • 排名 - 405

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            ??1 #pragma?once
            ??2 static ? const ?GUID?CLSID_mydiv? = ?
            ??3 {? 0x41443b3 ,? 0xe38f ,? 0x403d ,? {? 0xad ,? 0xe7 ,? 0x64 ,? 0x6e ,? 0x16 ,? 0x67 ,? 0x10 ,? 0x77 ?} ?} ;
            ??4 // ?{977CF9DA-1373-4534-B70B-A1897BD33C7C}
            ??5 static ? const ?GUID?IID_Idiv? = ?
            ??6 {? 0x977cf9da ,? 0x1373 ,? 0x4534 ,? {? 0xb7 ,? 0xb ,? 0xa1 ,? 0x89 ,? 0x7b ,? 0xd3 ,? 0x3c ,? 0x7c ?} ?} ;
            ??7
            ??8 // ?{8E8A627A-D2F8-4692-8C96-CEB9EB4734C1}
            ??9 static ? const ?GUID?CLSID_mydivfactory? = ?
            ?10 {? 0x8e8a627a ,? 0xd2f8 ,? 0x4692 ,? {? 0x8c ,? 0x96 ,? 0xce ,? 0xb9 ,? 0xeb ,? 0x47 ,? 0x34 ,? 0xc1 ?} ?} ;
            ?11 // ??[7/4/2006?hyk]
            ?12 ///////////////////////////////// Cmydiv?包容了?IAdd,ISubcat?接口
            ?13 // ??[7/4/2006?hyk]
            ?14
            ?15 extern ?? int ?m_comobjnum;
            ?16 extern ?? int ?m_lock;
            ?17 class ?Idiv: public ?IUnknown
            ?18 {
            ?19 public :
            ?20 ???? virtual ? int ?__stdcall?div( int , int ) = 0 ;
            ?21 ???? /* virtual?int?__stdcall?add(int,int)=0;
            ?22 ????virtual?int?__stdcall?sub(int,int)=0; */

            ?23 protected :
            ?24 private :
            ?25 }
            ;
            ?26 class ?Cmydiv: public ?Idiv, public ?IAdd, public ?ISubcat
            ?27 {
            ?28 public :
            ?29 ????Cmydiv()
            ?30 ???? {
            ?31 ????????m_ref = 0 ;
            ?32 ????????m_comobjnum ++ ;
            ?33 ????????padd = NULL;
            ?34 ????????psubcat = NULL;
            ?35 ????}

            ?36 ???? ~ Cmydiv()
            ?37 ???? {
            ?38
            ?39 ????????padd -> Release();
            ?40 ???
            ?41 ????????
            ?42 ????????psubcat -> Release();
            ?43 ????????m_comobjnum -- ;
            ?44
            ?45
            ?46 ????}

            ?47 ????HRESULT?init()
            ?48 ???? {??
            ?49 ????????HRESULT?hr = ::CoCreateInstance(CLSID_myadd,NULL,CLSCTX_INPROC_SERVER,IID_IAdd,( void ** ) & padd);
            ?50 ???????? if ?(FAILED(hr))
            ?51 ???????? {
            ?52 ????????????? return ?E_FAIL;
            ?53 ????????}

            ?54 ???????? // hr=::CoCreateInstance(CLSID_myadd,NULL,CLSCTX_INPROC_SERVER,IID_ISubcat,(void**)&psubcat);
            ?55 ????????hr == padd -> QueryInterface(IID_ISubcat,( void ** ) & psubcat);
            ?56 ???????? if ?(FAILED(hr))
            ?57 ???????? {
            ?58 ???????????? return ?E_FAIL;
            ?59 ????????}

            ?60 ???????? return ?S_OK;
            ?61 ????}

            ?62 ????HRESULT?__stdcall?QueryInterface(REFIID?riid,? void ? ** ppvObject)
            ?63 ???? {
            ?64 ???????? if ?(riid == IID_IAdd)
            ?65 ???????? {
            ?66 ????????????????? * ppvObject = padd;
            ?67 ?????????????????AddRef();
            ?68 ????????????????? return ?S_OK;
            ?69 ????????}
            else ? if ?(riid == IID_ISubcat)
            ?70 ???????? {
            ?71 ?????????????????? * ppvObject = psubcat;
            ?72 ?????????????????? return ?S_OK;
            ?73 ????????}
            else ? if ?(riid == IID_Idiv)
            ?74 ???????? {
            ?75 ???????????? * ppvObject = (Idiv? * ) this ;
            ?76 ???????????? return ?S_OK;
            ?77
            ?78 ????????}
            else ? if ?(riid == IID_IUnknown)
            ?79 ???????? {
            ?80 ???????????? * ppvObject = (Idiv? * ) this ;
            ?81 ???????????? return ?S_OK;
            ?82 ????????}

            ?83 ???????? else
            ?84 ???????????? return ?E_FAIL;
            ?85 ????}

            ?86 ????ULONG??__stdcall?AddRef()
            ?87 ???? {
            ?88 ???????? // cout<<"\n"<<typeid(*this).name();
            ?89 ???????? ++ m_ref;
            ?90 ????????cout << " \n?Cmydiv?object?ref?count?++= " << m_ref;
            ?91 ???????? return ?m_ref;
            ?92 ????}

            ?93 ????ULONG??__stdcall?Release()?????????
            ?94 ???? {
            ?95 ???????? // cout<<"\n"<<typeid(*this).name();
            ?96 ???????? -- m_ref;
            ?97 ????????cout << " \n?Cmydiv?object?ref?count?--= " << m_ref;
            ?98 ???????? if ?(m_ref == 0 )
            ?99 ???????? {
            100 ????????????delete? this ;
            101 ????????????cout << " \n?object?delete " ;
            102 ????????}

            103 ???????? return ?m_ref;
            104 ????}

            105 ???? int ?__stdcall?add( int ?a?, int ?b?)
            106 ???? {
            107 ????????????? return ??padd -> add(a,b);
            108 ????}

            109 ???? int ?__stdcall?sub( int ?a, int ?b?)
            110 ???? {
            111 ???????????????? return ??psubcat -> sub(a,b);
            112 ????}

            113 ???? int ?__stdcall?div( int ?a, int ?b)
            114 ???? {
            115 ???????? return ?a / b;
            116 ????}

            117 protected :
            118 private :
            119 ???? int ?m_ref;
            120 ????IAdd? * ?padd;
            121 ????ISubcat? * ?psubcat;
            122 }
            ;
            123 class ??Cmydivfactory: public ?IClassFactory
            124 {
            125 public :
            126 ????Cmydivfactory()
            127 ???? {
            128 ????????m_ref = 0 ;
            129 ????????
            130 ????}

            131 ???? ~ Cmydivfactory()
            132 ???? {
            133
            134 ????}

            135 ??????HRESULT?__stdcall?QueryInterface(REFIID?riid,? void ? ** ppvObject)
            136 ?????? {
            137 ?????????? if ?(riid == IID_IClassFactory)
            138 ?????????? {
            139 ?????????????? * ppvObject = (IClassFactory * ?) this ;
            140 ??????????????AddRef();
            141 ?????????????? return ?S_OK;
            142 ??????????}
            else
            143 ?????????? return ?E_NOINTERFACE;
            144 ?????????????
            145 ??????}

            146 ??????ULONG?__stdcall?AddRef()
            147 ?????? {
            148 ?????????? ++ m_ref;
            149 ?????????? return ?m_ref;
            150
            151 ??????}

            152 ??????ULONG?__stdcall?Release()
            153 ?????? {
            154 ?????????? -- m_ref;
            155 ?????????? if ?( ! m_ref)
            156 ?????????? {
            157 ??????????????delete? this ;
            158 ??????????}

            159 ?????????? return ?m_ref;
            160 ??????}

            161 ??????HRESULT?__stdcall?CreateInstance(IUnknown? * ?pUnknownOuter,? const ?IID & ?iid,? void ? ** ppv)
            162 ?????? {
            163 ????????Cmydiv?? * ?pObj;???
            164 ??????????HRESULT?hr;
            165
            166 ?????????? * ppv = NULL;
            167 ??????????hr = E_OUTOFMEMORY;
            168 ?????????? if ?(NULL? != ?pUnknownOuter)
            169 ?????????????? return ?CLASS_E_NOAGGREGATION;
            170
            171 ?????????? // Create?the?object?passing?function?to?notify?on?destruction.
            172 ??????????pObj = new ?Cmydiv;
            173 ?????????? if ?(NULL == pObj)
            174 ?????????????? return ?hr;???
            175 ????????????????hr = pObj -> init();
            176 ???????????????? if ?(FAILED(hr))
            177 ???????????????? {
            178 ???????????????????? return ?hr;
            179 ????????????????}

            180 ?????????? // Obtain?the?first?interface?pointer?(which?does?an?AddRef)
            181 ??????????hr = pObj -> QueryInterface(iid,?ppv);
            182
            183 ?????????? if ?(hr? != ?S_OK)? {
            184 ?????????????? // Kill?the?object?if?initial?creation?or?FInit?failed.
            185 ??????????????m_comobjnum? -- ;? // ?Reference?count?g_cDictionary?be?added?in?constructor
            186 ??????????????delete?pObj;
            187 ??????????}

            188
            189 ?????????? return ?hr;???
            190 ??????}

            191 ??????HRESULT?__stdcall?LockServer(BOOL?fLock)
            192 ?????? {
            193 ?????????? if ?(fLock)
            194 ?????????? {
            195 ??????????????m_lock ++ ;
            196 ??????????}
            else
            197 ??????????????m_lock -- ;
            198 ?????????? return ?S_OK;
            199 ??????}

            200 protected :
            201
            202 private :
            203 ???? int ?m_ref;
            204 }
            ;
            205
            ?????? A要重用 實(shí)現(xiàn)2個(gè)接口? ,a,b,? 則A 繼承 a,b,并要改寫 a,b 函數(shù),增加 a,b 2個(gè)指針,在初始化
            中獲取 a,b 接口指針 ,在析構(gòu)中釋放。
            ?? 關(guān)于類廠要注意的是,類廠guid,在客戶文件中并不需要,僅僅在組件中使用,也不進(jìn)入注冊(cè)表(進(jìn)程
            中的組件)
            ?????????? 對(duì)象計(jì)數(shù)和鎖計(jì)數(shù),其中對(duì)象計(jì)數(shù)一般可以不包含類廠
            ????????????????? 以這種方式來(lái)實(shí)現(xiàn)重用,更體現(xiàn) 接口的概念,
            ?????????????????????????? 客戶端只需要 接口頭文件, 接口iid,com類clsid
            posted on 2006-07-04 16:20 黃大仙 閱讀(665) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c++
            久久久久国产一区二区| 久久久久综合网久久| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久久久久精品免费免费自慰 | 囯产精品久久久久久久久蜜桃 | 亚洲欧美另类日本久久国产真实乱对白| 久久一本综合| 99久久免费国产精精品| 日韩AV毛片精品久久久| 2021精品国产综合久久| 午夜精品久久久久9999高清| 久久精品亚洲中文字幕无码麻豆| 国产成人精品久久综合| 亚洲AV日韩精品久久久久久久| 欧美久久综合性欧美| 亚洲精品国精品久久99热一| 精品久久久久久无码人妻热| 久久久久人妻精品一区| 久久久精品人妻一区二区三区蜜桃| 久久无码av三级| 久久精品国产网红主播| 中文字幕精品久久| 激情五月综合综合久久69| 久久精品国产亚洲AV无码偷窥| 久久久WWW成人| 精品国产91久久久久久久a | 看全色黄大色大片免费久久久| 99久久99这里只有免费费精品| 久久天天躁狠狠躁夜夜不卡| 青青国产成人久久91网| 97久久精品人妻人人搡人人玩| 一本久久a久久精品vr综合| 亚洲色欲久久久久综合网| 欧美国产成人久久精品| 久久国产视频99电影| 久久人人爽人人爽人人片AV麻豆| 国产精品99久久不卡| 久久丝袜精品中文字幕| 亚洲欧美一级久久精品| 久久天天躁狠狠躁夜夜不卡| 精品久久久久久中文字幕大豆网|