beregne størrelsen af en CString for forskellige sprog
HejI et MFCmiljø skal jeg resize en CStatic dynamisk så den passer til den tekst der fyldes ind i den - og det skal fungerer på mange forskellige sprog.
Bredden af min CStatic er fast og hvis teksten fylder for meget skal der gøres plads til ekstra linier og teksten wrappes således nedenunder. Mine problemer er flg:
1: Størrelsen på CString og min Cstatic (CSize og CRect) bruger ikke samme enheder, hvordan konverterer man mellem logiske units og pixels?
2: Kan jeg forvente at GetTextExtent(...) fungerer med både japanske og danske og andre karaktersæt?
Her er lidt kode, så langt som jeg er kommet (pseudo-kode):
// vars
CRect sRct;
CString str = "test";
// dimentionerne af teksten
CSize sStr = GetDC()->GetTextExtent ( str );
// hent cstatic størrelsen
GetDlgItem(IDC_STATIC)->GetWindowRect ( &sRct );
// antal linier der er nødvendige
int l = (int) ceil ((float)sStr.cx / (float)(sRct.Width()));
// resize CStatic så der er plads til teksten
m_Status.SetWindowPos ( NULL, 0, 0, sRct.cx, sStr.cy*l, SWP_NOMOVE );
Kommentarer og løsninger modtages med glæde :o)
./justask