look for answers here:Rich Edit Control
http://www.codeguru.com/richedit/index.shtml
http://www.codeguru.com/richedit/index.shtml
解决方案 »
- 设置FlexGrid控件中单元格的底色
- c++对话框上的控件如何实现双缓冲?(100分)
- 动态生产的控件在RELEASE下响应消息时发生ACCESS VIOLATION 错误
- 更新出错
- 在同一个类中,如何调用其他函数?
- 下了一个程序,是winmain的,程序不显示任何界面,可能设置不显示,设断点调试也调试不了,请问这是设置的,怎么让他显示出来
- 如何显示图片的缩略图?
- 初学者,请问各位高手!关于输出!在线等!!!
- 请问什么叫钩子???
- 安装VC时出现提示"找不到VB6CHS.DLL",这对VC的使用有无影响
- 我要禁止一段时间OnLButtonDown()响应,怎么办?
- mscomm控件从2000到98碰到的问题!
http://www.copathway.com/vchelp/type.asp?class_id=1&type_id=12
如果还是没人知道的话,换个问题算了.
就可以解决,不过离题了,呵哈哈。
如
m_RichTextCtrl.SetFileName("D:\\gg.rtf")
m_RichTextCtrl.Refresh();
另外,CRichEditCtrl的折行问题try:
Styles中选MultiLine项及Want return项
[email protected] 收到就给100分
另外折行问题,我已加入了这些风格,还是不能自动换行
http://www.faqs.org/faqs/compression-faq/
参照MSDN2001:
对话框程序
CXXXDlg::OnInitDialog()
{
.
.
.
// TODO: Add extra initialization here
CFile file;
file.Open("D:\\kk.rtf",CFile::modeRead,0);
EDITSTREAM es;
es.dwCookie=(DWORD) &file;
es.dwError=0;
es.pfnCallback=MyStreamInCallback;
m_Rich.StreamIn(SF_RTF ,es);
return TRUE; // return TRUE unless you set the focus to a control}
在CXXXDlg.h中
加入声明
static DWORD CALLBACK
MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb,
LONG *pcb);在刚才的CXXXDlg.CPP中加入
DWORD CXXXDlg::MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CFile* pFile = (CFile*) dwCookie; *pcb = pFile->Read(pbBuff, cb); return 0;
}CRichEditCtrl的Styles中选MultiLine项,不用选Want return项
至于加入图片这项,研究中寻找资料中.....
第二个问题,在一些程序员资源2001的"D"版可以看到有ZIP的源代码。
Here is a way to put a bitmap file into an RTF control. It will insert the file, pWorkSpace->GetWkspTempDirectory() + _T("\\") + plotName, into the CRichEditCtrl m_reportCtrl: This goes in the ".h" file: LPSTORAGE m_lpStorage; // provides storage for m_lpObject
LPLOCKBYTES m_lpLockBytes; // part of implementation of m_lpStorage
LPOLEOBJECT m_lpObject; // in case you want direct access to the OLE object
LPVIEWOBJECT2 m_lpViewObject;// IViewObject for IOleObject above
The rest of this goes in the ".cpp" file:
LPUNKNOWN AFXAPI _AfxQueryInterface(LPUNKNOWN lpUnknown, REFIID iid)
{
ASSERT(lpUnknown != NULL); LPUNKNOWN lpW = NULL;
if (lpUnknown->QueryInterface(iid, (LPLP)&lpW) != S_OK)
return NULL; return lpW;
}void CSimulationReportView::InsertPlotBitmap()
{
USES_CONVERSION;
SCODE sc = ::CreateILockBytesOnHGlobal(NULL, TRUE, &m_lpLockBytes);
if (sc != S_OK)
AfxThrowOleException(sc);
ASSERT(m_lpLockBytes != NULL); sc = ::StgCreateDocfileOnILockBytes(m_lpLockBytes,
STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, &m_lpStorage);
if (sc != S_OK)
{
VERIFY(m_lpLockBytes->Release() == 0);
m_lpLockBytes = NULL;
AfxThrowOleException(sc);
} CWorkSpace * pWorkSpace = GetDocument()->GetWorkSpace();
if ( !pWorkSpace )
return;
CString plotName;
plotName.LoadString( IDS_PLOT_FILENAME );
CString szFileName( pWorkSpace->GetWkspTempDirectory() +
_T("\\") + plotName ); // attempt to create the object
sc = ::OleCreateFromFile(CLSID_NULL, T2COLE(szFileName),
IID_IUnknown, OLERENDER_DRAW, NULL, NULL,
m_lpStorage, (void **)&m_lpObject);
if ( sc != S_OK )
{
TCHAR * lpMsgBuf;
::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM, NULL,
::GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf, 0, NULL );
CString msg( lpMsgBuf );
msg += _T("\n\n\nThe following file, created in\n"
"Simulation->Plot, may be missing due\n"
"to not doing a File->Save Workspace:\n\n" );
msg += szFileName;
AfxMessageBox( msg, MB_OK );
::LocalFree( lpMsgBuf );
return;
}
// m_lpObject is currently an IUnknown, convert to IOleObject
if (m_lpObject != NULL)
{
LPUNKNOWN lpUnk = m_lpObject;
m_lpObject = QUERYINTERFACE(lpUnk, IOleObject);
lpUnk->Release();
if (m_lpObject == NULL)
AfxThrowOleException(E_OUTOFMEMORY);
} // cache the IViewObject interface
m_lpViewObject = QUERYINTERFACE(m_lpObject, IViewObject2);
if (m_lpViewObject == NULL)
return; // setup for advises; we assume that OLE cleans them up properly
LPADVISESINK lpAdviseSink =
(LPADVISESINK)GetInterface(&IID_IAdviseSink); // set up view advise
VERIFY(m_lpViewObject->SetAdvise(DVASPECT_CONTENT, 0, lpAdviseSink)
== S_OK); // the server shows these in its user-interface
// (as document title and in File Exit menu)
m_lpObject->SetHostNames(T2COLE(AfxGetAppName()),
T2COLE(GetDocument()->GetTitle())); // all items are "contained" -- this makes our reference to this object
// weak -- which is needed for links to embedding silent update.
OleSetContainedObject(m_lpObject, TRUE); CHARRANGE cr;
m_reportCtrl.GetSel( cr );
cr.cpMin = cr.cpMax -1;
m_reportCtrl.SetSel( cr ); REOBJECT reo;
memset( &reo, 0, sizeof( reo ) );
reo.cbStruct = sizeof( reo );
CLSID classID;
if ( m_lpObject->GetUserClassID( &classID ) != S_OK)
classID = CLSID_NULL;
reo.clsid = classID;
reo.cp = REO_CP_SELECTION;
reo.poleobj = m_lpObject;
reo.pstg = m_lpStorage;
LPOLECLIENTSITE lpClientSite;
m_reportCtrl.GetIRichEditOle()->GetClientSite( &lpClientSite );
reo.polesite = lpClientSite;
SIZEL sizel;
sizel.cx = sizel.cy = 0; // let richedit determine initial size
reo.sizel = sizel;
reo.dvaspect = DVASPECT_CONTENT;
reo.dwFlags = REO_RESIZABLE;
reo.dwUser = 0;
HRESULT hr = m_reportCtrl.GetIRichEditOle()->InsertObject(&reo);
}