דיאלוג דינמי ב-MFC

annefan

New member
דיאלוג דינמי ב-MFC

אני ליצור דיאלוג ב-MFC, ובו יהיו כמה checkboxes. מספרם יקבע בזמן הריצה. שמתי ב-OnInitDialog את הלולאה:
BOOL Cpalmsync2guiDlg::OnInitDialog() { ... // TODO: Add extra initialization here const int RES = 100; TEXTMETRIC tm; CClientDC dc (this); dc.GetTextMetrics (&tm); CString str; int x = tm.tmAveCharWidth; int y = tm.tmHeight; CRect rect; for (int i = 0; i < conduitsNum_; ++i) { str.Format("text %d", i*10); dc.TextOut(i*10,i*10,str); rect.SetRect (x * 2, ((i+1) * 30), x * 48, ((i+1) * 30)+15); checkboxes_.Create(cm_->getInfo(i).c_str(), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, rect, this, RES + i); //checkboxes_.SetFont(&font, TRUE); } return TRUE; // return TRUE unless you set the focus to a control }

עזבו את המסביב. הלולאה מוסיפה את ה-heckboxes כמו שצריך. אבל מה? הגופן דפוק. איף אני קובע את הגופן של הטקסט שצמוד ל-CHECKBOX?
 

annefan

New member
תודה על התשובה הארוכה והמנומקת...

אכפת לך לפרט קצת יותר, דוגמא קטנה אם אפשר?
 

galh

New member
אני אשתדל לפרט יותר. ../images/Emo151.gif

דבר ראשון יוצרים את הפונט שאתה רוצה (או מוצאים handle של פונט קיים):
LOGFONT lf = { -11, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, _T("Tahoma") }; HFONT hFont = ::CreateFontIndirect(&lf);​
ואז שולחים הודעה לכפתור (החלון) שיצרת:
::SendMessage(hWnd, WM_SETFONT, (WPARAM)hFont, (LPARAM)FALSE);​
ואם לא דיברתי שטויות (כמו בדרך כלל) אז הפונט אמור להשתנות.
 

annefan

New member
מה ביקשתי, ווגי? הא? מה ביקשתי??

סתם. הכל חוץ מקביעת הפונט זה חלק ממשחקים שלי. textout גם. הפתרון של גל עובד, אבל עוד לא הצלחתי לעשות את זה עם MFC.
 

galh

New member
אין בעד מה. ../images/Emo11.gif

תפוז מחייך. מה כבר אני מבקש?!
 

annefan

New member
מי יכול לחייך, מי?

רק לשבור שיניים על MFC! אבל, כמובן, המון תודה!
 
למעלה