חלון צאצא

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

חלון הצאצא חייב להיות חלון האב. חלון האב יכול להיות החלון חופף, חלון מוקפץ או חלון צאצא אחר. באפשרותך לציין את החלון האב כאשר תתקשר CreateWindowEx. אם באפשרותך לציין את סגנון WS_CHILD CreateWindowEx אך לא תציין חלון האב, המערכת אינו יוצר את החלון.

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

מיקום

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

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

מסיכה

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

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

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

יחסי הגומלין בחלון האב

יישום לשנות את החלון האב של חלון צאצא קיימות על-ידי קריאה לפונקציה SetParent . במקרה זה, המערכת מסירה את חלון צאצא של אזור הלקוח של חלון האב הישן, מעביר אותו אל אזור הלקוח של החלון האב החדש. אם SetParent מציין מזהה ייחודי NULL, החלונות של שולחן העבודה הופכת החלון האב החדש. במקרה זה, חלון צאצא מצויר על שולחן העבודה, מחוץ לגבולות חלון אחר. הפונקציה GetParent מאחזר נקודת אחיזה לחלון האב של חלון צאצא.

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

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

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

הודעות

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

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

Index