我在对话框中有一个RichEdit控件。 RichEdit控件显示RTF文本。 EM_AUTOURLDETECT
导致RichEdit控件正确格式化并识别超链接。当鼠标悬停在链接上时,指针变成一只手,但是一旦链接被点击,浏览器就不会启动。RichEdit的EM_AUTOURLDETECT消息识别链接,但我无法点击它
我是否缺少某种事件处理程序代码?
case WM_INITDIALOG:
{
// Create Richedit
HWND hwndRE = CreateWindowA("RichEdit20A", "", WS_CHILD | WS_BORDER | WS_VSCROLL | ES_READONLY | ES_MULTILINE, 10, 10, 480, 220, hDlgWnd, 0, hInst, 0);
SendMessage(hwndRE ,EM_AUTOURLDETECT,(WPARAM)TRUE,(LPARAM)0);
//SendMessage(hwndRE ,EM_SETEVENTMASK, 1, ENM_LINK | ENM_CHANGE);
ShowWindow(hwndRE, SW_SHOWNORMAL);
SETTEXTEX SetTextEx;
char* aboutdata = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Verdana;}}\\viewkind4\\uc1\\pard\\qc\\b\\f0\\fs20 www.whateverdomain.com} ");
SendMessage(hwndRE, EM_SETTEXTEX,(WPARAM)&SetTextEx, (LPARAM)(LPCTSTR)aboutdata);
return TRUE;
}
我设置了:SendMessage(hwndRE,EM_SETEVENTMASK,0,ENM_LINK);这使得能够发送EN_LINK消息。但是现在,当我将鼠标悬停在链接上(甚至不必点击),浏览器就会打开网站?而且你盘旋的时间越长,它打开的网站实例就越多...... – 2011-06-01 15:55:46
EM_AUTOURLDETECT会自动修改丰富的编辑控件,以便它可以发送EN_LINK通知。您是否尝试调试代码以查看会发生什么?您的对话框是否收到来自富编辑控件的任何通知? – 2011-06-01 15:56:09
对不起,如果这个双重职位,我正在编辑,而你打字。我设置了:SendMessage(hwndRE,EM_SETEVENTMASK,0,ENM_LINK);这使得能够发送EN_LINK消息。但是现在,当我将鼠标悬停在链接上(甚至不必点击),浏览器就会打开网站?而且你盘旋的时间越长,它打开的网站越多... – 2011-06-01 15:57:34