AllocateHWnd函数是如何传入消息的?AllocateHWnd函数的类型:视焦点讯
Classes单元的AllocateHWnd函数是需要传入一个处理消息的类的方法的作为参数的,原型:
(相关资料图)
functionAllocateHWnd(Method: TWndMethod): HWND;很多时候,我们想要创建一个窗口,而又不想因为这个参数而创建一个类,怎么办? 换句话说,就是能不能使传入的参数是个普通的函数而不是类的方法呢?答案是肯定的! 看看TWndMethod的声明:
type TWndMethod = procedure(var Message: TMessage) of object;
实际上类的方法在执行时,总是传入了对象这个参数。即此方法共传了两个参数,根据Delphi默认的registry调用约定,寄存器eax传递对象,edx传递Message结构变量。因此我们可以声明处理消息的函数的类型:
type TMyWndProc = procedure(AObject: TObject; var Message: TMessage);
我们自定义MyAllocateHWnd函数以接收这个类型的参数,内部调用AllocateHWnd:
function MyAllocateHWnd(Proc: TMyWndProc): HWND;asm
push 0//AObject
push Proc//Message
call AllocateHWndend;
ps:如果直接调用AllocateHwnd(Proc)是不能通过编译的!//调用示例:
var H: HWND;procedure MyWndProc(AObject: TObject; var Message: TMessage);beginif Message.Msg = WM_USER + 111 thenShowMessage("")elseMessage.Result := DefWindowProc(H, Message.Msg, Message.WParam, Message.LParam)end;procedure TForm1.FormCreate(Sender: TObject);beginH := MyAllocateHWnd(MyWndProc)end;procedure TForm1.FormDestroy(Sender: TObject);beginDeallocateHWnd(H);end;procedure TForm1.Button1Click(Sender: TObject);beginSendMessage(H, WM_USER + 111, 0, 0)end;
标签:
相关推荐:
最新新闻:
- ListView怎么优化?ListView的四种优化方式及使用方法
- 【新视野】通信网中常见的普通光缆有哪些?GYTA型光缆的结构及结构
- 【软件设计】软件易维护性的因素有哪些?-当前关注
- Apex启动器最新版怎么下载?酷派7295A青春版刷机包
- 全球球精选!火狐浏览器如何安装flash_player?安装步骤
- 天天日报丨mysql怎么批量添加卡号?mysql数据库卡号卡密批量生成写入验证
- 天天动态:序列号(Serial):SourceInsight的实用技巧
- 高频开关电源原理是什么?开瑞高频开关电源原理及增长趋势分析-世界今头条
- 【世界快播报】餐厅吊灯高度怎么调?餐厅吊灯的正确安装高度
- 三星tabs怎么样?三星GALAXYTabT805C(4G版)平板电脑评测
- 全球微动态丨如何看K线图?史上最全K线经典组合形态解析
- 全球聚焦:python多线程实现访问页面升级?python使用多线程不断刷新网页的方法
- 天天速递!IE8以上的localstorage存储内容有哪些?sessionstorage存储内容介绍
- 如何利用大数据实现精准营销?会员管理中用户数据的流转及应用解释 世界速讯
- 全球观点:国产FPS《边境》玩法公开!多地图无重力太空战斗
- AllocateHWnd函数是如何传入消息的?AllocateHWnd函数的类型:视焦点讯
- 全球热门:《口袋妖怪》精灵宝可梦let'sgo皮卡丘伊布存档修改器教程
- 1加6t是什么牌子的手机?一加手机品牌介绍_全球简讯
- 观天下!vim的智能补全方式——CTRL-N和CTRL
- 卫生间排气扇价格是多少?卫生间排气扇价格及安装
- 焦点信息:excel如何制作简版出库表?excel制作简版出库表
- JVM在字节码上怎么运用?JVM在字节码上的使用方法
- QLV格式如何转换成MP4?QLV格式转换成MP4的方法_天天最资讯
- 如何用PS制作属于自己的个性签名档?用PS制作属于自己的个性签名档教程
- 苹果8怎么查看手机常去位置?详细操作步骤:今日快讯
- 索尼a330评测详解 新款套机镜头详解
- 世界要闻:电脑启动怎么选择启动模式?解决方法在这里
- 支付宝商家收款码怎么开通?开通方法来了
- 鸿蒙os2.0系统支持机型有哪些?适配机型介绍
- 克苏鲁FPS《原谅我父亲2》Steam页面上线 暂不支持中文
- 焦点滚动:梦三国服务器每天维护几次?玩家数量逐渐减少的原因是什么?
- 全球观速讯丨育碧免费FPS《不羁联盟》4月14日开启封闭测试
- 联想平板电脑价格多少钱?联想平板电脑价格及型号:今热点
- 4月6日伦敦金属交易所(LME)铅库存26375吨 每日快看
- 【人脸表情识别】pytorch处理CK+数据集:每日简讯
- FPS+策略游戏《Silica》公布 Steam页面已上线-全球新要闻
- 环球动态:如何实现双显示器拼接?实现双显示器拼接方法
- oppo手机上面HD如何取消?oppo手机上面HD取消方法 天天资讯
- 角位移传感器怎么安装?角位移传感器安装方法详解:全球热议
- 天天快看:歪歪如何申请短位ID?歪歪语音使用文字聊天的方法
- QQ怎样绑定密保手机?QQ绑定密保手机的方法
- 如何查询电脑上的IP地址?我的ip地址查询方法
- 电脑安装xp和windows7双系统有什么区别?Xp和Win7双系统怎么安装?_全球通讯
- 世界简讯:javascript查找并且倒排序的方法 mongodb常用操作命令大全
- 毫无诚意 《魔咒之地》免费推出美甲DLC|环球新消息
- 信息:【干货】Python与STAT时间日期转换问题
- 今日热门!如何解决IE主页被劫持的问题?解决方法介绍
- 环球速讯:波导手机的价格多少?国产老牌子波导手机怎么样?
- 安卓手机下载不了软件是怎么回事?怎么解决?
- 小米13 Ultra外观曝光:爆料全中!
- 小米13 Ultra外观曝光:爆料全中!
- 森歌集成灶怎么样?三方面出发谈谈它的那些事儿 独家
- 高华科技上交所公开招股
- 小岛秀夫转发自己的《芭比》海报:谁不喜欢粉粉嫩嫩呢:天天简讯
- 《RE4RE》佣兵模式已上线 未来或加入艾达王\威斯克
- 全球观热点:XGP 5月首发游戏阵容 《红霞岛》领衔
- 谷歌Stadia服务关闭 项目负责人现已离开公司
- 【世界播资讯】《刺客信条:幻景》菜单栏截图 有令人兴奋的新功能
- 3D-Roguelite横版动作游戏《霓虹序列》Steam页面上线 4月21日发售
- 今日热讯:《守望先锋2》第四赛季预告 新英雄新皮肤新活动等
- 首届香港高等教育展4月15日举行 今日观点
- 全球看点:美国男子承认掰断偷走兵马俑手指 检方或只进行轻判
- 索尼:CMA对微软收购暴雪一案态度转变令人惊讶 太不合理!
- 天天观焦点:汾河二库开放吗(山西汾河二库是开放的吗)
- 雷蛇推出透明RGB滚轮游戏鼠标:搭载5G光学传感器 售价499元
- 环球观焦点:太极股份:拟提前赎回“太极转债”
- 百变星曜由你来定!星曜娘二创活动进入最终投票阶段
- 榨干《甄嬛传》价值?乐视将推85英寸甄嬛传限量电视
- 天天快消息!超大外屏亮眼!摩托罗拉razr 40 Ultra获认证
- 环球微资讯!首次进军海外!小米13 Ultra将全球上市
- 世界观天下!13888元起!大疆Mavic 3 Pro无人机曝光:升级三摄镜头、增加超广角
- 过半玩家从《生化危机123》开玩:你是从哪一代入坑的?
- 离谱!《最后生还者》泰丝与感染者之吻被提名:玩家很愤怒
- 继《北欧女神》之后 SE移除《三角战略》D加密 环球微资讯
- 《夏洛克·福尔摩斯:觉醒》发售宣传片公开