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

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

常用鏈接

留言簿(2)

隨筆檔案

文章檔案

網頁收藏

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

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)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            欧美大片专区| 亚洲一级黄色片| 亚洲影院色无极综合| 亚洲黄网站黄| 欧美在线首页| 欧美在线免费观看| 欧美日韩一区二区三区在线看| 欧美福利视频| 1024亚洲| 久久综合九色九九| 免费观看成人www动漫视频| 国产农村妇女精品一区二区| 夜夜嗨av色一区二区不卡| 亚洲国产另类久久精品| 久久视频国产精品免费视频在线| 欧美中文在线观看| 国产精品一区二区久久| 亚洲视频一区二区| 亚洲一区二区四区| 国产精品福利网| 亚洲一区二区三区在线视频 | 欧美激情一区二区三区在线视频观看| 久久久伊人欧美| 狠狠色香婷婷久久亚洲精品| 亚洲欧美久久久| 欧美中日韩免费视频| 国产日韩欧美高清| 久久国产一区二区| 欧美成人按摩| 亚洲欧洲日产国产综合网| 女女同性精品视频| 亚洲精品中文字幕女同| 亚洲天堂av电影| 国产精品成人午夜| 欧美一级片一区| 蜜乳av另类精品一区二区| 亚洲国产你懂的| 欧美连裤袜在线视频| 这里是久久伊人| 久久久久国产精品厨房| 亚洲成人在线| 欧美女同在线视频| 午夜精品久久久久久久| 免费在线欧美黄色| 在线亚洲成人| 国产一区二区精品久久91| 久久久久久色| 亚洲免费av电影| 久久xxxx| 日韩视频不卡中文| 国产日本欧洲亚洲| 欧美高清视频一区二区| 亚洲免费电影在线| 久久九九精品99国产精品| 亚洲国产日韩一区| 国产精品成人在线观看| 久久久久久久久伊人| 亚洲久久一区二区| 久久九九99视频| 中文国产一区| 红桃视频国产一区| 欧美午夜不卡在线观看免费| 久久久久久电影| 一区二区三区免费在线观看| 美玉足脚交一区二区三区图片| 99精品欧美一区二区三区综合在线| 国产精品国产三级国产普通话蜜臀| 久久久成人网| 亚洲午夜在线| 最新中文字幕一区二区三区| 午夜欧美精品久久久久久久| 亚洲国产高清一区| 国产亚洲激情| 国产精品r级在线| 欧美电影免费| 久久久99精品免费观看不卡| 亚洲午夜伦理| 亚洲精品视频二区| 欧美激情第六页| 久久精品免费播放| 亚洲欧美中文日韩v在线观看| 亚洲精品一区二区三区婷婷月 | 国产亚洲免费的视频看| 欧美看片网站| 久热re这里精品视频在线6| 午夜精品成人在线视频| 一本色道久久综合亚洲精品不卡| 欧美激情bt| 老司机一区二区三区| 久久精品色图| 欧美在线看片| 欧美一级理论片| 亚洲综合电影一区二区三区| 9色porny自拍视频一区二区| 亚洲精品1234| 亚洲破处大片| 亚洲美女中出| 日韩午夜高潮| 国产精品99久久久久久人| 日韩午夜在线| 夜夜嗨av一区二区三区四区| 亚洲欧洲一区二区三区在线观看| 影音先锋中文字幕一区| 韩国欧美一区| 国产综合一区二区| 好吊妞**欧美| 在线看日韩av| 亚洲免费观看高清完整版在线观看| 亚洲国产欧美在线人成| 亚洲国产aⅴ天堂久久| 最新国产乱人伦偷精品免费网站| 亚洲第一页在线| 亚洲黄一区二区三区| 日韩写真视频在线观看| 在线视频亚洲| 午夜在线电影亚洲一区| 欧美一级播放| 模特精品裸拍一区| 亚洲国产乱码最新视频| 亚洲精品一级| 亚洲图色在线| 久久se精品一区二区| 美女主播视频一区| 欧美激情一区在线| 国产精品扒开腿做爽爽爽视频| 国产精品免费观看在线| 国产亚洲二区| 亚洲精品激情| 午夜精品久久久久久99热| 久久―日本道色综合久久| 欧美激情第六页| 亚洲图片在线| 久久精品国产精品亚洲精品| 欧美黄色日本| 国产欧美精品一区二区色综合 | 亚洲最新中文字幕| 欧美亚洲一区二区三区| 老色鬼精品视频在线观看播放| 亚洲电影成人| 亚洲一区二区在线看| 久久久久久久久伊人| 欧美日韩一区综合| 激情六月婷婷久久| 亚洲视频一区二区在线观看| 久久久久久久网| 亚洲免费成人| 久热国产精品| 国产精品综合色区在线观看| 亚洲日韩欧美视频一区| 久久国产精品网站| 亚洲精品视频在线播放| 久久久久www| 国产精品一区二区久久| 亚洲精品一区二区在线观看| 久久精品国产在热久久| 亚洲日韩欧美视频| 久久精品1区| 国产九九精品视频| 一区二区三区视频在线播放| 久久综合九色| 亚洲欧美日韩综合一区| 欧美日韩综合在线| 亚洲精品视频在线播放| 久久综合九色综合久99| 亚洲无限av看| 欧美日韩在线播放一区| 91久久国产综合久久91精品网站| 欧美在线啊v| 亚洲视频在线视频| 欧美色欧美亚洲另类二区 | 夜夜嗨av色一区二区不卡| 蜜桃久久av| 欧美一区二区精品| 国产精品有限公司| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久在线免费观看视频| 亚洲视频高清| 欧美三区不卡| 在线视频欧美日韩| 最新国产乱人伦偷精品免费网站| 久久青草久久| 影音先锋日韩有码| 米奇777超碰欧美日韩亚洲| 欧美在线视频a| 国产字幕视频一区二区| 久久久国产精品一区| 香蕉av福利精品导航| 国产亚洲精品bv在线观看| 欧美一区二区三区四区在线观看 | 欧美一级精品大片| 国产热re99久久6国产精品| 欧美一级一区| 午夜国产精品视频免费体验区| 国产精品普通话对白| 亚洲欧美综合另类中字| 亚洲欧美日韩一区二区| 国产一区二区三区在线观看网站| 久久精品欧美日韩精品| 久久久国产精品亚洲一区 | 欧美在线观看www|