Vc++ פונ' חברות במחלקה Cstring

Mapisto

New member
Vc++ פונ' חברות במחלקה Cstring

איפה הנוחות של VB , חשכו עיניי, אבל אני מאמין שמתישהוא זה יראה לי באנלי. בכל מקרה, אני עובד עם איזה ספר של הוד עמי, מה שעשיתי זה שהגדרתי בדיאלוג list, והוספתי את משתנה המחלקה m_list מסוג CString so far so good. אבל עכשיו שאני מנסה לעשות m_list.AddString הוא כותב לי שCString לא מכירה את זה. הגיוני הרי המטרה היא להוסיף לרשימה, לא למחרוזת, הרי אם כבר m_list אז כבר עדיף שהוא יהיה מערך של Cstring. אז איך אני יכול להוסיף לרשימה בc++ מחרוזות. תודה לעונים.
 

ברנדל

New member
../images/Emo45.gif ../images/Emo45.gif ../images/Emo45.gif ../images/Emo45.gif ../images/Emo45.gif ../images/Emo45.gif ../images/Emo45.gif

שיצבע אותו בצהוב ויזרוק לשירותים הצחיק אותי הפרק על CSocket או CRecordSet. בכל אופן מפיסטו , הסתכלתי ב msdn ולא ראיתי ש AddString חבר במחלקה CString,מאיפה הבאת את זה? אני בטוח שגם בספר (אם כל זה שהוא גרוע) אין דוגמא כזו.
 

ברנדל

New member
התכוונתי ב CList כמובן

יש לך שם InsertAfter תשתמש בו. בכל מקרה בחיים לא השתמשתי בזה. הייתי הולך על stl בכל מה שנוגע ל containers
 

Mapisto

New member
הכוונה היא לספר

Visual C++ 6 סדנת לימוד הוצאת הוד עמי. יש המלצות אחרות?
 

frangelico

New member
נראה לי ש m_list לפי שמו

הוא משתנה מסןג CONTROL LISTBOX ואכן יש פונקציה כזו ל LISTBOX יש לך בלבול כלשהו בקוד.
 

ברנדל

New member
כן נכון

כנראה הוא התכוון לזה. בטח שכח לעשות UpdateData(true) ו UpdateData(false
 

Mapisto

New member
הממ

יצרתי דיאלוג ומשאב של ליסט השתמשתי בקלאס ויזארד במשתני החבר הוספתי לlist את m_list. הממ סליחה שאני קצת ליימר, אבל אני מקווה להשתפר :)
 

ברנדל

New member
יפה, עד כאן הכל טוב

אבל אתה לא יכול להשתמש בו סתם. עצם העדכון שלו , לא מעדכן לך גם את הליסט עצמו. אתה חייב להזרים את המידע מהאוביקט ל חבר המחלקה: UpdateData(true. ואח"כ להחזיר את המידע שהוזרם חזרה לאוביקט: UpdateData(false
UpdateData(true); m_list.InsertString("aviad"); UpdateData(false);​
 

frangelico

New member
ןגם......

אם הוספת את המשתנה בעזרת add variable אז היית צריך לסמן control ולא value. לי זאת נראית השגיאה.
 

Mapisto

New member
צודק ../images/Emo51.gif + כמה שאלות ../images/Emo13.gif

א' טוב אז טעמתי מעולם הOOP, אבל יש לי כמה שאלות 1. מה הטימטום שהוא מעדכן רק ש UpdateDate(false) ולא בtrue, אז מה true אומר? 2. הוספת משתני חבר נגיד לדיאלוג, איפה ההצהרה נמצאת (חיפשתי ולא מצאתי). 3. אם אתם זוכרים עשיתי משאב דיאלוג בתוך SDI, עכשיו יש את הintilinstancr שזה כאילו של הSDI ויש את הOnInitilDialog שזו פונקציה שנמצאת בדיאלוג. עכשיו, מתי אני יודע מתי לשים קוד בפונ' של הSDI ומתי של הDIalog/ נקווה שזה יקפוץ :p בתודה מראש, מפיסטו.
 

frangelico

New member
בקצרה 1 ו 2

1. לפקד יש משתנה שמשוייך אליו. עכשיו נגיד שאתה רוצה לשנות את הערך של הפקד אז אתה משנה את המשתנה ואז קורא לפונקצייה שתעדכן את הפקד. בגלל זה גם שמה UPDATEDATA . עכשיו נניח שאתה קולט מהמשתמש מידע אז אתה צריך לשמור אותו במשתנה זה לא נעשה אוטומטית כמו ב VB למשל אז אתה קורא לאותה פונקציה שוב עם הערך השני. בקיצור יש שני מצבים ולכן יש TRUE ו FALSE. 2. כל ההצהרות נמצאות בקבצי ה H. קאפיש ?
 

ברנדל

New member
תשובות

א. לא טמטום אלא שליטה, זו אחת הדוגמאות של עדיפות של VC++ לעומת VB. אתה צריך להבין שיש הבדל בין הפקד עצמו שמהווה חלון גרפי, לבין הייצוג שלו באמצעות אוביקט. ב VB בתור מתכנת אתה לא רואה את ההפרדה הזו, זה הכל מקשה אחת, שינית את הפקד, אז גם ה control שמייצג אותו יגיב בהתאם (לדוגמא ה מאפיין text ישתנה כשתפנה אליו) עכשיו שים לב שכל פעם שאתה פונה ב VB ל text יש לך אחזור מה פקד אל המשתנה ואין לך שליטה על זה (וזה גם לוקח זמן וסתם קוד רקע שבכלל לא ביקשת), עכשיו תאר לך טופס מלא פקדים, כל פעם שאתה פונה ל text זה מאחזר מחדש את הנתון. ב VC++ יש לך שליטה על מעבר המידע מהחלון לאוביקט, אתה יכול להעביר אותו עם UpdateData(true רק כשכל הטופס עם כל הפקדים מתמלא, ואתה עושה רק העברה אחת שהיא יותר מהירה מאשר כמה, או מאשר העברה חוזרת עבור כל פניה. ב. כפי שנאמר ב header, אל תשכח שזה משתנה מחלקה ולא משתנה ששייך לאחת הפונקציות ולכן הוא מוגדר בתוך המחלקה. ג. זה תלוי מה עשית, אם יש לך Dialog שהוא view אז הוא עובר initdialog רק פעם אחת וזה קורה לאחר ה init של חלון ה sdi. בזה של ה Dialog מעדכנים דברים שקשורים ל Dialog עצמו , כגון המידע הראשוני בתוך הפקדים, ב init של ה SDI מעדכנים דברים שרלוונטים לחלון כגון ה Icon שנמצא על הפס הכחול, או התפריט.
 

Mapisto

New member
../images/Emo51.gif הבנתי רק חידוד קטן

בקשר ל3 תראה כותב הספר שאני לומד ממנו כתב ככה
CSdiDialog dlg; dlg.m_check = TRUE; ... AfxMessageBox (msg);​
עכשיו הודות להבהרה שלך עם ההבדל מVB שצריך להתאים, אז בשורה הראשונה הוא מתאים את המחלקה לדיאלוג (מה הקלסויזרד) ובשורה השניה הוא כתב איזו שהיא הצהרה שיכלה גם להתאים לoninitdiaglog , אבל בשורה השלישית הוא כתב לשים איזה מסג' בוקס. עכשיו השאלה היא למה לשים את זה במחלקה של הSDI ולא לשים את זה בonok או בoncancel והafx יופיע רק שהוא כאילו יחזור לחלון של הSDI, אם אני מבין נכון. ובשורה הראשונה של הקוד, האם בזה שהוא אומר לו תיגש לבנאי ברירת המחדל של dlg, הוא גם מציג את הדיאלוג? בתודה מראש, מפיסטו.
 

Mapisto

New member
ספק אם זה יקפוץ

אעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעעע
 
למעלה