1、在程序启动的时候,加载Rich Edit对应的dll
HINSTANCE hRich;
hRich = LoadLibrary(TEXT("RICHED20.dll"));
2、使用Rich Edit的c++文件需要包含头文件
#include <Richedit.h>
3、创建Rich Edit的时候跟创建普通编辑框几乎是一样的,除了class_name要改为RICHEDIT_CLASS
4、Rich Edit的一大特色是可以自动识别http的超链接。不过这个功能是默认关闭的,要手动打开
SendMessage(rich_edit_, EM_AUTOURLDETECT, TRUE, 0);
这个打开以后,URL是可以识别出来的。但是点击URL,还不能打开页面。还需要做进一步的代码完善。首先要允许Rich Edit发送EN_LINK消息
DWORD dwMask = ENM_LINK;
SendMessage(rich_edit_, EM_SETEVENTMASK, 0L, (LPARAM)dwMask);
然后在主窗体的消息循环中处理这个消息
case WM_NOTIFY:
{
NMHDR *p = (NMHDR *)lp;
if (p->code == EN_LINK)
{
ENLINK *pLink = (ENLINK *)lp;
if (pLink->msg == WM_LBUTTONDOWN)
{
wchar_t urlBuf[512];
SendMessage(rich_edit_, EM_EXSETSEL, 0, (LPARAM)&(pLink->chrg));
SendMessage(rich_edit_, EM_GETSELTEXT, 0, (LPARAM)urlBuf);
::ShellExecute(NULL, TEXT("open"), urlBuf, NULL, NULL, SW_SHOWNORMAL);
}
}
}
参考:
MSDN上面对Rich Edit的详细介绍
https://docs.microsoft.com/zh-cn/windows/desktop/Controls/about-rich-edit-controls
如何在Rich Edit Control中管理超链接
https://blog.csdn.net/Zhymax/article/details/2280091
网友评论