Avatar billede xenocypraz Nybegynder
23. juli 2004 - 10:26 Der er 5 kommentarer og
1 løsning

Visual C++lave font om på CString

Hejsa, en lille hurtig en inden weekenden,
hvordan laver jeg teksten om på en cstring, den skulle gerne blive lidt mindre,

        CString string;
        string.Format(("%.1f"), m_nTemperature);
        dc.TextOut(44, (int)x - 10, (string));

det er mit kode, hvad mangler jeg for at kunne gøre den mindre.

- XenoCypraZ
Avatar billede jpk Nybegynder
23. juli 2004 - 10:32 #1
Det er CString du skal ændre font på, den indeholder nemlig ikke sådan infomation!
Prøv at se følgende eksempel (ikke testet!)


// Describe a 24-point truetype font of normal weight
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -MulDiv(24, dc.GetDeviceCaps(LOGPIXELSY), 72);
lf.lfWeight = FW_NORMAL;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

// create and select it
CFont newFont;
if(!newFont.CreateFontIndirect(&lf))
  return;

CFont* pOldFont = dc.SelectObject(&newFont);

CString string;
string.Format(("%.1f"), m_nTemperature);
dc.TextOut(44, (int)x - 10, (string));

// Put back the old font
dc.SelectObject(pOldFont);
Avatar billede jpk Nybegynder
23. juli 2004 - 10:33 #2
Der skulle have stået:
Det er IKKE CString du skal ændre font på...
Avatar billede xenocypraz Nybegynder
23. juli 2004 - 10:57 #3
Super geil, det virker jo. :-) tusind tak,
Lige et tillægs spørgsmål hvis det er i orden,

hvis jeg nu vidste jeg ville bruge Arial fonten i størrelse 8, var der så ikke en nemmere måde at vælge den på ?

tusind tak og god weekend.
Avatar billede jpk Nybegynder
23. juli 2004 - 11:08 #4
Velbekomme...

Der er forskellige måder at oprette CFont-objekter på.
Hvis det er en font du bruger meget, vil jeg foreslå at du kun opretter den en gang.
Du kunne fx have en member i en klasse:

class Whatever
{
  ...
  CFont m_Font;
  ...
};

Og så fx i constructor:

m_Font.CreateFont(-MulDiv(8/*font størrelse*/, dc.GetDeviceCaps(LOGPIXELSY), 72), 0,0,0, FW_NORMAL, 0,0,0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial");

Så kan du nøjes med følgende når du skal skrive:

CFont* pOldFont = dc.SelectObject(&m_Font);

CString string;
string.Format(("%.1f"), m_nTemperature);
dc.TextOut(44, (int)x - 10, (string));

// Put back the old font
dc.SelectObject(pOldFont);
Avatar billede xenocypraz Nybegynder
23. juli 2004 - 11:11 #5
jeg takker mange gange, god weekend
Avatar billede jpk Nybegynder
23. juli 2004 - 11:12 #6
Tak, i lige måde...
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