使用Visual Studio 2013社区。 p>
在源代码中添加了#include。 将Shlwapi.lib添加到链接器。 编译并链接确定。
这是使用EM_INSERTIMAGE的代码:
static void insertimage( )
{
RICHEDIT_IMAGE_PARAMETERS rip;
IStream *pStream = NULL;
DWORD grfMode = STGM_READ | STGM_SHARE_DENY_NONE;
HRESULT hr = SHCreateStreamOnFileA( "add.png", grfMode, &pStream );
if (hr == S_OK)
{
ZeroMemory( &rip, sizeof( rip ) );
rip.xWidth = 2000; // unit 0.01mm
rip.yHeight = 2000;
rip.Type = TA_BASELINE;
rip.pwszAlternateText = L"adding xyz";
rip.pIStream = pStream;
hr = SendMessage( hwndrichedit, EM_INSERTIMAGE, (WPARAM)0, (LPARAM)&rip );
if (hr == S_OK)
{
// getting here, but not getting any image or alternate text
// output on screen
}
}
}
但它不会在屏幕上输出任何图像或替代文字,也不会将图像控制字放入rtf文件中。 我也尝试了SHCreateStreamOnFileEx,结果相同。
我该如何做到这一点?
答案 0 :(得分:0)
我忘了提到我使用的是Windows 7。
我一直在搜索Google上的EM_INSERTIMAGE和其他密钥并找到了 表示EM_INSERTIMAGE需要Windows 8的匹配。我检查了EM_INSERTIMAGE MSDN并在“要求”部分'最低支持的客户端中找到了此信息 Windows 8 [仅限桌面应用程序]'。
我没想到这是因为我的Windows 7 PC上有Wordpad和Windows Office 10 可以插入图像。此外,Linux TED richedit文本编辑器可以插入图像 在三年前发布的Ubuntu 12.04中。
也许这些程序只是将图像规格插入rtf 根据rtf格式规范的要求。
我假设用户程序发出的EM_INSERTIMAGE会生成图像 rtf部分并将其插入rtf格式文本。
我对Windows 7感到满意,不会改为Windows 8,所以看来我好像 将无法拥有图像。
如果EM_INSERTIMAGE仅适用于Windows 8,我认为应该有错误 从Windows 7,Windows XP等发出EM_INSERTIMAGE时返回。
答案 1 :(得分:0)
EM_INSERTIMAGE仅适用于Windows 8及更高版本。在Windows 7中,您需要使用RichEdit的OLE接口来插入图像。这就是写字板如何做到的。您可以在MSDN上查找此示例: