duilib中Richedit如何支持TextChanged

在duilib开发中,小伙伴会因为CEditUI的各种问题,而转为使用CRichEditUI来代替。但是CRichEditUI控件却不支持文字变化通知事件,下面通过简单几行代码让RichEdit支持文字变化事件。

在UIRichEdith.cpp文件中搜索::OnTxNotify,然后使用以下代码替换此函数:

void CRichEditUI::OnTxNotify(DWORD iNotify, void *pv)
{
    switch(iNotify)
    {
    case EN_CHANGE:
        {
            GetManager()->SendNotify(this, DUI_MSGTYPE_TEXTCHANGED);
            break;
        }
    case EN_DROPFILES:
    case EN_MSGFILTER:
    case EN_OLEOPFAILED:
    case EN_PROTECTED:
    case EN_SAVECLIPBOARD:
    case EN_SELCHANGE:
    case EN_STOPNOUNDO:
    case EN_LINK:
    case EN_OBJECTPOSITIONS:
    case EN_DRAGDROPDONE:
        {
            if(pv)
            {
                LONG nId =  GetWindowLong(this->GetManager()->GetPaintWindow(), GWL_ID);
                NMHDR  *phdr = (NMHDR *)pv;
                phdr->hwndFrom = this->GetManager()->GetPaintWindow();
                phdr->idFrom = nId;
                phdr->code = iNotify;  

                if(SendMessage(this->GetManager()->GetPaintWindow(), WM_NOTIFY, (WPARAM) nId, (LPARAM) pv))
                {
                }
            }
        }
        break;
    }
}

好了,需要的小伙伴赶紧试试吧!

时间: 2024-08-30 03:31:58

duilib中Richedit如何支持TextChanged的相关文章

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

前言 Duilib中的RichEdit控件在使用中发现,基本上对复制.粘贴.剪切等快捷方式都是支持的,不过唯一缺点是没有右键菜单,感觉不够好,于是就想着加上右键菜单. 右键菜单基本思路是,在RichEdit的消息处理函数中对鼠标的右键消息处理,发送一个自定义的Notify消息出来,主窗口中受到这个消息后弹出自己的右键菜单. 实现方法 第一步:把鼠标右键消息转发出来 MessageHandler中修改原有代码 bool bWasHandled = true; if( (uMsg >= WM_MOU

Duilib中Webbrowser事件完善,使其支持判断页面加载完毕

在多iframe的页面中,需要结合DISPID_DOCUMENTCOMPLETE和DISPID_BEFORENAVIGATE2两个事件判断页面是否加载完毕,而duilib中没有提供对DISPID_DOCUMENTCOMPLETE的支持. 要支持DISPID_DOCUMENTCOMPLETE,需要修改UIWebBrowser.cpp.UIWebBrowser.h和WebBrowserEventHandler.h三个文件,修改之后的文件见附件.

duilib中加入自己定义控件之后怎么可以在xml文件里配置使用

加入自己定义控件可能有两种不同的情况: 1.  在duilib库中加入的自己定义控件. 2.  在我们的应用程序中自己重写了一个控件. 以下開始解说不同的情况下怎么才干支持在xml文件配置控件: 1.  库中情况 假如自己定义的控件是CGifUI类. 库中情况相对是比較简单的,仅仅需在分析xml文件时候将控件创建出来即可了,所以我找到的函数是CControlUI* CDialogBuilder::_Parse(CMarkupNode* pRoot, CControlUI* pParent, CP

duilib中添加自定义控件之后怎么能够在xml文件中配置使用

添加自定义控件可能有两种不同的情况: 1.  在duilib库中添加的自定义控件. 2.  在我们的应用程序中自己重写了一个控件. 下面开始讲解不同的情况下怎么才能支持在xml文件配置控件: 1.  库中情况 假如自定义的控件是CGifUI类. 库中情况相对是比较简单的,只需在分析xml文件时候将控件创建出来就行了,所以我找到的函数是CControlUI* CDialogBuilder::_Parse(CMarkupNode* pRoot, CControlUI* pParent, CPaint

Duilib中的消息泵和虚拟窗口

Duilib中的消息泵和虚拟窗口 一.消息泵的结构 CNotifyPump类是构建Duilib消息泵的根父类,要使用消息泵机制的窗口类应该从该类继承.在继承关系的基础上,通过DUI_DECLARE_MESSAGE_MAP.DUI_BEGIN_MESSAGE_MAP.DUI_END_MESSAGE_MAP.DUI_ON_MSGTYPE.DUI_ON_MSGTYPE_CTRNAME.DUI_ON_CLICK_CTRNAME.DUI_ON_SELECTCHANGED_CTRNAME.DUI_ON_KI

Java jre7及以上版本中的switch支持String的实现细节

Java7中的switch支持String的实现细节 作者: zsxwing 更新: 2013-03-04 21:08:02 发布: 2012-04-26 13:58:19 在Java7之前,switch只能支持 byte.short.char.int或者其对应的封装类以及Enum类型.在Java7中,呼吁很久的String支持也终于被加上了. 例如,下面是一段switch中使用String的示例代码. 1 public class Test { 2 3 public void test(Str

POPUSH中增加haskell支持的实现

我是李映辉,在这次作业中和王程鹏一起负责实现popush项目中haskell的支持.刚刚接到这个任务的时候我在家里,当时我以为这个是最重的任务了,当时我已经做好了刷夜的思想准备.在中途王程鹏加入到了我们组,被安排和我一起结对编程,我才感觉到任务轻了一些. 由于我在家的时候不方便交流,所以我们约定等我回校以后再正式开始做作业,但是在这之前王程鹏还和学校的一些同学进行了一些交流,他的学校做的这些工作使得我们后来的工作变得异常顺利. 我们实现的过程非常的顺利:首先我们两个人讨论了一下解决的思路.王程鹏

在CentOS中安装中文支持

执行命令: # yum groupinstall chinese-support 修改配置文件: # vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" SYSFONT="lat0-sun16"

php中curl不支持https的解决办法

在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的curl库不支持https, 验证方法为你的curl安装目录/bin/curl  -V  显示如下:Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp这表示curl是不支持 https的 为了支持https,需要下载源