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

隨筆 - 42  文章 - 3  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(2)

隨筆檔案

文章檔案

網(wǎng)頁收藏

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

Recently, I have read Inside COM, it is not my first time to read it. But still I got some useful information from it.

First of all, rather than inheriting, Containment and Aggregation are the two methods COM used to achieve reusability.
Aggregation is the specialized form of Containment, in which the programmer doesn’t have to implement code in the outer component to forward/delegate a call to the inner component and hence makes the life of a programmer easier. In Aggregation, the outer component hands over the control of the interface, which is being implemented by the inner component, to the client directly and the outer component gets out of the picture. In Aggregation, the interface to the inner component is exposed directly to the client, which is in contrast with the Containment. The outer IUnknown and the Inner IUnknown will be having the different implementation of the QueryInterface and hence it violates the basic QueryInterface rules. To forward/delegate calls to the outer IUnknown, the inner component needs the outer component’s IUnknown interface pointer. The outer component passes its IUnknown interface pointer at the time of creating the inner component. The outer component calls CoCreateInstance and passes its IUnknown pointer in the second argument of CoCreateInstance. If this parameter is non-NULL, then the component is being aggregated, otherwise the component is not aggregated.

Secondly, The IDispatch interface was initially designed to support Automation. It provides a late-binding mechanism to access and retrieve information about an object's methods and properties.In addition to the methods inherited from IUnknown, server developers must implement the following methods within the class definition of each object that is exposed:
  • GetTypeInfoCount returns the number of type descriptions for the object. For objects that support IDispatch, the type information count is always one.
  • GetTypeInfo retrieves a description of the object's programmable interface.
  • GetIDsOfNames maps the name of a method or property to a DISPID, which is later used to invoke the method or property.
  • Invoke calls one of the object's methods, or gets or sets one of its properties.

When the client need to call the method provide by the server, and the code is like this:

 

 1HRESULT hret=CoInitialize(NULL); assert(SUCCEEDED(hret));
 2    CComPtr<IDispatch> ptr;
 3
 4    ptr.CoCreateInstance(L"InternetExplorer.Application");
 5      if(ptr==0{ wprintf(L"Unable to create Application\n"); return 1; }
 6    
 7    wchar_t *array=L"GoHome";
 9    long id;
10    hret=ptr->GetIDsOfNames(IID_NULL,&array,1,LOCALE_SYSTEM_DEFAULT,&id);
11    assert(SUCCEEDED(hret));
12    
13    DISPPARAMS noparams;  memset(&noparams,0,sizeof(noparams));
14    
15    hret=ptr->Invoke(id,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,&noparams,NULL,NULL,NULL);   
18    CoUninitialize();    return 0;
19

Third, Connection Points, Com’s Observer Pattern
-Based on Callbacks
-COM-Object can have one or more event sources
-Per event source may be one or more subscribed event sink
-asynchronous communication between a server and its clients

//Client
class myEventSink : public EventSink
{
 void handleEvent(int arg)
 { cout << “myEventHandler” << arg << endl; }
};

//Server
[ object, uuid(…) }
interface IEventSource : IUnknown
{
 HRESULT Attach( [in] IEventSink* PEveSink);
};

Protocol
IConnectionPointContainer::FindConnectionPoint
IConnectionPoint::Advise       //passing sink interface pointer, receiving cookie
IConnectionPoint::Unadvice    //terminates notification

 

posted on 2012-03-04 22:08 鷹擊長空 閱讀(1255) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产日韩精品在线播放| 国产欧美日本一区二区三区| 136国产福利精品导航网址| 欧美在线国产精品| 西瓜成人精品人成网站| 国产综合久久久久久鬼色| 久久激情综合网| 午夜久久黄色| 尹人成人综合网| 最新国产精品拍自在线播放| 乱码第一页成人| 99热在这里有精品免费| 在线亚洲高清视频| 国产在线精品二区| 亚洲激情视频网站| 国产精品久久久久99| 久久精品二区| 欧美高清不卡| 亚洲欧美日韩在线观看a三区| 欧美一区二区三区在线播放| 亚洲国产cao| 亚洲最快最全在线视频| 国产视频综合在线| 亚洲福利视频二区| 国产精品欧美日韩久久| 免费视频一区二区三区在线观看| 欧美激情一区二区在线 | 欧美极品欧美精品欧美视频| 亚洲在线免费视频| 久久亚洲色图| 亚洲欧美成人网| 蜜乳av另类精品一区二区| 亚洲尤物影院| 老司机精品视频一区二区三区| 亚洲视频中文| 久久亚洲二区| 久久精品91| 欧美午夜精品一区二区三区| 美女脱光内衣内裤视频久久影院| 欧美日韩免费视频| 欧美搞黄网站| 国产一区二区毛片| 亚洲视频视频在线| 亚洲精品美女久久7777777| 午夜在线视频观看日韩17c| 一区二区三区国产精品| 久久综合色综合88| 久久久五月天| 国产偷自视频区视频一区二区| 亚洲精品亚洲人成人网| 亚洲高清视频在线观看| 欧美呦呦网站| 欧美一级久久久| 国产精品成人v| 亚洲精品欧美日韩专区| 亚洲国产婷婷香蕉久久久久久99| 欧美一区二区三区日韩| 亚洲欧美另类国产| 国产精品久久91| 亚洲精品国产精品国自产观看| 亚洲高清免费| 久久婷婷久久| 欧美h视频在线| 亚洲高清视频的网址| 久久久国产精品亚洲一区 | 亚洲国产美国国产综合一区二区| 午夜欧美不卡精品aaaaa| 欧美一二三区精品| 国产精品一区二区在线观看网站| 中文网丁香综合网| 亚洲欧洲av一区二区三区久久| 国产精品久久久久久福利一牛影视| 亚洲欧洲一区二区天堂久久| 亚洲美女中文字幕| 欧美日韩一区二区三区四区五区| 日韩午夜在线| 亚洲欧美三级伦理| 国产欧美精品在线播放| 欧美伊人久久大香线蕉综合69| 久久婷婷影院| 亚洲第一二三四五区| 欧美wwwwww| 在线亚洲伦理| 久久久www成人免费精品| 激情亚洲成人| 欧美成人中文字幕| 夜夜嗨av色一区二区不卡| 亚洲一区二区三区高清| 国产日产亚洲精品| 久久久噜噜噜久噜久久| 亚洲区中文字幕| 午夜精品久久久久久久99黑人| 国产区在线观看成人精品| 久久久久久久久一区二区| 亚洲电影下载| 亚洲综合日本| 黄色成人小视频| 欧美日韩成人在线播放| 亚洲男人第一网站| 欧美电影在线播放| 亚洲午夜激情免费视频| 国产在线欧美日韩| 欧美精品一区二区三区蜜桃| 亚洲一区亚洲| 亚洲成人在线网站| 久久av老司机精品网站导航| 亚洲二区三区四区| 国产精品免费aⅴ片在线观看| 久久久噜噜噜久久| 亚洲尤物在线| 亚洲第一福利在线观看| 欧美一区91| 亚洲精品激情| 久久久久久久欧美精品| 一区二区欧美激情| 国产亚洲成人一区| 欧美日韩午夜剧场| 久久综合伊人77777麻豆| 亚洲午夜伦理| 亚洲免费av网站| 美女主播视频一区| 久久国产精品99国产| 在线亚洲一区二区| 最新69国产成人精品视频免费| 国产精品卡一卡二卡三| 欧美日韩精品在线观看| 久久在线91| 久久免费黄色| 久久精品视频播放| 欧美亚洲日本网站| 午夜精品福利电影| 亚洲无吗在线| 在线视频精品一区| 亚洲精品亚洲人成人网| 亚洲国产婷婷香蕉久久久久久| 久久亚洲综合| 久久久久这里只有精品| 欧美在线你懂的| 欧美在线视频一区二区| 欧美一区亚洲一区| 欧美一区二区日韩一区二区| 亚洲影院一区| 亚洲欧美成人在线| 午夜精品视频在线| 性18欧美另类| 欧美一区二区三区四区视频| 欧美一级视频免费在线观看| 欧美一级专区免费大片| 性18欧美另类| 久久久久女教师免费一区| 久久精品免视看| 久久久www成人免费无遮挡大片| 久久国产精品黑丝| 久久最新视频| 欧美电影免费| 亚洲精品欧美日韩| 亚洲少妇自拍| 欧美一区影院| 久久久久久九九九九| 免费在线观看一区二区| 欧美人妖在线观看| 国产精品久久一卡二卡| 国产一级揄自揄精品视频| 激情视频一区| 亚洲精品欧美激情| 亚洲欧美另类中文字幕| 欧美一区二区三区在线观看| 久久在线视频| 亚洲高清不卡在线| 亚洲视频狠狠| 久久人人爽人人| 欧美人与性禽动交情品| 国产精品入口夜色视频大尺度 | 国产精品一区久久久| 极品少妇一区二区| 一本色道久久88综合亚洲精品ⅰ | 亚洲国产小视频| 一区二区三区色| 久久久久国产精品麻豆ai换脸 | 中日韩午夜理伦电影免费| 亚洲欧美日产图| 欧美大胆成人| 亚洲一级高清| 欧美成人乱码一区二区三区| 欧美小视频在线观看| 在线高清一区| 午夜日韩电影| 亚洲区中文字幕| 久久九九热re6这里有精品| 欧美jizzhd精品欧美巨大免费| 国产精品白丝av嫩草影院| 在线观看不卡| 欧美主播一区二区三区| 亚洲破处大片| 久久免费精品视频| 国产婷婷一区二区| 亚洲一区二区毛片| 亚洲国产一区二区三区青草影视| 欧美亚洲在线播放| 国产精品久久久99|