חלון הליך Superclassing

Superclassing היא טכניקה המאפשרת יישום ליצור מחלקת חלון חדש עם פונקציונליות בסיסית של מחלקה קיימת, בתוספת שיפורים שסופקו על-ידי היישום. מחלקת על מבוססת של מחלקה קיימת של חלון המכונה במחלקת בסיס. לעתים קרובות, המחלקה הבסיסית היא מחלקת חלון הכללית מערכת כגון פקד עריכה, אך הוא יכול להיות כל מחלקת חלון.

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

בניגוד שגרה לתתי, שגרה מחלקת על אפשרות לעבד הודעות יצירת חלון (WM_NCCREATE, WM_CREATEוכן הלאה), אך הוא חייב גם להעביר אותם ההליך המקורי של מחלקת בסיס חלון כך ההליך מחלקת בסיס חלון ניתן לבצע הליך האתחול שלו.

על מחלקת על מחלקת חלון, יישום תחילה קוראת לפונקציה GetClassInfo לאחזור מידע אודות מחלקת הבסיס. GetClassInfo ממלא מבנה WNDCLASS עם הערכים מתוך המבנה WNDCLASS של מחלקת הבסיס. בשלב הבא, היישום מעתיק את המזהה הייחודי של המופע שלו לתוך חבר hInstance של מבנה WNDCLASS ומעתיקה את השם של מחלקת אל חבר lpszClassName . אם המחלקה הבסיסית יש תפריט, היישום חייב לספק תפריט חדש עם מזהי התפריט זהה והעתק את שם התפריט לתוך חבר lpszMenuName . אם ההליך מחלקת על מעבד את הודעת WM_COMMAND לא יעבור אותו הנוהל חלון של המחלקה הבסיסית, התפריט אינם צריכים להיות מזהים המתאים. GetClassInfo אינה מחזירה את החבר lpszMenuName, lpszClassNameאו hInstance של מבנה WNDCLASS.

יישום יש להגדיר גם את החבר lpfnWndProc של מבנה WNDCLASS . הפונקציה GetClassInfo ממלא איבר זה עם הכתובת של ההליך החלון המקורי עבור המחלקה. היישום חייב לשמור כתובת זו, להעברת מסרים ההליך החלון המקורי, ולאחר מכן העתק את הכתובת של ההליך מחלקת על תוך חבר lpfnWndProc . היישום, במידת הצורך, לשנות כל חברים אחרים של מבנה WNDCLASS . לאחר שתמלא את המבנה WNDCLASS , היישום רושמת העל על-ידי העברת הכתובת של המבנה לפונקציה RegisterClass . מחלקת יכול לשמש לאחר מכן ליצור חלונות.

מכיוון superclassing רושמת את מחלקת חלון חדש, יישום להוסיף גם את הבתים מחלקה נוספת וגם בתים חלון נוסף. מחלקת עליך להשתמש בתים נוספים המקורי עבור מחלקת הבסיס או את החלון מאותן סיבות של מחלקת משנה של מופע או מחלקת משנה הכללית לא ישתמשו בהם. כמו כן, אם היישום יוסיף בתים נוספים לשימוש שלו המחלקה או המופע חלון, הוא חייב לפנות את הבתים נוסף ביחס מספר הבתים נוסף המשמש את מחלקת הבסיס המקורי. מאחר מספר הבתים בשימוש על-ידי מחלקת בסיס עשוי להשתנות מגירסה אחת של מחלקת הבסיס לבא, ההיסט ההתחלתי עבור עצמו של מחלקת בתים נוספים עשויים גם משתנות גירסה אחת של המחלקה הבסיסית הבאה.

Index