青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 25  文章 - 29  trackbacks - 0
<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57096
  • 排名 - 405

最新評論

閱讀排行榜

評論排行榜

??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要重用 實現2個接口? ,a,b,? 則A 繼承 a,b,并要改寫 a,b 函數,增加 a,b 2個指針,在初始化
中獲取 a,b 接口指針 ,在析構中釋放。
?? 關于類廠要注意的是,類廠guid,在客戶文件中并不需要,僅僅在組件中使用,也不進入注冊表(進程
中的組件)
?????????? 對象計數和鎖計數,其中對象計數一般可以不包含類廠
????????????????? 以這種方式來實現重用,更體現 接口的概念,
?????????????????????????? 客戶端只需要 接口頭文件, 接口iid,com類clsid
posted on 2006-07-04 16:20 黃大仙 閱讀(673) 評論(0)  編輯 收藏 引用 所屬分類: c++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩高清一区| 一区二区三区高清不卡| 亚洲精品综合在线| 91久久精品日日躁夜夜躁国产| 黄色av成人| 一区二区三区无毛| 亚洲人成在线观看| 正在播放日韩| 午夜一级久久| 蜜桃伊人久久| 亚洲精品一区二区网址| 亚洲天堂视频在线观看| 性欧美大战久久久久久久久| 久久久久久色| 欧美三级乱人伦电影| 国产一区二区三区黄视频| 在线免费不卡视频| 亚洲午夜久久久久久尤物| 久久精品国产精品亚洲| 亚洲成色999久久网站| 最新日韩精品| 久久本道综合色狠狠五月| 欧美成人免费va影院高清| 欧美午夜a级限制福利片| 国产日产亚洲精品| 一本久道久久综合中文字幕| 欧美在线亚洲一区| 亚洲精品看片| 久久综合福利| 国产精品一区久久久| 亚洲国产综合在线看不卡| 性欧美18~19sex高清播放| 欧美大片一区二区三区| 欧美一级理论性理论a| 欧美久久九九| 亚洲国产成人久久| 久久国产精品一区二区| 欧美国产视频一区二区| 性久久久久久久久久久久| 欧美日韩午夜剧场| 亚洲天堂激情| 久久精品91久久久久久再现| 欧美国产第一页| 国产精品色网| 亚洲免费观看高清完整版在线观看| 午夜精品久久久久久久白皮肤 | 99亚洲视频| 免费在线成人av| 好吊妞**欧美| 欧美在线在线| 亚洲性xxxx| 国产精品久99| 亚洲免费在线精品一区| 亚洲精品一级| 欧美日韩综合另类| 亚洲一区二区三区国产| 亚洲最新在线| 国产精品嫩草影院一区二区| 亚洲一二三区视频在线观看| 亚洲精品少妇30p| 欧美日韩一区二区三区在线观看免 | 亚洲黄色精品| 亚洲欧洲一区二区三区久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 经典三级久久| 欧美激情精品久久久久久黑人| 久久综合福利| av成人国产| 亚洲一级一区| 国产一区二区三区的电影| 免费成人黄色| 欧美精品久久99| 亚洲尤物视频网| 性欧美18~19sex高清播放| 精品成人久久| 91久久香蕉国产日韩欧美9色| 欧美日本一区| 久久精品国产第一区二区三区最新章节 | 亚洲春色另类小说| 欧美久久综合| 欧美一区二区啪啪| 久久久噜噜噜久久中文字免| 亚洲三级免费观看| 亚洲一品av免费观看| 激情欧美日韩一区| 亚洲精品在线观看免费| 国产日韩欧美一区二区三区四区| 美女诱惑一区| 国产精品久久久久久久久借妻| 久久国产婷婷国产香蕉| 男女视频一区二区| 欧美午夜视频在线| 国产精品久久久久久久久搜平片| 久久国产天堂福利天堂| 蜜臀av性久久久久蜜臀aⅴ四虎| aa级大片欧美三级| 久久gogo国模裸体人体| 亚洲美女色禁图| 欧美在线观看视频在线 | 国产精品老牛| 欧美国产91| 国产日韩一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 国产欧美一区二区三区在线老狼| 亚洲第一精品夜夜躁人人躁| 国产精品系列在线播放| 亚洲人成亚洲人成在线观看| 国产视频一区欧美| 亚洲最新在线| 亚洲精品一品区二品区三品区| 亚洲女性裸体视频| 一区二区三区久久| 欧美成人午夜激情| 蜜桃av一区二区在线观看| 国产精品一区免费视频| 亚洲人成艺术| 亚洲精品乱码久久久久久蜜桃91| 欧美诱惑福利视频| 亚洲欧美在线免费| 欧美日韩亚洲一区二| 亚洲电影免费观看高清完整版在线观看 | 亚洲第一精品夜夜躁人人躁| 国产在线视频欧美| 亚洲欧美日韩中文在线制服| 亚洲香蕉网站| 欧美日韩精品一区二区在线播放| 欧美刺激午夜性久久久久久久| 国产一区二区三区四区五区美女| 亚洲一区精品在线| 午夜精品视频网站| 国产精品青草久久久久福利99| 9色国产精品| 中文网丁香综合网| 欧美日韩国产一级| 一区二区av在线| 亚洲一区二区在线免费观看| 欧美日韩视频一区二区三区| 亚洲精选一区| 亚洲一区在线观看免费观看电影高清| 欧美裸体一区二区三区| 亚洲免费电影在线| 亚洲一区二区三区涩| 国产精品乱看| 欧美一区二区精品在线| 久久久久国产一区二区三区四区 | 欧美日韩在线三级| 在线一区二区三区四区| 午夜伦理片一区| 狠狠操狠狠色综合网| 久久精品视频在线免费观看| 欧美99在线视频观看| 亚洲欧美韩国| 国产日本精品| 久久久爽爽爽美女图片| 欧美激情一区二区三区不卡| 亚洲理论电影网| 国产精品www994| 欧美专区在线| 亚洲国产清纯| 午夜精品电影| 一色屋精品视频在线观看网站| 嫩草成人www欧美| 一区二区三区日韩在线观看| 欧美一区二区三区男人的天堂| 国内外成人免费视频| 久热re这里精品视频在线6| 亚洲精品久久久久久久久久久久| 亚洲欧美精品| 亚洲高清精品中出| 欧美午夜国产| 久久人人爽人人爽| 一区二区三区欧美在线| 老巨人导航500精品| 正在播放亚洲| 亚洲国产精品精华液2区45| 国产精品成人一区二区三区夜夜夜 | 国产欧美一区二区三区在线老狼 | 亚洲午夜高清视频| 蘑菇福利视频一区播放| 亚洲一区视频在线| 1024成人网色www| 国产精品尤物| 欧美日韩成人综合在线一区二区| 久久成人精品一区二区三区| 亚洲精品一区二区在线观看| 久久人人97超碰精品888| 亚洲视频1区| 亚洲精品一区二区三区蜜桃久| 国产婷婷色一区二区三区| 欧美日韩成人免费| 另类综合日韩欧美亚洲| 亚洲欧美制服另类日韩| 日韩视频在线观看国产| 免费观看30秒视频久久| 欧美有码在线观看视频| 亚洲免费在线| 亚洲午夜精品久久久久久浪潮| 最新日韩在线视频| 尹人成人综合网| 国产综合久久久久久|