首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递“this”指针到MouseProc of SetWindowsHookEx

传递“this”指针到MouseProc of SetWindowsHookEx
EN

Stack Overflow用户
提问于 2019-04-16 15:50:19
回答 2查看 592关注 0票数 1

通常,每当我们想在C++对象中包装窗口/线程时,我们都会通过窗口的SetWindowLong/GetWindowLongSetProp/GetProp传递this指针,并以lpParameter形式传递CreateThread/etc。

我的问题是专门针对胡克斯的。--传递指向SetWindowsHookEx回调过程的“this”指针的优雅方法是什么,或者换句话说,如何包装钩子的回调过程?

由于SetWindowsHookEx不接受任何UserData参数,所以除了使用未封装的(即全局/静态/TLS数据)之外,我看不出有多少选项。

EN

回答 2

Stack Overflow用户

发布于 2019-04-16 16:00:16

您应该只有一个给定钩子的实例,所以全局数据不是问题。

如果您正在开发允许动态添加或删除多个钩子实例的库,请不要在OS级别添加多个钩子。相反,添加一个库级别的钩子过程,它跟踪钩子实例的列表.由于您维护此列表,您可以跟踪任何“用户数据”与您想要的每个条目。

票数 2
EN

Stack Overflow用户

发布于 2019-04-16 16:05:27

“最优雅的方法”是使用thunk。它是在运行时生成的一小部分代码,用于保存this指针。这是ATL使用的方法,即使在常规窗口中也是如此。

看见

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55712135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档