Probleme mit CGridCtrlDemo und Richedittext
-
Viele kennen bestimmt das Projekt CGridCtrlDemo von Chris Maunder.
Es gibt auch ein Grid mit CRichEditCtrl Unterstützung (CInPlaceRichEdit, ES_WANTRETURN | ES_MULTILINE, usw.).
Leider funktioniert es nicht so richtig.Erstes Problem:
Wenn ich mehre Textzeilen in einer Zelle erfasse und diese dann verlasse so wird immer nur die erste Zeile angezeigt. Ich hab versucht die Funkt. Drawtext() anzupassen (DT_CALCRECT |DT_WORDBREAK). Ohne sichtbaren Veränderungen.
Zweites Problem:
In der Zelle markiere ich eine(n) Text bzw. Buchstabe und verändere die Schriftgröße.
Wird auch richtig ausgeführt, aber die Zellenhöhe (row) wird nicht bzw. falsch angepaßt.
Ist ja auch logisch da bei zeichnen und rowheight ermitteln Richedittext verwendet wird.
Mein Problem ist, wann und welcher Stelle ich den Richedittext in ein String umwandeln soll!?Hat jemand eine Idee

-
Ich glaube die Ursache liegt am ende der Funktion CGridCellRich::Draw()!
FORMATRANGE fr;
UINT Left=::MulDiv(rect.left, 1440, pDC->GetDeviceCaps(LOGPIXELSX));
UINT Top=::MulDiv(rect.top, 1440, pDC->GetDeviceCaps(LOGPIXELSY));
UINT Right=::MulDiv(rect.right, 1440, pDC->GetDeviceCaps(LOGPIXELSX));
UINT Bottom=::MulDiv(rect.bottom, 1440, pDC->GetDeviceCaps(LOGPIXELSY));CRect Rect (Left,Top,Right,Bottom);
fr.hdc = pDC->m_hDC;
fr.hdcTarget = pDC->m_hDC;
fr.rc = Rect;
fr.rcPage = Rect;
fr.chrg.cpMin = 0;
fr.chrg.cpMax = -1;
CString Text=GetText ();
UINT StreamType;if (Text.Left (6)=="{\\rtf1")
StreamType=SF_RTF;
else
StreamType=SF_TEXT;EDITSTREAM es = {(DWORD)&Text, 0, EditStreamCallBack};
m_pRichEditTemp->SetSel (0,-1);
m_pRichEditTemp->SetBackgroundColor (FALSE,TextBkClr);
m_pRichEditTemp->Clear ();
m_pRichEditTemp->StreamIn(StreamType, es);
m_pRichEditTemp->FormatRange(&fr, TRUE);// Update the display with the new formatting
m_pRichEditTemp->GetClientRect (&Rect);
m_pRichEditTemp->DisplayBand(&Rect);pDC->RestoreDC(nSavedDC);
return TRUE;
Hat jemand eine Idee?
mfg,
tocha
-
s. a. Teillösung unter www.fachinformatiker.de (CGridCtrlDemo)