CFont

CFont

יש לי radio button עם פונט ברירת מחדל בשלב מסויים אני צריך לשנות לו את הפונט ל BOLD ולתת לו צבע כחול ליצור פונט חדש אני יודע, הקטע זה ליצור אותו מהסוג של הברירת מחדל... ואיך משנים צבע..? תודה :)
 

vinney

Well-known member
אתה יכול להשתמש בGetFont

של הקונטרול, הוא מחזיר לך מצביע, איתו אתה יוצר את החדש, ומשים חזרה בSetFont.
 
תודה, בעיה חדשה צצה :)

CButton *b; CFont *f,blue; LOGFONT lf; b = (CButton *)GetDlgItem(IDC_RADIO)); f = b->GetFont(); f->GetLogFont(&lf); lf.lfWeight=700; blue.CreateFontIndirect(&lf); b->SetFont(&blue);​
הטקסט על הכפתור בדיאלוג (radio button) בברירת מחדל הוא tahoma ככה הדיאלוג עולה אחרי שאני משנה את הגופן זה מופיע כ FixedSys או משהו... למרות שאני רק לוקח את הפונט הישן משנה לו את המשקל (בשביל שיהיה BOLD) ושם אותו מחדש. איך אני יכול להחזיר את זה לגופן ברירת המחדל שמוגדר למי שמריץ את התוכנית. שוב תודה :)
 

vinney

Well-known member
אצלי זה עובד

m_Exit זה CButtont, וfnt זה *CFont:
fnt = new CFont(); m_Exit.GetFont()->GetLogFont(&lf); lf.lfWeight = 700; fnt->CreateFontIndirect(&lf); m_Exit.SetFont(fnt);​
עושה בדיוק את מה שרצית.
 
צודק ..

משום מה עם עוןשים הקצאה דינמית ל CFont החדש זה מתפקד טוב... (fnt = new CFont(); ) יש לך מושג למה ?
 

vinney

Well-known member
כן

אם תקרא את התעוד, רשום שם בפירוש שGetFont מחזירה ערך זמני שאסור לעבוד איתו, לכן אתה צריך לעשות הקצאה חדשה כדי להעביר אותה לSetFont חזרה.
 
למעלה