首页 > 其他分享 >UNICODE环境下,RichEditCtrl 控件 RTF字符串的读写

UNICODE环境下,RichEditCtrl 控件 RTF字符串的读写

时间:2024-09-29 19:23:11浏览次数:7  
标签:控件 RTF int SendMessage UNICODE 字符串 SF

UNICODE编译环境:

RTF字符串的显示:

如果是CRichEditView,可以直接用SetWindowText,输入的RTF字符串是UNCODE编码。

如果是CRichEditCtrl,可以发消息显示,输入的字符串是UNCODE编码

int CNoteView::SetRTF(TCHAR* pRtf) 
{
int len = _tcslen(pRtf);
//::SendMessage(m_hWndREdit, EM_SETSEL, -1, -1); //xgz在末尾添加
::SendMessage(m_wndNote.m_hWnd, EM_SETSEL, 0, -1); //xgz替换全部
::SendMessage(m_wndNote.m_hWnd, EM_REPLACESEL, 0, (LPARAM)pRtf);
return len;
}

 

RTF字符串的读取:

用回调函数读取RTF, 即便是UNICODE环境,读出的RTF仍然是 CP_ACP,属性虽有SF_UNICODE,但这个只能和SF_TEXT一起用。

若是要把这个读出的RTF串,写回RichEdit显示,仍然要先转换成UNCODE编码

int CNoteView::GetRTF(string &sRtf) 
{
EDITSTREAM es = { (DWORD_PTR)&sRtf, 0, EditStreamOutCallback };
int iAttrib = SF_RTF;
//int iAttrib = SF_UNICODE; //这个只能处理文本SF_TEXT,SF_RTF即使UNICODE环境,仍然是CP_ACP, ANSI
::SendMessage(m_wndNote.m_hWnd, EM_STREAMOUT, (WPARAM)iAttrib, (LPARAM)&es);
return sRtf.length();
}


DWORD CALLBACK CNoteView::EditStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG* pcb) //ok
{
string* psEntry = (string*)dwCookie; //指向DWORD的指针, dwCookie 实际上是 &lpRTF

//*psEntry += (char*)pbBuff; //+= 和Append 应该都是内存拼接
(*psEntry).append((char*)pbBuff); // += 和Append 应该都是内存拼接
*pcb = strlen((char*)pbBuff); //当前处理的数量

return 0;
}

 

标签:控件,RTF,int,SendMessage,UNICODE,字符串,SF
From: https://www.cnblogs.com/xgz21/p/18440617

相关文章

  • 【Qt笔记】QFrame控件详解
    目录引言一、QFrame的基本特性二、QFrame的常用方法2.1边框形状(FrameShape)2.2阴影样式(FrameShadow)2.3线条宽度(LineWidth)2.4 样式表(styleSheet)三、QFrame的应用场景四、应用示例 4.1代码4.2实现效果4.3代码解析与注意事项代码解析注意事项结语......
  • 字符编码发展史4 — Unicode与UTF-8
    上一篇《字符编码发展史3—GB2312/Big5/GBK/GB18030》我们讲解了ANSI编码中的GB2312/Big5/GBK/GB18030。本篇我们将继续讲解字符编码的第三个发展阶段中的Unicode与UTF-8。2.3.第三个阶段国际化前面提到的第二个阶段,各个国家和地区各自为政,纷纷制定了适用于自己国家语言的字......
  • 【9月首发】知名界面控件DevExpress v24.1.6全新发布
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress近期重要版本v24.1已正式发布,该版本拥有众多新产品和数十个具有高影响力的功......
  • 深入解析:Unicode 与 UTF-8 在 Python 中的秘密武器
    引言字符编码是计算机科学中的一个重要领域,它定义了如何将人类可读的文字转换为机器能够理解的形式。随着互联网的发展,不同的语言和符号需要在全球范围内共享,这就对字符编码提出了更高的要求。Unicode标准就是为了满足这种需求而诞生的,它提供了一套统一的字符集,几乎涵盖了所有现代......
  • RME40002 Mechatronics Systems Design – Portfolio Tasks Description
    RME40002MechatronicsSystemsDesign–PortfolioTasksDescriptionSchoolofScience,ComputingandEngineeringTechnologiesRME40002MechatronicsSystemsDesignPortfolioTasksDescriptionSemester2,2024Page1of21RME40002MechatronicsSystemsDesig......
  • 03 第四组 2个 unicode码点 随机生成汉字与字母
    unicode码点A对应的二进制010000中对应的二进制....国对应的二进制.....ord根据文本获取十进制数v1=ord("A")v2=ord("中")print(v1,hex(v1),''.join(hex(v1)[2:].rjust(4,'0')))#650x410041print(v2,hex(v2),''.join......
  • WINCCV7.5SP2使用VBA一次性添加多个IO域控件,并设置属性和其连接的变量
    这篇博客发表在某浪上,截至目前还没有通过审查,在这里也发一遍。前面的练习是先在页面手工放置IO域,然后使用VBA脚本批量设置连接的变量。这个练习进一步,使用VBA脚本创建IO域控件,并设置连接的变量。这个练习自动创建20个IO域,名字叫做IO1至IO20,并设置其连接的变量,为Real1至Real20;IO域......
  • WPF中控件拖放(二)——拖放示例
    1.创建拖放对象1.1创建一个圆自定义控件,UI代码如下(Circle.xaml):<UserControlx:Class="WpfApp1.Circle"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006......
  • Element UI控件el-scrollbar定位布局
    ElementUI控件el-scrollbar定位布局基本概念与作用常见应用场景示例一:基本用法示例二:自定义滚动条样式示例三:嵌套滚动条示例四:监听滚动事件示例五:滚动到特定位置实际开发中的使用技巧ElementUI是一款基于Vue2.x的桌面端组件库,它提供了丰富的组件来帮助开发者......
  • 在Activity中测量控件宽高的三种方式
    在进行Android开发时,有时需要测量控件的宽和高,常用的方式有以下三种:(1)重写onWindowFocusChanged(hasFocus:Boolean)方法,在这个方法内获取控件的宽高这个方法在Activity的窗口焦点发生变化时调用,具体可以分为窗口获得焦点时和窗口失去焦点时。Activity的焦点发生变化时,相关的......