OCX Control für MS Word

Von: , Frage gestellt am So, 11. Nov 2007

Hallo allerseits,

ich erstelle derzeit ein MFC ActiveX Control, das in MS Word eingebunden und einen Barcode darstellen soll. Das Einbinden sowie das Realisieren der Properties etc klappt auch soweit.
Das Problem entsteht vielmehr bei der Darstellung. CDC::CreatePointFont() beispielsweise kann ich nicht nutzen, sondern muss vielmehr auf CDC::CreateFont() zurückgreifen. Kopfzerbrechen bereitet mir CDC::GetTextExtentW(). Im Testcontainer für ActiveX Module des Visual Studios arbeitet die Methode einwandfrei. Wenn das OCX jedoch im Word ausgeführt wird, liefert sie falsche Werte, die offensichtlich direkt mit der Breite bzw. Höhe des Controls zusammenhängen.

Beispiel:

void CCode128::Draw(CDC* pdc, CRect cr)
{
CString Inhalt;
...snip...
CFont font;
font.CreateFont(text_rect.Height(),text_rect.Height()/2,
0,0,FW_NORMAL,FALSE,FALSE,FALSE,ANSI_CHARSET,                         
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH,_T("Arial"));
pdc->SelectObject(&font);
CSize siz = pdc->GetTextExtent(Inhalt);
...snip...
}


In diesem Beispiel enthält die Variable size jeweils die 8-fache Größe der ClientArea. Ich benötige jedoch die Größe des Strings, um ihn zentriert darstellen zu können, da die Methode CDC::DrawText() mit DT_CENTER auch nicht korrekt funktioniert.

Weiß jemand wo da der Knackpunkt sein könnte?

Danke im Voraus,
Andreas

0 Antworten zu dieser Frage

    Keine passende Antwort gefunden? Jetzt eigene Frage stellen!