Поиск:

Ответ в темуСоздание новой темы Создание опроса
> картинка в RichEdit 
:(
    Опции темы
IKM2007
Дата 17.4.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Доброго дня. Есть файл *.rtf. В нем вставляю картинки (Bitmat), но когда считиваю из файла, то картинки игнорируются. Читаю из файла с помощью функции StreamIn.
Что мне делать? Спасибо.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Засвети исходник


--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 23.4.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Код

static DWORD CALLBACK strin(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;

   *pcb = pFile->Read(pbBuff, cb);

   return 0;
}

void CHelpForCPlusPlusDlg::print(char *a)// функция для вывода файла в RichEdit
 { 
    CFile cFile(TEXT(a), CFile::modeRead);
   EDITSTREAM es;
   es.dwCookie = (DWORD) &cFile;
   es.pfnCallback = strin; 
   m_crich.StreamIn(SF_RTF, es);
 }


Также интересно, как в RichEdit загрузить еще и таблицы Excell из *.rtf документа.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Код

/////////////////////////////////////////////////////////////////////////////
// Local utility functions

//
// RTF edit control StreamIn's callback function
//    - see CRichEditCtrl::StreamIn
//
static DWORD CALLBACK _LoadRtfCallback(
   DWORD dwCookie,      // (in) pointer to the string
   LPBYTE pbBuff,       // (in) pointer to the destination buffer
   LONG cb,             // (in) size in bytes of the destination buffer
   LONG FAR *pcb        // (out) number of bytes transfered
   )
{
   LPCTSTR pszMsg = (LPCTSTR)dwCookie;

   // number of bytes to copy
   *pcb = _tcslen( pszMsg ) * sizeof(TCHAR);

   // limiting it up to the buffer's size
   if( *pcb > cb )
      *pcb = cb;

   // copying the string to the buffer
   memcpy( pbBuff, pszMsg, *pcb );

   // advancing to the end of the string
   pszMsg += *pcb / sizeof(TCHAR);

   // if it's the end of the string, returns NULL;
   // otherwise, returns a pointer to the next char to transfer as the cookie
   return ( *pszMsg != '\0' ) ? (DWORD)pszMsg : NULL;
}
void CTcxMsgBox::CreateRtfCtrl()
{
   // Creating the Rich Edit control

   CRect rcDummy; // dimesion doesn't matter here

   m_edCtrl.Create( WS_CHILD|WS_VISIBLE|ES_LEFT|ES_MULTILINE|ES_READONLY, rcDummy, this, (UINT)IDC_STATIC );
   m_edCtrl.SetBackgroundColor( FALSE, ::GetSysColor( COLOR_3DFACE ) );
   m_edCtrl.SetFont( GetFont() );  

   if( m_bRtf )
   {
      // Loading a RTF message
      EDITSTREAM es;
      es.dwCookie = (DWORD)(LPCTSTR)m_strMsg;
      es.dwError = 0;
      es.pfnCallback = _LoadRtfCallback;

      m_edCtrl.StreamIn( SF_RTF, es );
   }
   else
   {
      // Loading a plain text message
      m_edCtrl.SetWindowText( m_strMsg );
   }

   /////////////////////////////////////////////////////////
   // Calculating the best Rich Edit control dimension
   //
   // Note:
   //    There's no Rich Edit operation to get the minimum
   //    width it needs to show its contents without line
   //    breaks. However, given a width, we can check
   //    how much height it needs to show its text (see
   //    bottomless rich edit controls).
   //    We'll this mechanism to perform a binary search
   //    and find that best width value.

   m_edCtrl.SetEventMask( ENM_REQUESTRESIZE );

   m_dimMsg.cx = 0;
   m_dimMsg.cy = 0;

   // Performing a binary search for the best dimension

   int cxFirst = 0;
   int cxLast = ::GetSystemMetrics( SM_CXFULLSCREEN );
   int cyMax = 0;

   do
   {
      // taking a guess
      int cx = ( cxFirst + cxLast ) / 2;

      // testing it
      CRect rc( 0, 0, cx, 1 );
      m_edCtrl.MoveWindow( rc );
      m_edCtrl.RequestResize();

      // if it's the first guess, take it anyway
      if( cyMax == 0 )
         cyMax = m_dimMsg.cy;
      
      // refining the guess
      if( m_dimMsg.cy > cyMax )
      {
         cxFirst = cx + 1;
      }
      else
      {
         cxLast = cx - 1;
      }
   }
   while( cxFirst < cxLast );
}



--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 23.4.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Alca, я запутался, WinAPI совсем не знаю. Если можно, то прикрепи проект, или передай по аське. Буду благодарен.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



TcxMsgBox_demo.zip

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  TcxMsgBox_demo.zip 27,28 Kb


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 23.4.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Цитата

Alca, я запутался, WinAPI совсем не знаю.

Это же МФЦ 

Это сообщение отредактировал(а) Alca - 23.4.2009, 17:29


--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 23.4.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Цитата(Alca @  23.4.2009,  17:22 Найти цитируемый пост)
Это же МФЦ 

РИч эдит механическим путем не создовал, поэтому так подумал. 
Alca, спасибо за проект, но мне ведь мне нужно читать из *.rtf файла картинки, а не просто иконки.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Цитата

но мне ведь мне нужно читать из *.rtf файла картинки

Типа надо вынуть только картинку и куда-то сохранить?


--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 23.4.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Нет, я пишу что-то типа MSDN. То есть есть файлы *.rtf(я их создаю вручную), и в RichEdite печатаю из файла не теряя стили, размеры фонтов и цвет шрифта, одним словом форматирование. В *.rtf файлах есть риснуки Bitmap, как их напечатать в тексте в соответствующем месте?


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Почитай доку по RTF формату

Добавлено через 3 минуты и 2 секунды
Возьми создай RTF-фник с рисунком в Ворде или еще в чем, открой блокнотом и посмотри что там внутри.

Добавлено через 4 минуты и 6 секунд
Попробуй загрузить этот файл программно.

Это сообщение отредактировал(а) Alca - 23.4.2009, 18:05


--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 23.4.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



В RichEdite распечатать весь *.rtf файл, включая картинки(в соответствующих местах). То есть  *.rtf файл, открытий WordPad-ом и распечатанный в RichEditе выглядел одинаково. Если нужно, могу исходники прикрепить.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 23.4.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Выкладывай


--------------------
PM WWW ICQ Skype Jabber   Вверх
IKM2007
Дата 24.4.2009, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Рабочие классы на данный момент только ios_base и ios.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  Help_For_CPlusPlus.rar 68,93 Kb


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Alca
Дата 24.4.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



A Rich Edit Control That Displays Bitmaps and Other OLE Objects

Добавлено через 1 минуту и 36 секунд
Цитата

"If you want object insertion operations to work in your RichEdit control, you have to supply an IRichEditOleCallback interface and implement the GetNewStorage method."


Добавлено через 6 минут и 6 секунд
COleRichEditCtrl 


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.