Car*_*lho 7 delphi winapi notifications tooltip
在TLama先生回答了我的最后一个问题(如何捕获TTN_LINKCLICK通知?)之后,有一点未得到答复,因为没有问过:)
如果有多个链接,如何识别我在气球上点击的每个链接?
我希望能够在气球中包含多个链接,并以不同方式响应点击.
通知没有参数,因此您不知道单击了哪个链接.道德:如果您需要多个链接,请考虑使用比工具提示更通用的界面,例如Toast通知或对话框.
最后我设法解决了这个问题,是的,可以从工具提示中单击的链接获取信息!
\n确实没有任何官方文档谈论它,这是微软的一个大错误。我相信任何从一开始就使用 Windows 的人都已经知道答案,但是要么这些人已经死了,要么他们只是有比帮助人们解决此类问题更重要的问题,是的,解决起来非常简单。让我们解释一下...
\n有关WM_NOTIFY消息的帮助对其 lParam 参数进行了以下说明:
\n\n\n指向包含通知代码\n和附加信息的 NMHDR 结构的指针。对于某些通知消息,此参数指向一个较大的结构,该结构将 NMHDR 结构作为第一个成员。
\n
上面文本中最重要的部分是一些通知消息指向更大的结构,其第一个成员是 NMHDR。读到这里我想“嗯,在一般情况下有没有关于点击链接的消息?” 所以我用谷歌搜索“wm_notify link click”,第一个结果给出了答案:NM_CLICK
\nNM_CLICK 是一条通知消息,当用户用鼠标左键单击链接时,通过 WM_NOTIFY 发送到控件的父窗口。这里提到的链接是一个SysLink Control,MSDN 上有大量相关文档。当使用 TTF_PARSELINKS 标志时,工具提示内的文本(链接)将转换为 SysLink 控件,这是非常有意义的。
\n另外,在 NM_CLICK 文档页面上,提到了 NMLINK 结构,其中包含有关通知的其他信息。当查看有关 NMLINK 的文档时,我意识到它的第一个成员是 NMHDR,第二个成员是 LITEM ,这是一个包含有关链接信息的结构。
\n从现在开始很清楚,当涉及到 TTN_LINKCLICK 时,WM_NOTIFY 消息携带的实际上是一个 NMLINK 结构,其中包含默认的第一个成员(NMHDR)和第二个成员,其中包含我们需要了解的有关单击链接的所有信息。(精简版)。
\n现在,有了这些信息,就可以非常轻松地从单击的链接中获取信息。下面的示例仅包含 Pascal (Delphi) 伪代码,并且是处理在 TOOLINFO 的 hwnd 成员中通知的窗口中的 WM_NOTIFY 消息的方法
\nprocedure TFormPrincipal.HandleNotifyMessages(var AMessage: TWMNotify);\nvar\n Link: TNMLink;\nbegin\n if Assigned(AMessage.NMHdr) and (AMessage.NMHdr.code = TTN_LINKCLICK) then\n begin\n Link := PNMLink(AMessage.NMHdr)^;\n\n Application.MessageBox(PChar(\'O link clicado tem href="\' + Link.item.szUrl + \'" e id="\' + Link.item.szID + \'"\'),\'Sou foda!\',MB_ICONINFORMATION);\n end;\nend;\nRun Code Online (Sandbox Code Playgroud)\n最终结果如下:
\n\n单击其中一个链接时会显示消息
\n\n工具提示中包含的文本如下:
\nprocedure TFormPrincipal.HandleNotifyMessages(var AMessage: TWMNotify);\nvar\n Link: TNMLink;\nbegin\n if Assigned(AMessage.NMHdr) and (AMessage.NMHdr.code = TTN_LINKCLICK) then\n begin\n Link := PNMLink(AMessage.NMHdr)^;\n\n Application.MessageBox(PChar(\'O link clicado tem href="\' + Link.item.szUrl + \'" e id="\' + Link.item.szID + \'"\'),\'Sou foda!\',MB_ICONINFORMATION);\n end;\nend;\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |