qua*_*dia 4 winapi rtf richedit
(抱歉我疯狂的英语)我想用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;
}
Run Code Online (Sandbox Code Playgroud)
.
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...
Run Code Online (Sandbox Code Playgroud)
更新:要将RTF数据加载到RichEdit控件中,请使用EM_STREAMIN,例如:
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;
}
Run Code Online (Sandbox Code Playgroud)
.
std::stringstream rtf("...");
EDITSTREAM es = {0};
es.dwCookie = (DWORD_PTR) &rtf;
es.pfnCallback = &EditStreamInCallback;
SendMessage(hRichEditWnd, EM_STREAMIN, SF_RTF, (LPARAM)&es);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3025 次 |
| 最近记录: |