在C++Builder中定义事件
创始人
2024-02-09 06:22:13
0

在C++ BUILDER中,事件是一种委托模型,它是对消息的封装。如果你用过VC,你就知道在VC中并不存在什么事件,而只有消息处理函数,而在C++ BUILDER中则是由事件处理函数来负责响应消息。同是,事件本身也是一指针,它是一个闭包,通常在C++ BUILDER中有两种事件:通知类型事件(即TNOTIFYEVENT,对WINDOWS消息的封装)和自定义事件。除此之外,我们也知道事件是通过一个虚拟函数来点燃的,比如说ONEXIT事件是由DOEXIT虚拟函数点燃的,下面我写一个自定义事件,很明显以下我写的代码中的事件将是对WM_MYMESSAGE消息的封装。 .h File

#include <....>

.....

#define WM_MYMESSAGE WM_USER+100

typedef void __fastcall (__closure *TMyEvent)(TObject *Sender,Param1,Param2,......);

class TMyControl:public TWinControl

{

private:

TMyEvent FOnMyEvent;//保存指向事件的指针.

void __fastcall DoSomething(TMessage &Message);

public:

BEGIN_MESSAGE_MAP

VCL_MESSAGE_HANDLER(WM_MYMESSAGE,TMessage,DoSomething);

END_MESSAGE_MAP(TControl);

protected:

virtual void __fastcall DoMyEvent(Param1,........);//由这个虚拟函数来触发事件

virtual void __fastcall WndProc(TMessage &Message);

__published:

.........

__property TMyEvent OnMyEvent={read=FOnMyEvent,write=FOnMyEvent};

.....

};

.cpp File

//Omiting constructor and deconstructor

//Virtual function,which will spring the event:TMyEvent

void __fastcall TMyControl::DoMyEvent(Param1,.....)

{

if(FOnMyEvent)

{

FOnMyEvent(this,Param1,Param2,.....Paramn);

}

}

//Message Handler

void __fastcall TMyControl::DoSomething

{

//TODO:Add your code here....

}

void __fastcall TMyControl::WndProc(TMessage &Message)

{

if(Message.Msg==WM_MYMESSAGE)

{

DoMyEvent(Message.WParam,.....);

}

......

}

按照上而的代码,我们就会在OBJECT INSPECTOR中看到一个ONMYEVENT事件,和其它事件一样,用户只要将代码写到这里来就可以响应消息并根据应用的需求来给出这个事件触发时的行为,上面代码是随手写的,请各位自已加以调整。

相关内容

热门资讯

原创 魔... 盘点魔兽世界60版本黑上足以称神的5大极品装备,敢问各位大兄弟是否曾经拥有过?速看! 一:恶魔之击 ...
原创 崩... 《崩坏星穹铁道》4.5版本将复刻五星雷属性巡猎角色不死途,她主要围绕追击体系展开,既能承担队伍主C的...
前《铁拳8》总监加入原田胜弘新... 前《铁拳》系列负责人原田胜弘在离开万代南梦宫后,拉上了同样作为《铁拳》核心开发者之一的米盛祐一一起加...
原创 辅... 国服英雄战力榜,目前也就剩下一个辅助了,本文就来跟大家分析一下,对比8月2日我分享的数据,哪些英雄的...
病娇机甲少女!极端“恋爱模拟”... 如果拯救末世的代价是最依赖你的她,你还会陪在她身边吗? 《少女机师养成计划:女武神协议》是一款类似《...
乐高哈利·波特25年,哪款18... 今年的乐高“重返霍格沃茨”活动,很快又要迎来一款大体量新品。 乐高哈利·波特 76476 魔法部 –...
崩铁 x 大白兔联动!风堇、那... 星穹铁道4.5版本“挥掷千星的筹码”前瞻官宣了即将开启的联动,分别是大白兔奶糖和《绝区零》。不少崩铁...
《仁王3》DLC“庆安地狱变”... “‘仁王’系列始终不变的优势,在于高速爽快的动作体验。” Team NINJA旗下最为标志性的ARP...
《多洛可小镇》:从零开始的末日... 撰文:无铭 图片:《多洛可小镇》Steam 商店页截截图 前言 你是否想象过在末日废土世界中身体力行...
机构估算《GTA 6》预购收入... IT之家 8 月 19 日消息,大家都知道《GTA 6》很可能会打破各种纪录,但现在,围绕这款游戏的...
原创 从... 典韦这个英雄,无愧狂战士之名,形象到打法都突出一个狂野,而他的皮肤,越能契合这个特性,似乎就越能得到...
温柔强大的女孩子,居然有如此疯... 佩丽卡——她算是姬短暂的《明日方舟终末地》冒险中最喜欢的一个角色了,虽然当时她可能不如莱万汀那般输出...
盗墓笔记“联姻”逆水寒?七夕直... 马上就是七夕佳节,就在大家都沉浸在即将到来的甜蜜氛围时,网易旗下《逆水寒》手游趁着今天8月17日稻米...
逆水寒官宣《盗墓笔记》,一个 ... 每年8月17日,网络圈层总会迎来一场专属狂欢,这就是属于千万“稻米”的专属庆典——稻米节。 目前,...
《首都高赛车》制作组采访 时隔... 时隔近二十年,由日本游戏开发商元气(Genki)重启的经典赛车游戏《首都高赛车》新作已于去年推出。本...
「国服出装」“半球流”亚连彻底... 这一篇文章让我们来看一下40位国服亚连的出装铭文汇总。 推荐出装铭文 影忍之足,闪电匕首,红...
ENC延期人员或有变动,Bin... LPL第三赛段精彩赛事依旧在火热进行中,明天西安主场的对决就要开始了,常规赛最后一周,还是挺让人期待...
从561个作品看一场游戏黑客松... 朱 敏 腾讯研究院研究员 胡 璇 腾讯研究院高级研究员 今年夏天,一支三人小队用三天做出了第一版游戏...
主台度假,副台渡劫?崩铁4.5... 近日,《崩坏:星穹铁道》在4.5版本前瞻里整了一手大活儿。在8月14日前瞻当天,崩铁官号在同一时间开...
原创 明... 8月15日,网易举办《天下》18周年玩家生态大会。除了游戏本身的迭代升级、周年福利,息影22年的王祖...