Avatar billede dyrby Nybegynder
07. juni 2001 - 10:05 Der er 6 kommentarer og
1 løsning

Hvordan får jeg længden på en kendt streng i Visual c++.....2 ?

se: http://www.eksperten.dk/spm/79189 ...
Da jeg endnu ikkke har fundet en løsning på mit prob i mit forgående spg. prøver jeg igen.

Der oprettes en CButton på følgende måde:
<snip>
if (!shrinkCheck.Create(checkText, WS_VISIBLE | BS_AUTOCHECKBOX | WS_TABSTOP, rect, this, IDC_CHECK_SEARCH))
{
  TRACE0(\"Failed to create check-box\\n\");
  return (false);
}
</snip>

så sætter jeg fonten på checkboxen:

<snip>
shrinkCheck.SetFont(&tempFontHolder);
</snip>

nu vil jeg gerne have længden på den streng (checkText) som er brugt i checkboxen:

<snip>
CSize test = shrinkCheck.GetDC()->GetTextExtent(checkText);
</snip>

Mit problem er at den længde jeg får retuneret ikke passer med virkeligheden... Det virker som om at længden er for en standart anden font.
Med andre ord er længden retuneret uafhængig af den font jeg sætter min checkbox til?

Hvad gør jeg galt?
Avatar billede wisen Nybegynder
07. juni 2001 - 12:20 #1
Har du prøvet med \"GetOutputTextExtent()\" ?
Avatar billede dyrby Nybegynder
07. juni 2001 - 12:44 #2
Giver desværret samme forkerte resultat :( (så vit jeg kan se)
Avatar billede dejbjerg Nybegynder
08. juni 2001 - 02:48 #3
Jeg aner intet om det, men i MSDN under CDC::GetOutputTextExtent står:

Since some devices do not place characters in regular cell arrays (that is, they carry out kerning), the sum of the extents of the characters in a string may not be equal to the extent of the string.

Det samme står under CDC::GetTextExtent, CDC::GetTabbedTextExtent og CDC::GetOutputTabbedTextExtent.

Det kunne være en årsag.
Avatar billede wisen Nybegynder
08. juni 2001 - 07:55 #4
Hmm, hvad skal du bruge det til ?
Avatar billede wisen Nybegynder
08. juni 2001 - 07:56 #5
...Jeg har en lille idé med at lave en kompatibel DC i memory, som du kan skrive i, og derefter finde ud af, hvor meget teksten rent faktisk fylder. Jeg ved ikke lige pt. om det kan lade sig gøre, men det var da et forsøg værd...
Avatar billede dyrby Nybegynder
03. juli 2001 - 15:07 #6
dejbjerg<< det har ikke noget med det at gøre... jeg har fundet en løsning:
<snip>
CDC * tmpDC = CCombbBoxTing.GetDC();
tmpDC->SelectObject(&tempFontHolder);
textSize = tmpDC->GetTextExtent(checkText);
shrinkCheck.ReleaseDC(tmpDC);
</snip>

så wisen har helt klart fat i noget :)
Avatar billede dyrby Nybegynder
03. juli 2001 - 15:08 #7
det sidste shrinkCheck skulle have været CComboBoxTing :) Tak for indsatsen ellers ;)
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-Sikkerhedsrådgiver til Cyberdivisionen i Hvidovre

Nextway Software A/S

Software Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior Platform Engineer