תבניות מותאמות אישית של explorer בסגנון

כדי להגדיר פקדים נוספים עבור תיבת הדו-שיח בסגנון Explorer פתיחה או שמירה בשם , תשתמש במבנה הפרמטר OPENFILENAME כדי לציין תבנית עבור תיבת דו-שיח הילד המכיל פקדים נוספים. אם תבנית הדו-שיח הילד שלך הוא משאב ביישום או ספריית קישור דינאמי, להגדיר את הדגל OFN_ENABLETEMPLATE חבר דגלים והשתמש hInstance וחברי lpTemplateName של המבנה כדי לזהות את שם המודול ומשאבים. אם התבנית כבר בזיכרון, להגדיר את הדגל OFN_ENABLETEMPLATEHANDLE והשתמש חבר hInstance כדי לזהות את האובייקט זיכרון המכילה את התבנית. בעת מתן ילד הדו-שיח תבנית עבור תיבת הדו-שיח בסגנון Explorer, עליך להגדיר גם את הדגל OFN_EXPLORER; אחרת, המערכת מניחה שאתה מספק תבנית חלופית עבור תיבת הדו-שיח בסגנון הישן. בדרך כלל, אם תספק פקדים נוספים, עליך גם לספק של Explorer בסגנון לחבר הליך להודעות תהליך עבור פקדים חדשים.

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

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

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

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