在windows程序中使用Rich Edit取代Edit

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,444评论 3赞 119
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,282评论 19赞 139
  • 在数学运算中,减法是很常见的。(当然,加法、乘法、除法也是很常见。)但如果将它用到生活中就不是那么常见了...
    晚上不要读易经阅读 728评论 0赞 0
  • 当我以“秒速五厘米”的速度坐在座位上时,还是听到了李响幸灾乐祸的声音。 “林文静,你又迟到了,不过就差那么几秒。”...
    左语微凉阅读 476评论 0赞 4
  • 1.标识符 1.1什么是标识符? 在编程时中给类、接口、属性、变量/常量、方法、语句块等起的名字 1.2.标...
    科比八号阅读 456评论 0赞 1

友情链接更多精彩内容