Avatar billede justask Nybegynder
25. februar 2005 - 16:39 Der er 1 kommentar

beregne størrelsen af en CString for forskellige sprog

Hej

I 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
Avatar billede justask Nybegynder
25. februar 2005 - 16:42 #1
(( antal linier-divitionen er selvfølgelig gal, men det er heller ikke så vigtigt ))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester