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
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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);
Der skulle have stået: Det er IKKE CString du skal ændre font på...
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.
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);
jeg takker mange gange, god weekend
Kurser inden for grundlæggende programmering