- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
进行了大量研究,试图弄清楚如何让它正常工作。我读到如果您过滤 WM_NOTIFY -> NM_CLICK,它会捕获 syslink 的实际点击事件。问题是它捕获了事件,尽管它陷入了无休止的递归,并且在几秒钟内你有数百个浏览器窗口或链接打开为。
采取的步骤:
为 NM_CLICK 事件过滤 WM_NOTIFY
case WM_NOTIFY:
//case NM_CLICK:
switch(LOWORD(wParam))
{
case NM_CLICK:
switch(LOWORD(wParam))
{
case IDC_LINK1:
// Standard ShellExecute with added check for IsLinkCtrl to make sure its the right kind of control.
OpenLink(hWndDlg, LOWORD(wParam));
break;
}
break;
}
break;
我想我真正的问题是如何正确执行此操作?我没有看到任何很好的示例来说明如何正确过滤 Syslink 以将链接作为 url 执行。
最佳答案
澄清一下,我不认为您使用的是托管 C++,因为我不确定您为什么将 NM_CLICK 通知代码称为事件。此外,您不必捕获任何东西,您不处理任何异常,您只是处理 WM_NOTIFY 消息。
无论如何,我不确定您为什么会遇到这种特殊行为,因为我没有看到您在代码片段之外做了什么,但我知道是什么导致了它。在我们的代码片段中,您使用 wParam 来确定通知代码,这是不正确的。此控件不使用 wParam。要确定通知代码,您应该执行以下操作:
NMHDR* pHeader = (NMHDR*)lParam;
switch (pHeader->code)
pHeader->code 保存您应该使用的通知代码值,pHeader->hwndFrom 是被点击的控件的句柄。
此外,您再次使用 LOWORD(wParam) 并将其作为参数传递给函数调用。你没有展示你在这个函数中做了什么,但我可以得出结论,代码也不正确。同样的lParam是指向NMLINK结构的指针。该结构的第一个成员是上面提到的 NMHDR,下一个成员是 LITEM 结构,应该用于确定 URL 是什么。
NMLINK* pNMLink = (NMLINK*)lParam;
LITEM iItem = pNMLink->item;
item.szUrl 是您应该在调用 ShellExecute 调用打开时使用的 URL。
关于c++ - 如何为 Syslink 控制处理 NM_CLICK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726099/
我是一名优秀的程序员,十分优秀!