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 fra Cognizant
AI er ikke problemet. Eksekvering er.
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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