Исправлено форматирование текста. — SchweinDeBurg
Здравствуйте, Carc, Вы писали:
C>как вставить картинку в CRichEditCtrl из файла (битмап)? я посмотрел примеры с codeguru, codeproject. Но если файл сохранить в ртфе, а потом прочитать, то картинка не отображается заново. А если в том же ворде в ртф файл вставить картинку, сохранить и прочесть файл в CRichEditView, то всё отображается нормально. В чем дело? Куда копать? Почему сохранненный файл с картинкой не отображается после открытия.
Попробуй пропустить через функцию .....
pFile — указатель на CFile или CMemFile, и не забудь про заголовки RTF формата
void CRTFCommand::AddBitmap(CBitmap *m_bmp)
{
int nCount;
if (m_bmp != NULL && isOpen)
{
BITMAP m_Bitmap;
m_bmp->GetBitmap(&m_Bitmap);
CString strBitmap;
strBitmap.Format("{\\pict\\wbitmap0\\pich%d\\picw%d\\wbmbitspixel%d\\wbmplanes%d\\wbmwidthbytes%d\\bin ",m_Bitmap.bmHeight, m_Bitmap.bmWidth, m_Bitmap.bmBitsPixel, m_Bitmap.bmPlanes, m_Bitmap.bmWidthBytes);
nCount = strBitmap.GetLength();
pFile->Write(strBitmap.GetBuffer(), nCount);
strBitmap.ReleaseBuffer();
DWORD dwSizeImage = m_Bitmap.bmHeight * m_Bitmap.bmWidthBytes;
BYTE *lpBits = new BYTE[dwSizeImage];
m_bmp->GetBitmapBits(dwSizeImage, lpBits);
register char sBit[3];
sBit[0] = sBit[1] = sBit[2] = '0';
char *pFullBits = NULL;
if (bMemOpenFile)
{
pFullBits = new char[dwSizeImage *2 + 1];
strcpy(pFullBits, "");
}
for(int i = 0; i < dwSizeImage; i++)
{
sprintf(sBit,"%x",lpBits[i]);
if (sBit[1] == '\0')
{
sBit[2] = '\0';
sBit[1] = sBit[0];
sBit[0] = '0';
}
if (bMemOpenFile)
{
pFullBits[i * 2] = sBit[0];
pFullBits[i * 2 + 1] = sBit[1];
}
else
pFile->Write(sBit, 2);
}
if (bMemOpenFile)
{
pFullBits[(dwSizeImage - 1) * 2 + 2] = '\0';
pFile->Write(pFullBits, dwSizeImage *2);
delete[] pFullBits;
}
delete[] lpBits;
strBitmap.Format("}\\par ");
nCount = strBitmap.GetLength();
pFile->Write(strBitmap.GetBuffer(), nCount);
strBitmap.ReleaseBuffer();
}
}