Duilib中为RichEdit\Edit控件添加自定义右键菜单

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言


Duilib中的RichEdit控件在使用中发现,基本上对复制、粘贴、剪切等快捷方式都是支持的,不过唯一缺点是没有右键菜单,感觉不够好,于是就想着加上右键菜单。

右键菜单基本思路是,在RichEdit的消息处理函数中对鼠标的右键消息处理,发送一个自定义的Notify消息出来,主窗口中受到这个消息后弹出自己的右键菜单。


实现方法



第一步:把鼠标右键消息转发出来

MessageHandler中修改原有代码

 bool bWasHandled = true;
    if( (uMsg >= WM_MOUSEFIRST && uMsg <= WM_MOUSELAST) || uMsg == WM_SETCURSOR ) {
        if( !m_pTwh->IsCaptured() ) {
            switch (uMsg) {
            case WM_LBUTTONDOWN:
            case WM_LBUTTONUP:
            case WM_LBUTTONDBLCLK:
            case WM_RBUTTONDOWN:
            case WM_RBUTTONUP:
                {
                    POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
                    CControlUI* pHover = GetManager()->FindControl(pt);
                    if(pHover != this) {
                        bWasHandled = false;
                        r
DuiLib实现仿微信聊天界面(二)——解决RichEdit自适应高度问题 前言 在上一篇文章中: DuiLib实现仿微信聊天界面 我们实现了仿微信的布局和简单的聊天列表: 但是,因为网易开源 NimDuiLib 的版本落后于其提供的Demo,同样的写法在开源DuiLib中就会出现问题,比如RichEdit在同时设置width、height为auto时,会断错误。所以需要我们自己进行修复。 至于为何要设置RichEdit的width和height属性为auto?因为文本的宽度和高度都是动态的,根据文本的内容需要自行计算。 网易DuiLib控件如何计算宽高? 我们从网易Dui 阅读详情

相关推荐

nim_duilib(9)之RichEdit

introduction 更多控件用法,请参考 here 和 源码。 本文的代码基于这里 RichEdit的更多用法,请参考源码中RichEdit.h提供的函数,RichEdit控件,可以定制为多种多样的形式,其公开的函数很多,本文仅演示密码和只读。 xml文件添加代码 基于上一篇, 继续向basic.xml中添加下面关于RichEdit的代码。 xml完整源码在文末。 <!--第二行...

知其所以然 344

原生DuiLib实现聊天界面

源码由VS2013 + C++实现,支持XP,界面可查看链接https://blog.csdn.net/u012983289/article/details/122681650

RichEdit嵌入自开发OLE控件技术要点(ATL)

richedit插入gif实例下载: OLE封装库 RICHEDIT_DEMO 1、创建ATL复合文档控件。可通过wizard创建。 下面是创建OLE控件的最小头文件 // CSimpleOleObject class ATL_NO_VTABLE CSimpleOleObject : public CComObjectRootEx, public IDispatchImpl,

在水一方 5242

第二章 第八小节Duilib中的CRichEditUI控件-富文本编辑框

文章目录1.CRichEditUI控件2.作者答疑 1.CRichEditUI控件   CRichEditUI控件duilib中的富文本输入控件,以下则是常用参数设置。 <Font name="宋体" size="12" bold="false" italic="false" default="true" id="1"/> <RichEdit name="广州知了软件有限公司" menu="true" font="1" bordersize="1" bordercolor="#FFDBD

插件开发 2254

DuilibRichedit使用

1.要想能从剪切板中的图片能插入到

AcketRose的专栏 5498

C++ duilib开发中RichEdit控件LNK1104与中文乱码的完整解决方案

在Windows桌面应用开发中,动态链接库(DLL)的依赖管理和字符编码处理是开发者常遇到的基础挑战。编译链接阶段的LNK1104错误通常源于库文件缺失或路径配置问题,而运行时的中文乱码则多由ANSI与Unicode字符集混用导致。理解Windows API的字符集体系(如UTF-16LE编码的宽字符函数)和Rich Edit控件的版本差异(如Riched20.dll与Msftedit.dll),对于构建健壮的本地化应用至关重要。这些技术原理直接关系到**C++** 项目能否正确处理多语言文本和确保界面控件

cmff98425的博客 337

改进duilibrichedit控件的部分功能

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41208207 如果要使用透明异形窗体功能,首先要改进duilib库让他本身支持(可以下载duilib扩展群群主改进的库,或者下载我的库),然后要开启窗体的bktrans属性。这时只要使用透明的背景素材就能做出透明异形窗体。但是透明窗...

a539284554的博客 485

Duilib - RichEdit作为日志输出控件,更新日志内容后并自动跳到最后一行

1 编写界面xml 在界面xml中的需要添加日志显示的位置添加以下代码: <RichEdit name="RichEdit_Log" text="日志控件" multiline="true" vscrollbar="true" autovscroll="true" readonly="true"/> 设置RichEdit允许多行,文本只读,自动设置垂直滚动条。 2 RichEdit控件更新内容后跳转到最后一行 2.1 bug版本代码 最开始有问题的版本代码如下: m_RichEditUI-

HW140701的博客 1586

Duilib用户界面库中RichEdit控件的应用与自定义

Duilib 是一个轻量级的 UI 库,用于创建和维护可定制的用户界面,它遵循MVVM设计模式,被广泛应用于Windows平台的桌面应用程序开发。它的核心优势在于快速开发和丰富的控件支持,从而帮助开发者高效地实现美观且响应迅速的UI。在某些特殊情况下,可能需要对RichEdit控件进行更细致的自定义绘制。Duilib允许开发者通过处理控件的消息来自定义绘制行为。例如,可以通过WM_NOTIFY消息来处理RichEdit控件自定义绘制需求:// 在这里添加自定义绘制的代码。

weixin_36059856的博客 979

RichEditDemo(DuiLib版)

1、支持输入框文字格式设置,包括字体名称、字体大小、加粗、倾斜、下划线、文字颜色等。 2、支持插入BMP、JPG、PNG、GIF等格式的图片文件。 3、支持图片和文字的复制剪切粘贴拖放,并与QQ、IE、Google Chrome、Word等的剪切板格式互相兼容。 4、支持表情选择框、图片文件选择框等方式插入表情或图片。 5、支持设置显示比例,图片自动缩放,图片右键另存为菜单,图片双击打开,图片悬浮工具栏等。

duilibrichedit中嵌入超链接

duilib里面,给richedit控件添加超链并处理点击响应的演示。

学习并记录 1063

duilib给UIList扩展右键菜单

原版的duilib的UIList中CListContainerElementUI的鼠标左键点击和右键点击,调用的同样的动作 原来的代码是: if( event.Type == UIEVENT_BUTTONDOWN || event.Type == UIEVENT_RBUTTONDOWN ) { if( IsEnabled() ) { m_pManager->SendNotify(this, DUI_MSGTYPE_ITEMCLICK);

刘朋 1272

解决网易开源duilib自带RichEdit在部分系统下键盘无法输入的问题

现象 最近基于网易开源维护的duilib做了一款客户端,上线后,用户反馈了一系列问题,其中最诡异的问题就是RichEdit有时候无法输入。 调查 使用官方自带的例子进行测试后,发现同样存在问题: NIM_Duilib_Framework 这2个RichEdit的XML如下: <!-- 单行文本 --> <RichEdit class="simple input" height="30" margin="0,3" padding="6,6,6" promptmode="true" p

xmcy001122的专栏 1328

CRichEditUI中文乱码问题(Duilib)

这是遇到问题的时候,我还以为是韩文。

Winter_Sun灬的博客 381

Duilib 源码分析之 CRichEditUI 篇

CRichEdit 的代码较多,主要是因为富文本控件可实现的操作和控制较多,在 Duilib 中的代码实现了很多功能,在只有部分功能被实际调用了,所以要想真正学会用富文本控件,最好是自己动手做一个例子,将大部分的方法自己手动调用一遍,看看效果。碰到一个新控件,我的习惯还是先看下控件的父类、SetAtrribute 方法,扫一眼成员函数名称和成员变量名称。这样会对这个控件的功能有一个大体的认识。先看

Aloe_Jinchx的博客 4868

Duilib中的RichEdit和Label,Text,Edit

在用Duilib轻量级UI库中,有时候在ListUI中要嵌入单元格,有人可能会考虑用RichEdit,有人考虑用Label,总的来说都还是相当不错的,但是RichEdit在List的滚动条滑动时字体的textpadding会失效,这就尴尬了,所以还是推荐使用Label,经劳资多方认证用Label还是相当不错的,能解决大部分难题,当然如果你想要添加Combo的话可以使用RichEdit,能极大有效的...

dream it possible 2600

duilib进阶教程 -- 改进List控件(3)_支持多选+右键菜单(ctrl,shift, 鼠标滑动框选)

看到很多PC客户端的列表都支持多选,比如PP助手,华为网盘,duilib本身UIList却没有此功能的支持,于是想修改一把,完善这方面的劣势,而且相信用到的这个功能的也不少,尤其在开发文件管理相关的功能模块,多选的支持应该是必须的。总结分析:ctrl按下的情况,点击,不会使前一个(一部分)选中项失去选中状态,而只是让当前点击的项改变选中状态,并将焦点移到当前项。抬起时,恢复标识位,右键抬起的话,总结分析:shift按下的情况,点击,是选中一个范围,起始项为焦点所在的项,shift点击的项为结束项。

因热爱而执着,因执着而成功。 975
上一篇: WIN32窗口子类化----自定义Edit控件的右键菜单
下一篇: Windows程序开发必须知道的几个注册表项
疯狂-的-蜗牛
博客等级 码龄16年 427粉丝 104原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值