求助:用SetClipboardData往剪贴板放一个RTF格式的字符串, 当字符串是UNICODE时粘贴失败

iProgram 2005-05-03 07:07:34
ANSI时期的代码:
CSharedFile sf(GMEM_MOVEABLE | GMEM_SHARE | GMEM_ZEROINIT);
TCHAR sz[200];
/*
下面这句不要管,这个是RTF格式的字符串(用VC以2进制打开.rtf文件可见类似代码
效果是字号为12 (fs24/2)的ABC, Arial字体
*/
_tcscpy(sz, _T("{\\rtf1{\\fonttbl{\\f0\\fnil Arial;}}\r\n\\f0\\fs24 ABC}"));

sf.Write(sz, _tcslen(sz) * sizeof(TCHAR));
OpenClipboard();
EmptyClipboard();
/*
RICHEDIT.H, #define CF_RTF TEXT("Rich Text Format")
*/
SetClipboardData(::RegisterClipboardFormat(CF_RTF), sfRTF.Detach());
CloseClipboard();

运行正常的很, 但是改成UNICODE后,在Word或WordPad下粘贴不出格式化的文本,只能粘贴出第一个"{".是不是往CSharedFile sf里写UNICODE字符的问题,该怎么修改?
...全文
225 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iProgram 2005-05-04
  • 打赏
  • 举报
回复
CSharedFile是MFC基础类。CFile->CMemFile->CSharedFile
哪位老大给个TCHAR sz[200];到ANSI字符串的带码,我现在有点混乱,看了看msdn好像用这个函数:WideCharToMultiByte 但是不明白WCHAR, TCHARyoushenme区别,以前ANSI一直是char sz[200]这样用,怎么突然冒出一个WCHAR??
NOMADBLUE 2005-05-04
  • 打赏
  • 举报
回复
或者放弃普通方法,改用基于COM的OLE剪切板就可以支持UNICODE较好
NOMADBLUE 2005-05-04
  • 打赏
  • 举报
回复
如果不能,就干脆用ANSI字符串
NOMADBLUE 2005-05-04
  • 打赏
  • 举报
回复
你能确定你的CSharedFile现在支持UNICODE么?
iProgram 2005-05-04
  • 打赏
  • 举报
回复
知道了,LPTSTR也是按_UNICODE变的宏阿
iProgram 2005-05-04
  • 打赏
  • 举报
回复
为什么用W2A而不用T2A?
W (LPWSTR) 是wchar_t么?
那T (LPTSTR)是什么?
A (LPSTR)是char吧.
vcmute 2005-05-04
  • 打赏
  • 举报
回复
USES_CONVERSION;
szAnsi = W2A(sz);

P.S.WCHAR就是宽字节wchar_t,Unicode用的
vcmute 2005-05-03
  • 打赏
  • 举报
回复
word2003现象和你的不一样
建议往CSharedFile sf写前先将UNICODE转成ANSI

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧