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

隨筆 - 64, 文章 - 11, 評論 - 12, 引用 - 0
數據加載中……

ATL連接點開發總結

 

連接點語義


         第一種說法:是一種邏輯上的反饋機制,這種機制允許對象暴露其調用一個或者多個指定接口的能力

         第二種說法:QueryInterface允許客戶從對象中取得一個指向對象實現的接口指針,連接點允許客戶給予對象一個由客戶實現的接口指針.

在這種情形下:COM對象是源,客戶提供的方法是接收器.

源必須實現IConnectionPoint

 

Interface IConnectionPoint

{

         HRESULT GetConnectionInterface([out] IID *pIID);

         HRESULT GetConnectionPointContainer([out] IConnectionPointContainer** ppCPC);

         HRESULT Advise([in] IUnknnown *punkSing, [Out] DWORD *pdwCookie);

         HRESULT Unadvise([in]DWORD dwCookie);

         HREUSLT EnumConnections([out] IEnumConnections** ppEnum);

}

 

Interface IConnectionPointContainer

{

         HRESULT EnumConnectionPoints([out] IEnumConnectionPoints **ppEnum);

         HRESULT FindConnectionPoint([in] REFIID riid, [out] IConnectionPoint **ppcP);

}

 

客戶的使用方法:

IUnKnown *pSource;

ISpeakerEvent *pSink;

DWORD dwCookie;

IConnectionPointContainer pcpc;

Hr = pSource->QueryInterface(&pcpc);

IConnectionPoint pcp;

Hr = pcpc->FindConnection(__uuidof(ISpeakerEvent));

Hr = pcp->Advise(pSink,&dwCookie);

Hr = pcp->Unadvise(dwCookie);

便捷的的宏:

AtlAdivse(psource, pSink, __uuidof(ISpeakerEvent), &dwCookie);

AtlUnadvise(psource, __uuidof(ISpeakerEvent), dwCookie);

 

 

建立可連接對象的步聚:

1:實現IConnectionPointContainer接口

         Class ATL_NO_VTABLE className:

                   ….

                   Public IConnectionPointContainerImpl<className>

{…..

};

2:QueryInterfaceDIID_IConnectionPointContainer的請求作出響應

         BEGIN_COM_MAP

COM_INTERFACE_ENTRY(IConnectionPointContainer)

END_COM_MAP

 

3:我們要為每個可連接對象支持的源接口實現IConnectionPoint

                  Class ATL_NO_VTABLE className:

                   ….

                   Public IConnectionPointContainerImpl<className>,

                   Public IConnectionPointImpl<className, &DIID__對外的接口>

{…..

};

4:我們要提供一個連接映射表,也就是一個IID和連接點實現聯系起來的表.

         BEGIN_CONNECTION_POINT_MAP

                   CONNECTION_POINT_MAP_ENTRY(DIID__對外的接口)

                   ….

         END_CONNECTION_POINT_MAP()

 

5:我們必須更新可連接對象在IDL文件中coClass的定義,以便指定每個源接口.每個源接口必須具有屬性,主源接口應具有[default, source]屬性.

         Coclass 類廠名

         {……

                   [default,source] dispinterface _對外接口;

         };

6:一般來說,我們希望通過輔助方法為所有連接的接收器調用接收器方法.

         HRESULT Fire_事件(parameter)

         {

                   依次調用每個接收器的方法

         }

        

         可以使用IDE來生成連接點代理類.這樣我們的源可以從其派生,而不再從IConnectionPointImpl派生.

7:我們必須在適當的時機調用輔助方法.

 

 

建立接收事件的對象:

1:實現事件接收器.可先的方案有從

IDispEventSimpleImpl<UINT nID, class T, const IID *pdIID = &IID_NULL>

或者:

IDispEventImpl< UINT nID, class T, const IID *pdIID = &IID_NULL,

                            Const GUID*plibid= &GUID_NULL,

                            DWORD wMajor = 0, WORD wMinor = 0,

                            Class tihclass = CComTypeInfoHolder>

派生.

   例如:

   static const int DEFSOURCEID = 1;

   class CEarPolitic;

         typedef IDispEventImpl< DEFSOURCEID, CEarPolitic, &DIID__ISpeackerEvents

                            &LIBID_ATLINTERNALSLIB, LIBMAJOR,LIBMINOR> DefSource;

Class ATL_NO_VTABLE CEarPolitic

         :public DefSource

{

         ….

}

 

2:事件接收器映射表

 BEGIN_SINK_MAP(CEarPolitic)

         SINK_ENTRY_EX(source, DIID, DISPID, EventHandlerFunc)

         SINK_ENTRY_EX(source, DIID, DISPID, EventHandlerFunc, &info)

 END_SINK_MAP()

 

         例如:

         void  __stdcall OnHearPlaintiffWhisper(BSTR bstrText);//sink接口的一個方法.

  

_ATL_FUNC_INFO OnHearPlaintiffWhisper =

                   {CC_STDCALL, VT_EMPTY, 1, { VT_BSTR}};

Static const int SOURCEID = 1;

 

BEGIN_SINK_MAP(CEarPolitic)

                   SINK_ENTRY_EX(SOURCEID, DIID__對外接口, 方法的DISPID, OnHearPlaintiffWhisper)

END_SINK_MAP()

 

3:進一步實現這個回調函數.

4:把事件接收器連接到數據源

 

posted on 2008-09-30 16:01 Robertxiao 閱讀(2644) 評論(0)  編輯 收藏 引用 所屬分類: RPC/COM/ATL散談

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产综合激情| 欧美激情一区二区三区在线视频观看| 亚洲激情在线播放| 亚洲欧美bt| 国产精品xxxav免费视频| 亚洲黑丝在线| 免费成人在线视频网站| 欧美影视一区| 国产欧美一区二区三区久久人妖| aa日韩免费精品视频一| 欧美成人精品一区二区| 欧美一二三区精品| 国内精品久久久久久| 久久香蕉国产线看观看网| 欧美在线看片| 国产自产女人91一区在线观看| 欧美一区二区三区在线观看| 亚洲综合三区| 国产麻豆91精品| 久久精品亚洲| 久久久久国产精品一区| 黄色亚洲免费| 美腿丝袜亚洲色图| 久久久久久电影| 亚洲欧洲精品一区二区三区波多野1战4 | 日韩一级大片在线| 亚洲人成毛片在线播放| 欧美激情综合| 亚洲天堂男人| 亚洲字幕一区二区| 狠狠操狠狠色综合网| 乱中年女人伦av一区二区| 久久久久国产一区二区三区四区| 怡红院av一区二区三区| 亚洲国产成人午夜在线一区| 欧美日韩成人免费| 欧美一进一出视频| 久久久亚洲高清| 亚洲精品国产精品乱码不99按摩| 亚洲精品一品区二品区三品区| 国产精品久久久久久久久久妞妞| 欧美日产在线观看| 欧美一区二区三区免费在线看| 久久狠狠久久综合桃花| 亚洲国产午夜| 亚洲一区成人| 亚洲日本va在线观看| 一本色道久久综合狠狠躁的推荐| 国产视频观看一区| 亚洲精品在线观| 国产一区二区在线观看免费播放 | 午夜精品久久久久久久99樱桃 | 欧美大片在线看| 午夜欧美精品久久久久久久| 久久人人爽爽爽人久久久| 亚洲午夜av在线| 久久久久**毛片大全| 亚洲一区二区综合| 欧美成人a∨高清免费观看| 欧美有码在线观看视频| 欧美精品成人91久久久久久久| 欧美一级欧美一级在线播放| 欧美欧美天天天天操| 美日韩精品免费观看视频| 国产精品久久久久国产精品日日| 蜜桃精品久久久久久久免费影院| 国产精品第一页第二页第三页| 欧美成人午夜| 国产网站欧美日韩免费精品在线观看 | 久久久久久亚洲精品中文字幕 | 亚洲欧洲一区二区在线观看| 午夜精品电影| 午夜视频在线观看一区二区| 欧美日韩日本视频| 亚洲国产欧美在线人成| 极品少妇一区二区三区| 亚洲免费中文字幕| 亚洲一区国产视频| 欧美日产一区二区三区在线观看| 欧美成人精品在线| 黑人极品videos精品欧美裸| 亚洲欧美日韩一区二区| 午夜精品久久久久久久99樱桃| 欧美精品日韩三级| 欧美电影在线观看| 亚洲经典自拍| 欧美成人在线网站| 亚洲第一视频| 亚洲国产免费| 欧美成人免费在线视频| 亚洲黄色毛片| 亚洲肉体裸体xxxx137| 麻豆精品一区二区综合av| 久久一区二区三区超碰国产精品| 亚洲欧洲av一区二区| 欧美一区观看| 国产在线欧美| 久久综合一区| 亚洲国产欧美精品| 99re成人精品视频| 欧美日韩理论| 亚洲自拍偷拍麻豆| 欧美资源在线| 激情久久影院| 欧美激情一区二区三级高清视频| 欧美国产日韩一区二区三区| 亚洲国产精品一区二区三区| 欧美福利一区| 中文国产一区| 久久精彩视频| 在线精品亚洲| 欧美日本免费| 亚洲欧美日韩中文在线制服| 欧美一区二区三区的| 国产综合激情| 欧美精品一区二区蜜臀亚洲| 一区二区三区国产精品| 久久精品99无色码中文字幕 | 日韩亚洲视频在线| 欧美吻胸吃奶大尺度电影| 亚洲视频中文| 蜜桃伊人久久| 正在播放亚洲| 狠狠爱综合网| 欧美精品一区二区三区久久久竹菊| 99精品99久久久久久宅男| 欧美一区二区三区日韩| 亚洲第一精品电影| 欧美色图麻豆| 久久偷窥视频| 亚洲永久免费精品| 欧美激情一区二区| 欧美一级大片在线观看| 亚洲国产日韩欧美综合久久 | 欧美一级视频一区二区| 亚洲国产小视频在线观看| 欧美性猛交xxxx乱大交退制版| 欧美中文字幕精品| 亚洲人成精品久久久久| 久久视频一区二区| 亚洲调教视频在线观看| 激情欧美国产欧美| 国产精品九九久久久久久久| 免费人成精品欧美精品| 亚洲欧美综合v| 日韩午夜电影av| 欧美成人午夜激情在线| 久久国产精品久久国产精品| 一道本一区二区| 亚洲国产精品成人综合| 国产精品中文在线| 欧美午夜一区二区三区免费大片 | 国产人成精品一区二区三| 欧美喷水视频| 久久久久国产精品一区| 午夜精品久久久| 亚洲天堂网站在线观看视频| 亚洲欧洲偷拍精品| 欧美国产日韩在线| 久久久水蜜桃| 久久成人精品一区二区三区| 亚洲综合日韩| 亚洲国产成人精品女人久久久 | 欧美一区二区高清| 亚洲精选一区| 亚洲国产欧美另类丝袜| 免费看精品久久片| 久久综合久久美利坚合众国| 午夜在线视频一区二区区别| 亚洲性夜色噜噜噜7777| 99亚洲视频| 99视频国产精品免费观看| 91久久国产综合久久91精品网站| 激情五月综合色婷婷一区二区| 国产一区二区三区丝袜 | 久久久久久久成人| 久久国产精品久久国产精品| 亚洲一二三四区| 亚洲无线观看| 亚洲欧美日韩国产一区| 亚洲欧美自拍偷拍| 先锋亚洲精品| 久久精品99无色码中文字幕| 久久精品视频一| 另类酷文…触手系列精品集v1小说| 欧美亚洲一区二区三区| 欧美一区二区日韩| 另类欧美日韩国产在线| 美女视频黄 久久| 欧美成人自拍视频| 亚洲电影在线| 在线中文字幕日韩| 欧美在线啊v| 欧美jjzz| 国产精品国产三级国产普通话99| 国产精品视频一区二区高潮| 国产精品综合不卡av| 狠狠综合久久| 亚洲免费av网站| 午夜在线视频观看日韩17c|