亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++事件處理中__event與__raise關鍵字的用法講解

2020-05-23 14:08:58
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++事件處理中__event與__raise關鍵字的用法,是C++入門學習中的基礎知識,需要的朋友可以參考下
 

__event
聲明事件。
語法

   __event    method-declarator   ;__event __interface interface-specifier;__event member-declarator;

備注
關鍵字 __event 可應用于方法聲明、接口聲明或數據成員聲明。但是,不能使用 __event 關鍵字限定嵌套類的成員。
根據您的事件源和接收器是本機 C++、COM 還是托管 (.NET Framework),您可使用下列構造作為事件:

C++事件處理中__event與__raise關鍵字的用法講解

在事件接收器中使用 __hook 可將處理程序方法與事件方法關聯。請注意,使用 __event 關鍵字創建一個事件之后,將在調用此事件時調用后來掛鉤到它的所有事件處理程序。
__event 方法聲明不能具有定義;定義是隱式生成的,因此可將事件方法當做任何普通方法一樣調用。
System_CAPS_note注意
模板類或結構不能包含事件。
本機事件
本機事件是方法。返回類型通常是 HRESULT 或 void,但可以是任何整型(包括 enum)。當事件使用整數返回類型時,如果事件處理程序返回非零值,則會定義錯誤條件,在這種情況下,引發的事件將調用其他委托。

// Examples of native C++ events:__event void OnDblClick();__event HRESULT OnClick(int* b, char* s);

有關代碼示例,請參閱本機 C++ 中的事件處理。
COM 事件
COM 事件是接口。事件源接口中的方法的參數應為 in 參數(但這不是強制要求的),因為 out 參數在多播時無用。如果使用 out 參數,則將發出 1 級警告。
返回類型通常是 HRESULT 或 void,但可以是任何整型(包括 enum)。當事件使用整數返回類型并且事件處理程序返回非零值時,這是錯誤情況,此時引發的事件將中止對其他委托的調用。請注意,編譯器會自動將一個事件源接口標記為生成的 IDL 中的源。
COM 事件源的 __event 之后始終需要 __interface 關鍵字。

// Example of a COM event:__event __interface IEvent1;

有關代碼示例,請參閱 COM 中的事件處理。
托管事件
有關新語法中的編碼事件的信息,請參閱event(C++ 組件擴展)。
托管事件是數據成員或方法。當與事件一起使用時,委托的返回類型必須符合公共語言規范。事件處理程序的返回類型必須與委托的返回類型匹配。有關委托的詳細信息,請參閱 __delegate。如果托管事件是數據成員,則其類型必須是指向委托的指針。
在 .NET Framework 中,您可以將數據成員視為方法本身(即,其對應委托的 Invoke 方法)。您必須預定義用于聲明托管事件數據成員的委托類型。相反,如果尚未定義對應的托管委托,則托管事件方法將隱式定義它。例如,您可以將事件值(如 OnClick)聲明為下面所示的事件:

// Examples of managed events:__event ClickEventHandler* OnClick; // data member as event__event void OnClick(String* s); // method as event

隱式聲明托管事件時,您可以指定添加或移除添加或移除事件處理程序時將調用的 add 和 remove 訪問器。您還可以定義從類外部調用(引發)事件的方法。
示例:本機事件

// EventHandling_Native_Event.cpp// compile with: /c[event_source(native)]class CSource {public:  __event void MyEvent(int nValue);};

示例:COM 事件

// EventHandling_COM_Event.cpp// compile with: /c#define _ATL_ATTRIBUTES 1#include <atlbase.h>#include <atlcom.h>[ module(dll, name="EventSource", uuid="6E46B59E-89C3-4c15-A6D8-B8A1CEC98830") ];[ dual, uuid("00000000-0000-0000-0000-000000000002") ]__interface IEventSource {  [id(1)] HRESULT MyEvent();}; [ coclass, uuid("00000000-0000-0000-0000-000000000003"), event_source(com) ]class CSource : public IEventSource {public:  __event __interface IEventSource;  HRESULT FireEvent() {   __raise MyEvent();   return S_OK;  }};

示例:托管事件

// EventHandling_Managed_Event.cpp// compile with: /clr:oldSyntax /cusing namespace System;[event_source(managed)]public __gc class CPSource {public:  __event void MyEvent(Int16 nValue);};

將特性應用于事件時,您可以指定特性應用于生成的方法還是生成的委托的 Invoke 方法。默認值 (event:) 用于將特性應用于事件。

// EventHandling_Managed_Event_2.cpp// compile with: /clr:oldSyntax /cusing namespace System;[attribute(All, AllowMultiple=true)]public __gc class Attr {};public __delegate void D();public __gc class X {public:  [method:Attr] __event D* E;  [returnvalue:Attr] __event void noE();};


__raise
強調一個事件的調用站點。

__raise method-declarator;

備注
在托管代碼中,事件只能從定義它的類中引發。
說明
模板類或結構不能包含事件。
示例

 // EventHandlingRef_raise.cppstruct E {  __event void func1();  void func1(int) {}  void func2() {}  void b() {   __raise func1();   __raise func1(1); // C3745: 'int Event::bar(int)':              // only an event can be 'raised'   __raise func2();  // C3745  }};int main() {  E e;  __raise e.func1();  __raise e.func1(1); // C3745  __raise e.func2();  // C3745}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99国产精品久久久久久久久| 亚洲欧美日韩国产中文| 日韩欧美高清在线视频| 中文字幕自拍vr一区二区三区| 欧美人与性动交| 色哟哟入口国产精品| 亚洲精品电影网在线观看| 亚洲欧洲偷拍精品| 国产精品第一第二| 亚洲一区二区三区四区在线播放| 日韩亚洲精品电影| 亚洲综合精品一区二区| 不卡av电影院| 国产亚洲精品美女久久久久| 亚洲**2019国产| 韩剧1988在线观看免费完整版| 日韩av在线最新| 亚洲人精品午夜在线观看| 欧美日韩国产丝袜美女| 亚洲精品视频免费在线观看| 久久香蕉频线观| 精品国偷自产在线| 亚洲精品国产精品国自产在线| 亚洲精品资源在线| 成人美女av在线直播| 国产精品扒开腿爽爽爽视频| 亚洲第一偷拍网| 精品国产成人av| 久久久久久中文字幕| 欧美最顶级的aⅴ艳星| 91精品久久久久久久久久久久久| 欧美大荫蒂xxx| 性欧美办公室18xxxxhd| 亚洲人成电影网站色www| 久久久久久久久久久网站| 久久久国产一区| 久久国产天堂福利天堂| 欧美专区日韩视频| 亚洲精品久久久久| 欧美成人免费小视频| 亚洲欧美激情精品一区二区| 亚洲亚裔videos黑人hd| 精品国产拍在线观看| 国产女人精品视频| 成人午夜在线影院| 92国产精品视频| 日韩欧美在线看| 国外视频精品毛片| 亚洲毛片在线免费观看| 国内精品小视频在线观看| 午夜精品一区二区三区在线视| 欧美国产欧美亚洲国产日韩mv天天看完整| 在线精品国产成人综合| 亚洲人成在线播放| 国产精品揄拍500视频| 欧美亚洲国产日韩2020| 97精品国产97久久久久久春色| 欧美精品一区二区三区国产精品| 国产精品免费久久久久影院| 一个人www欧美| 91精品国产综合久久香蕉最新版| 日本精品va在线观看| 久久久精品免费| 国产亚洲精品激情久久| 少妇高潮 亚洲精品| 国产亚洲精品成人av久久ww| 91精品免费视频| 日韩有码片在线观看| 日韩网站免费观看高清| 亚洲女在线观看| 亚洲第一页中文字幕| 久久影院资源站| 亚洲午夜小视频| 国产成人a亚洲精品| 亚洲女同性videos| 欧美成人精品不卡视频在线观看| 国产精品扒开腿做爽爽爽视频| 成人精品久久av网站| 国产欧美日韩精品在线观看| 97在线免费观看视频| 97在线观看免费| 亚洲精品自在久久| 亚洲网址你懂得| 欧美成人精品一区| 久久九九精品99国产精品| 91精品久久久久久久久| 色噜噜国产精品视频一区二区| 久久久久久久久爱| 国产精品2018| 精品电影在线观看| 欧洲成人免费aa| 日韩精品免费视频| 成人妇女免费播放久久久| 亚洲品质视频自拍网| 色哟哟亚洲精品一区二区| 久久精品欧美视频| 亚洲香蕉av在线一区二区三区| 91在线视频一区| 91网站在线免费观看| 日韩av在线高清| 精品精品国产国产自在线| 26uuu另类亚洲欧美日本一| 亚洲国产女人aaa毛片在线| 中文字幕日韩精品有码视频| 81精品国产乱码久久久久久| 国产丝袜一区视频在线观看| 91网站免费看| 亚洲成人av片| 亚洲国产精品人人爽夜夜爽| 中文字幕亚洲精品| 国产精品va在线| 国产精品久久久久9999| 中文字幕久久亚洲| 91av在线播放| 国产999精品视频| 亚洲欧洲在线观看| 欧美成人sm免费视频| 国产日韩精品一区二区| 日韩中文字幕在线视频| 亚洲国产精品嫩草影院久久| 欧美在线视频a| 午夜欧美不卡精品aaaaa| 亚洲2020天天堂在线观看| 亚洲精品视频久久| 国产成人av网址| 日韩在线一区二区三区免费视频| 97热在线精品视频在线观看| 日本欧美在线视频| 欧美插天视频在线播放| 欧美一级淫片videoshd| 成人午夜激情免费视频| 日韩欧美精品网站| 久久午夜a级毛片| 2021国产精品视频| 91夜夜未满十八勿入爽爽影院| 亚洲日本欧美日韩高观看| 国产人妖伪娘一区91| 国产精品一区二区三区免费视频| 8x海外华人永久免费日韩内陆视频| 在线精品视频视频中文字幕| 日韩在线资源网| 欧美一区二区大胆人体摄影专业网站| 91精品国产91久久久久久不卡| 丝袜亚洲另类欧美重口| 超碰91人人草人人干| 亚洲欧洲国产精品| 亚洲欧美日韩另类| 精品久久久久久电影| 国产欧美一区二区三区久久| 超碰精品一区二区三区乱码| 欧美激情图片区| 国语自产精品视频在免费| 国产精品劲爆视频| 97视频免费观看| 午夜精品一区二区三区视频免费看| 亚洲性视频网站| 亚洲女成人图区| 欧美专区在线观看| 国产又爽又黄的激情精品视频| 久久偷看各类女兵18女厕嘘嘘| 亚洲午夜国产成人av电影男同| 26uuu日韩精品一区二区| 国产欧美日韩专区发布| 国产精品成人品|