ソースを参照

use rtf control to pre process rtf before we try and try, was finding newer versio of word would add data that our draw routine could not handle

sabrogden 8 年 前
コミット
e7b3e532c1
2 ファイル変更16 行追加23 行削除
  1. 15 23
      QListCtrl.cpp
  2. 1 0
      QListCtrl.h

+ 15 - 23
QListCtrl.cpp

@@ -550,36 +550,28 @@ BOOL CQListCtrl::DrawRtfText(int nItem, CRect &crRect, CDC *pDC)
 		m_pFormatter->Create();
 	}
 
+	if (m_rtfFormater.m_hWnd == NULL)
+	{
+		m_rtfFormater.Create(_T(""), _T(""), WS_CHILD | WS_VSCROLL |
+			WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_NOHIDESEL |
+			ES_AUTOHSCROLL, CRect(0, 0, 0, 0), this, -1);
+	}
+
 	if(m_pFormatter)
 	{
 	   char *pData = (char*)GlobalLock(pThumbnail->m_hgData);
 	   if(pData)
-	   {
-		   CStringA CStringData((char*)pData);		   
-
-		   /*CFile file;
-		   if (file.Open(_T("c:\\temp\\rtf.txt"), CFile::modeRead))
-		   {
-			   int len = file.GetLength();
-			   file.Read(CStringData.GetBuffer(len), len);
-			   CStringData.ReleaseBuffer();
-		   }*/
-
-		   //newer version of word adds these to the rtf, i tracked these sections down, remove them and it draws correcty, might find more later
-		   if (g_Opt.m_cleanRTFBeforeDrawing)
-		   {
-			   RemoveRTFSection(CStringData, "{\\fonttbl");
-			   RemoveRTFSection(CStringData, "{\\stylesheet");
-		   }
-
-		   CComBSTR bStr(CStringData);
-		   
+	   {		   
+		   //somehow ms word places crazy rtf text onto the clipboard and our draw routine doesn't handle that
+		   //pass the rtf text into a richtext control and get it out and the contorl will clean  the rtf so our routine can draw it
+		   m_rtfFormater.SetRTF((char*)pData);
+		   CString betterRTF = m_rtfFormater.GetRTF();		   
+
+		   CComBSTR bStr(betterRTF);		   
 		   m_pFormatter->put_RTFText(bStr);
 		   
 		   m_pFormatter->Draw(pDC->m_hDC, crRect);
 
-		   GlobalUnlock(pThumbnail->m_hgData);
-
 		   bRet = TRUE;
 	   }
 	}
@@ -781,7 +773,7 @@ int CQListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	else
 	{
 		EnableToolTips(FALSE);
-	}
+	}	
 
 	m_pToolTip = new CToolTipEx;
 	m_pToolTip->Create(this);

+ 1 - 0
QListCtrl.h

@@ -190,6 +190,7 @@ protected:
 	CString m_searchText;
 	BOOL m_showIfClipWasPasted;
 	CAccels *m_pToolTipActions;
+	CRichEditCtrlEx m_rtfFormater;
 
 
 	// Generated message map functions