本文介绍: 在开发 CuteSqlite 的时候, 有一个功能需要实现,鼠标移到 WTL::CStatic 上后,发送消息通知 CToolTipCtrl 弹出。文章介绍Windows 64 位 / 32 位如何用正确的姿势使用 GetWindowLongPtr 钩子函数。
需求描述
在开发CuteSqlite的时候, 有一个功能需要实现,鼠标移到WTL::CStatic上后,发送消息通知CToolTipCtrl弹出。
遇到问题
WTL::CStatic控件没有相应 WM_MOUSEMOVE 消息,需要返回一个HTCLIENT消息来让窗口处理函数执行 WM_MOUSEMOVE消息,因为控件实例的鼠标消息,比如WM_MOUSEMOVE不会发送到父窗口上,只会发送到它本身,所以我们不能在父窗口的消息映射里添加处理CStatic的WM_MOUSEMOVE消息处理函数。针对这种情况,我们可以通过钩子的方式hook掉CStatic的原窗口处理内部函数。
如果是开发win 32位的应用程序,这个时候需要用到两个32位的勾子函数:GetWindowLong和SetWindowLong。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。