我正在编写一个MFC程序,并希望能够以表格形式输出一些数据,最好是将其写入剪贴板,然后将其粘贴到单词中。
到目前为止,我已经研究过使用富文本格式来绘制表格。我已经成功完成了.rtf文件,如下所示:
std::string s = "{\\rtf \\par \\trowd \\trqc\\trgaph108\\trrh280\\trleft36"
"\\clbrdrt\\brdrth \\clbrdrl\\brdrth \\clbrdrb\\brdrdb"
"\\clbrdrr\\brdrdb \\cellx3636\\clbrdrt\\brdrth"
"\\clbrdrl\\brdrdb \\clbrdrb\\brdrdb \\clbrdrr\\brdrdb"
"\\cellx7236\\clbrdrt\\brdrth \\clbrdrl\\brdrdb"
"\\clbrdrb\\brdrdb \\clbrdrr\\brdrdb \\cellx10836\\pard \\intbl "
"First Cell"
" \\cell \\pard \\intbl "
"Second Cell"
" \\cell \\pard \\intbl "
"Third Cell"
" \\cell \\pard \\intbl \\row"
"\\trowd \\trqc\\trgaph108\\trrh280\\trleft36 \\clbrdrt\\brdrdb"
"\\clbrdrl\\brdrth \\clbrdrb \\brdrsh\\brdrs \\clbrdrr\\brdrdb"
"\\cellx3636\\clbrdrt\\brdrdb \\clbrdr \\brdrdb"
"\\clbrdrb\\brdrsh\\brdrs \\clbrdrr\\brdrdb"
"\\cellx7236\\clbrdrt\\brdrdb \\clbrdr \\brdrdb"
"\\clbrdrb\\brdrsh\\brdrs \\clbrdrr\\brdrdb \\cellx10836\\pard"
"\\intbl "
"Fourth Cell"
" \\cell \\pard \\intbl "
"Fifth Cell"
" \\cell \\pard \\intbl "
"Sixth Cell"
"\\cell \\pard"
"\\intbl \\row \\pard}";
ofstream file("f.rtf");
if(file.is_open())
{ file << s; file.close}
我想把表写成剪贴板,例如:
::OpenClipboard(NULL);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, s.size());
if (!hg){
CloseClipboard();
return;
}
memcpy(GlobalLock(hg), s.c_str(), s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
但我无法找到富文本的剪贴板格式。有可能这样做吗?是否有任何MFC技巧可以做到这一点?
答案 0 :(得分:1)
您需要注册格式(或获取已注册的格式):
CLIPFORMAT cfRTF = RegisterClipboardFormat(_T("Rich Text Format"));