如何从 Rich Edit Win API 获取 RTF 格式的文本?

2023-12-10

(对不起我疯狂的英语) 我想获取 RTF 格式的 Rich Edit 中的所有文本,而不是变量的纯文本。我尝试使用 EM_STREAMOUT 的 SendMessage() 直接将 Rich Edit 写入文件,但无法将内容保存到特定变量,例如 LPWSTR。请记住,只有Win API,而不是MFC。谢谢你的帮助!


您可以将变量传递给EM_STREAMOUT回调,以便可以根据需要进行更新,例如:

DWORD CALLBACK EditStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    std::stringstream *rtf = (std::stringstream*) dwCookie;
    rtf->write((char*)pbBuff, cb);
    *pcb = cb;
    return 0;
}

.

std::stringstream rtf;

EDITSTREAM es = {0};
es.dwCookie = (DWORD_PTR) &rtf;
es.pfnCallback = &EditStreamOutCallback; 
SendMessage(hRichEditWnd, EM_STREAMOUT, SF_RTF, (LPARAM)&es);

// use rtf.str() as needed...

Update:要将 RTF 数据加载到 RichEdit 控件中,请使用EM_STREAMIN, eg:

DWORD CALLBACK EditStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    std::stringstream *rtf = (std::stringstream*) dwCookie;
    *pcb = rtf->readsome((char*)pbBuff, cb);
    return 0;
}

.

std::stringstream rtf("...");

EDITSTREAM es = {0};
es.dwCookie = (DWORD_PTR) &rtf;
es.pfnCallback = &EditStreamInCallback; 
SendMessage(hRichEditWnd, EM_STREAMIN, SF_RTF, (LPARAM)&es);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Rich Edit Win API 获取 RTF 格式的文本? 的相关文章

  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • 我可以在 C# 进程中使用 SetErrorMode 吗?

    我正在准备写一个在线法官核心 一个可以编译用户代码并运行程序来检查答案的程序 如uva online Judge 我在捕获提交程序的异常时遇到问题 如下所示 int main while scanf d d n m printf d n n
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 如何在 WINAPI 中获取 Windows 10 内部版本、修订号?

    我想使用 WINAPI 在 Windows 10 上获取构建版本 当前窗口版本 10 0 19042 685 我尝试使用 WMI 查询来获取它 select Version BuildNumber from Win32 OperatingS
  • 获取保证具有完整(4 位)年份的 LOCALE_SSHORTDATE 的正确方法是什么?

    我想创建一个日期时间选择器控件 它显示日期和时间 作为DTS SHORTDATECENTURYFORMAT and DTS TIMEFORMAT风格 由于日期时间选择器中没有内置这种样式 因此我必须自己做GetLocaleInfoEx 我注
  • 如何捕获正在播放的音频?

    有谁知道如何以编程方式捕获正在播放的声音 即来自声卡的所有声音 而不是麦克风等输入设备 假设您正在谈论 Windows 则基本上可以通过三种方法来实现此目的 首先是打开音频设备的主输出作为录音源 这只有在驱动程序支持时才可能实现 尽管现在大
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • 调整大小时在窗口中绘图留下未绘制的边框

    我遇到的问题看似微不足道 但我找不到解决的方法 这里是 我有一个窗口 里面有一些图形 为了简单起见 我们假设它是一个实心绿色矩形 填充了窗口的整个客户区域 我希望每次窗口改变大小时都重新绘制这个矩形并填充整个窗口 我最初做的就是这样的 我已
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 全局拦截窗口移动

    我无法让全局系统挂钩正常工作 我希望在窗口移动时尽早收到通知 并更改窗口大小 这意味着 CBT 钩子HCBT MOVESIZE不会削减它 它只会在窗口移动后发生 我想挂钩窗口的实际移动 并能够在移动过程中更改窗口大小 挂钩是从 DLL 设置
  • C++/Win32 在虚拟内存中创建文件

    如何在虚拟内存中创建文件以及可以在其上使用普通文件函数 如 CreateFile WriteFile 等 吗 我正在尝试实现一个缓冲文件编写器类 但问题是管理需要动态常量重新分配的缓冲区 你可以使用管道 它们也被操作系统视为 文件 您可以将
  • Windows Aero - 以编程方式禁用视觉效果

    有谁知道是否有一个 API 可以通过编程方式禁用 启用特定的 Windows 视觉效果 例如 启用透明玻璃 或 启用 Aero Peek 我指的效果是在以下位置配置的效果 系统 高级系统首选项 高级 选项卡 性能设置 自定义 我正在为 Wi
  • 如何在win32中使用GetSaveFileName保存文件?

    我编写此代码是为了获取 fileName 来保存我的文件 include stdafx h include
  • 使用 SetWindowsHookEx() 阻止窗口鼠标单击

    我编写了一个应用程序 将某些过程挂接到新进程上 以监视鼠标按下事件并禁用新进程上的鼠标按下事件 截至目前 我能够捕获进入此进程的鼠标按下事件 并且我正在尝试将所有鼠标按下事件作为 POC 禁用 这就是我目前在钩子程序中所做的事情 exter
  • GDI 函数 BitBlt 和 StretchBlt 在 Win32 中是否硬件加速?

    我似乎无法通过搜索得到明确的答案 Win32 blitting 操作是否硬件加速 GDI 而不是 GDI 我不知道这些函数如何与图形驱动程序交互 是否有任何函数调用来验证此功能 例如 GetCaps 对于特定的图形设备 win32图形设备
  • 高级 Win32 图像文件 I/O?

    我想在 Windows C 应用程序中将图像文件读入内存 什么是一个相当简单的解决方案 也许类似于 IOS 提供的UIImage 我希望支持合理数量的文件格式 我需要为图像处理的位图提供一些低级访问权限 我在互联网上阅读了很多内容 看起来
  • 将对话框项分组到单个“组”(Visual Studio)

    我想创建一个对话框窗口来更改应用程序的设置 下面是 Adob e Reader 的屏幕截图 使用 Spy 后 我猜想 在右侧 所有控件 按钮 组合框 等 都属于 GroupBox 对于左侧TreeView控件中的每个类别 都有一个相应的Gr
  • C++ 将控制台文本颜色设置为 RGB 值

    我想将控制台的文本颜色设置为 RGB 颜色 我创建了一个函数来获取控制台的 ColorTable 并更改其中的颜色 但它不起作用 我不知道如何将文本颜色设置为颜色表中的值 因此我只是更改整个颜色表 但它没有执行任何操作 void setCo
  • WndProc调用机制(WinAPI)

    我试图了解 Windows 应用程序是如何工作的 有一个WndProc函数 其中发生消息处理 LRESULT CALLBACK WndProc HWND hwnd UINT msg WPARAM wParam LPARAM lParam s

随机推荐

  • 使用 magento 命令连接自定义表

    我一直在尝试使用 magento 的命令连接两个自定义表 搜索后我发现这段通用代码 collection Mage getModel module model name gt getCollection collection gt getS
  • 使用 iOS 异步上传音频文件

    有没有办法将音频文件异步上传到我的服务器 我已经使用 NSURLConnection 类同步实现了它 也许你也可以给我一个简短的代码示例 Thanks 你绝对必须使用ASIHttp请求 它非常简单 它是所有 iOS 系统上最受欢迎的库 只需
  • 对齐基于网格的表单元素及其标签

    我们有一个要求 将表单元素放置在 3 个单独的列中 标签可以有不同数量的文本 表单元素主要是输入框和文本区域 设计者希望确保输入元素正确垂直对齐 我们无法使用特定的填充 边距 因为这在应用程序本地化时不灵活 请看下图 第一行显示我们遇到的问
  • Windows批处理文件中的git grep和xargs?

    我正在尝试创建一个 Windows 友好的 bat实施以下 sh脚本 上面几行都很好 只需添加SET和cd没问题 git grep 没问题 但是 xargs不是 那会是什么git grep xargs逻辑看起来像 bat INFINITY
  • 用另一个布局替换 ListView 行 onClick

    我有一个只有 TextView 的 ListView 我想要一个实现 如果我单击 ListView 行 则应出现带有替换按钮的编辑文本 并且无论我在该编辑文本中键入并单击替换 列表行都应更新 我面临的主要问题是在列表行上夸大布局 有人能告诉
  • 使用SQLPlus时如何设置Oracle绑定变量?

    使用 SQLPlus 时如何设置 Oracle 绑定变量 Example SELECT orders order no FROM orders WHERE orders order date BETWEEN v1 AND v2 我如何设置日
  • 属性“...”没有初始值设定项,并且未在构造函数中明确分配

    在我的 Angular 应用程序中 我有一个组件 import MakeService from services make service import Component OnInit from angular core Compone
  • 使用 Vim 自动插入“花式”注释

    我喜欢在我的 C 代码中添加这样的注释 Blah 但我厌倦了输入所有这些星号 而且复制 粘贴也很烦人 我想知道我是否可以用 Vim 创建一个宏 这样如果我按 例如 CTRL L 它会自动在我的代码中插入该结构并将光标对齐在中间 实际注释所在
  • bash 中 =~ 运算符支持什么正则表达式语法?

    我发现我可以使用 运算符而不是expr我的 4 2 10 1 BASH 中的命令 它比 在命令内 快得多expr这个事实在大量重复的循环中可能很重要 我能够使用正则表达式的大部分元字符 但不是全部 例如 我可以检查一个字符串是否精确匹配 3
  • 为什么 Node.js 脚本控制台在 Windows 8 中立即关闭?

    我已经尝试了几乎所有我能找到的脚本示例 每个样本都会打开终端一瞬间 即使输入输入后 它也会关闭 这是正常的吗 var rl require readline var prompts rl createInterface process st
  • Scala classOf 用于类型参数

    我正在尝试使用 scala java 创建一个用于对象更新的通用方法 但我无法获取类型参数的类 这是我的代码 object WorkUnitController extends Controller def updateObject T t
  • Mysql将行显示为列[重复]

    这个问题在这里已经有答案了 我想将行显示为列 这是名为 Term 的 mysql 表 Name Year HTML CSS Js Year1 2013 08 30 90 70 70 Year2 2014 08 30 100 65 80 Ye
  • PDFView setNeedsDisplay:YES 在 MacOS Sierra 10.12 上不起作用

    我有用 PDFView setNeedsDisplay YES 让 PDF 查看重画 它在 OSX 10 9 10 11 上运行得很好 但是 除非我放大或缩小 PDF 页面 否则它不起作用 有没有其他方法可以立即重绘 代码如下 NSRect
  • sed 编辑 csv 文件中的特定列和行

    我正在开发一个项目 需要编辑 csv 文件的特定列和行 我已成功找到正确的行 获取行号 甚至将特定列更新为标准输出 但不在 csv 文件中 我遇到的问题是将它们放在一起并让 sed 更新文件中的值 以下是 csv 中的值的示例 9847 3
  • PHP:exec(svn commit) 不返回任何不工作的错误

    目前我正在用 php 将文件写到一个目录中 我添加该目录 工作正常 然后当我尝试执行 svn commit 时 它不起作用也不返回任何类型的错误代码 有人对此有任何想法吗 tmp exec cd this gt build location
  • code igniter 模块化扩展 - MX_Router::_set_default_controller() 的访问级别必须是公共的(如 CI_Router 类中一样)

    我安装了流行的模块化扩展 HMVC https bitbucket org wiredesignz codeigniter modular extensions hmvc 并使用 codeigniter 2 2 2 进行设置BUT当一切正常
  • Heroku:将 NewRelic 与 heroku 部署结合使用:war 方法

    Heroku允许选择直接部署一个Java war 文件使用heroku deploy war 在这种情况下 Procfile 由heroku 自动管理 一 如何使用NewRelic有这样的设置吗 Heroku DevCenter 上 New
  • EditText setError() 带图标但不带弹出消息

    I want to to have some validation for my EditText wherein I want to show icon that comes when you put editText setError
  • Math.Pow(等等)实际上是如何工作的

    所以我在谷歌上搜索了很长时间 但几乎什么也没找到 我发现了一些关于 Math Pow 可能实现的信息this url 但它们不准确 例如这段代码 public static double PowerA double a double b i
  • 如何从 Rich Edit Win API 获取 RTF 格式的文本?

    对不起我疯狂的英语 我想获取 RTF 格式的 Rich Edit 中的所有文本 而不是变量的纯文本 我尝试使用 EM STREAMOUT 的 SendMessage 直接将 Rich Edit 写入文件 但无法将内容保存到特定变量 例如 L