היי חברה, גועל נפש....

MotiAd

New member
היי חברה, גועל נפש....

היי. לאחרונה התחלתי לעבוד על תוכנה גרפית ב-OpenGL (סליחה שמשלבת את זה) והיא מבוססת Console. או קיי. אז הבנתי שאני אצטרך להיעזר ב-Threadים בכל זה (שזה חלק מגעיל בפני עצמו אבל לא כאן הבעייה). כל המימוש שלי הוא סביב ++C ומחלקות, כך שיש לי מחלקות לציור פרימיטיביים ו-Meshים וכו'. גם מימשתי את כל הרעיון של יצירת חלון מימשתי ב-++C (כלומר יש מחלקה שכל תפקידה הוא לאתחל חלון חדש, ולאתחל אותו לעבודה ב-OpenGL עם כל השטיקים הנחוצים). עכשיו. כמובן שצריך להגדיר פונקציית CALLBACK שתממש את האירועים שמתרחשים לחלון. בניתי אותה כך שהיא מוגדרת כפרטית במחלקת החלון. מימשתי אותה ואני בונה את החלון בפונקציה אחרת שהיא לא הבנאי. כשאני מציב את הפונקציה לתוך השדה במבנה הדרוש הקומפיילר בקימפול אומר לי שאי אפשר להמיר את הפונקציה ל-WNDPROC. יש לכם מושג למה? צירפתי את הקוד לדוגמא.
 

gilad_no

New member
המימוש של הפונקציה לא נכון

תבטל את הCALLBACK במימוש ותוסיף את הגדרת המחלקה
LRESULT MyClass::WndProc(...) { }​
 

gilad_no

New member
ושכחתי משהו:

בהגדרת הפונקציה (בPRIVATE), תוסיף STATIC לפני הכל. CALLBACK חייבת להיות סטטית.
 

MotiAd

New member
אופס אופס....

לגבי ההודעה הראשונה שלך באמת שכחתי להוסיף את ההגדרה של המחלקה. ותודה. אני לא מבין איך לא שמתי לב לזה? קיבינימט. לא נורא סתם כאב ראש. תודה רבה שוב.
 
למעלה