我正在尝试使用 C++ 模仿对话框上的超链接。
我正在使用设置了 SS_NOTIFY 的静态控件,以便用户可以单击控件并转到网页:
LTEXT "Caption2",IDC_SETTINGS,9,36,219,13,SS_NOTIFY
设置 SS_NOTIFY 后,我可以拦截点击,因为它是针对静态注册的:
case IDC_STC_URL:
ShellExecute(NULL, "open", "http://google.co.uk", NULL, NULL, SW_SHOWNORMAL);
return TRUE;
我还通过拦截 WM_SETCURSOR 消息将光标更改为手:
case WM_SETCURSOR:
POINT pt;
RECT rect;
GetCursorPos( &pt );
GetWindowRect( GetDlgItem(hwnd,IDC_SETTINGS), &rect );
if (PtInRect(&rect, pt))
{
SetCursor(LoadCursor(NULL, IDC_HAND));
}
else
{
SetCursor(LoadCursor(NULL, IDC_ARROW));
}
return TRUE;
但是,当设置 SS_NOTIFY 时,光标更改不起作用。当 SS_NOTIFY 被禁用时,它会这样做。但是随后单击未针对静态注册,因此 ShellExecute() 无法打开 URL。
有人对我做错了什么有建议吗?
谢谢,提供。