תיבת הדו-שיח הדפסה מאפשר למשתמש לבחור אפשרויות עבור עבודת הדפסה מסוימת. לדוגמה, המשתמש יוכל לקבוע שהמדפסת תשתמש, את טווח העמודים שברצונך להדפיס ואת מספר העותקים.
Windows NT 5.0 ואילך: באפשרותך להשתמש בפונקציה PrintDlgEx כדי להציג את גליון המאפיינים של הדפסה , ובו דף כללי המכיל פקדים דומה לתיבת הדו-שיח ' הדפסה '. גליון המאפיינים שתהיה גם עמודי מאפיינים ספציפיים ליישום, ספציפיות למנהל התקן נוספים בעקבות עמוד כללי.
ליצור ולהציג את תיבת הדו-שיח הדפסה על-ידי אתחול מבנה PRINTDLG מעביר את המבנה לפונקציה PrintDlg.
האיור הבא מציג את תיבת דו-שיח הדפסה רגילה.
אם המשתמש לוחץ על לחצן אישור , PrintDlg מחזירה TRUE ומשתמש המבנה PRINTDLG כדי להחזיר מידע אודות הבחירות של המשתמש. לדוגמה, hDevMode וחברי hDevNames לחזור בדרך כלל זיכרון גלובלי נקודות האחיזה של DEVMODE ומבני DEVNAMES . באפשרותך להשתמש במידע במבנים אלה כדי ליצור בהקשר של מידע או בהקשר התקן עבור המדפסת הנבחרת.
אם המשתמש מבטל את תיבת הדו-שיח הדפסה או שתתרחש שגיאה, PrintDlg מחזירה FALSE. ניתן לקבוע את סיבת שגיאה על-ידי שימוש בפונקציה CommDlgExtendedError כדי לאחזר את הערך שגיאות מורחב.
תיבת הדו-שיח הדפסה כוללת טווח הדפסה קבוצה של לחצני אפשרויות המציינות אם המשתמש מעוניין להדפיס את כל העמודים, טווח עמודים או את הטקסט הנבחר בלבד. לפני הקריאה PrintDlg, באפשרותך להגדיר אחד הדגלים PD_ALLPAGES, PD_SELECTION או PD_PAGENUMS כדי לציין איזה לחצן נבחר בתחילה. כאשר PrintDlg מחזירה TRUE, הפונקציה קובע אחד דגלים אלה כדי לציין את הבחירות של המשתמש. אם הוא PD_PAGENUMS, nFromPage וחברי nToPage של מבנה PRINTDLG להכיל את העמודים שצוין על-ידי המשתמש ההתחלה והסיום. כדי להפוך ללא זמין את לחצן האפשרויות עמודים המשויך מתוך ולחברות פקדי עריכה , הגדר את הדגל PD_NOPAGENUMS. כדי לבטל את הבחירה בלחצן, להגדיר את הדגל PD_NOSELECTION.
תיבת הדו-שיח כוללת פקד עריכה שבה המשתמש להקליד את מספר העותקים שיש להדפיס. אם החבר hDevMode של מבנה PRINTDLG הוא שאינו NULL, החבר dmCopies מבנה DEVMODE ציון הערך ההתחלתי עבור פקד עריכה זה. אם hDevMode הוא NULL, חבר nCopies של מבנה PRINTDLG ציון הערך ההתחלתי. כאשר חוזר PrintDlg , nCopies מציין בדרך כלל את מספר העותקים שצוין על-ידי המשתמש. עם זאת, אם תגדיר את הדגל PD_USEDEVMODECOPIESANDCOLLATE בעת יצירת תיבת הדו-שיח, nCopies מוגדר תמיד ל- 1 חזרה, החבר dmCopies DEVMODE מציין את מספר העותקים להדפסה.
בתיבת הסימון אסוף מציין אם המשתמש רוצה לאסוף את הדפים אם להדפיס עותקים מרובים. הדגל PD_COLLATE מוגדר אם מסומנת בתיבת הסימון אסוף . אם היישום שלך אינו תומך עותקים מרובים או באיסוף מדומה, להגדיר את הדגל PD_USEDEVMODECOPIESANDCOLLATE החבר בדגלים של מבנה PRINTDLG . פעולה זו מבטלת את תיבת הסימון אסוף ולערוך מספר עותקים הפקד אלא אם מנהל המדפסת תומכת עותקים מרובים, איסוף.
תיבת הסימון ' הדפס לקובץ ' מציין אם המשתמש מעוניין לשלוח את פלט לקובץ במקום למדפסת. באפשרותך להגדיר את הדגל PD_PRINTTOFILE כך נבדקת תחילה תיבת הסימון. כדי להסתיר את תיבת הסימון, להגדיר את הדגל PD_HIDEPRINTTOFILE. כדי לבטל אותו, להגדיר את הדגל PD_DISABLEPRINTTOFILE. אם המשתמש בוחר באפשרות הדפס לקובץ , PrintDlg מגדיר את הדגל PD_PRINTTOFILE ומחזירה "קובץ:" ב ההיסט שצוין על-ידי חבר wOutputOffset של מבנה DEVNAMES . כאשר אתה קורא בפונקציה StartDoc כדי להתחיל את פעולת ההדפסה, לציין זאת "קובץ:" במחרוזת החבר lpszOutput מבנה DOCINFO . קביעת מחרוזת זו גורמת למערכת המשנה של הדפסה כדי לבצע שאילתה המשתמש את שם קובץ הפלט.
כברירת מחדל, תיבת הדו-שיח ' הדפסה ' מציגה בתחילה מידע אודות מדפסת ברירת המחדל הנוכחית. באפשרותך לכוון כדי להציג מידע עבור אחר מדפסת שהותקנה על-ידי אתחול DEVMODE או מבנה DEVNAMES , הקצאת זיכרון גלובלי לטפל עבור המבנה אל חבר hDevMode או hDevNames . שם ההתקן שציינת בחבר dmDeviceName של מבנה ה- DEVMODE או חבר wDriverOffset של מבנה DEVNAMES חייב לזהות התקן המדפסת מופיע גם בסעיף [Devices] הניצחון.קובץ INI. אם ההתקן לא מופיע ברשימה, PrintDlg מחזיר הודעת שגיאה.
באפשרותך לכוון PrintDlg ליצירת הקשר ההתקן או מידע הקשר עבור המדפסת על-ידי הגדרת הדגל PD_RETURNDC או PD_RETURNIC החבר בדגלים של מבנה PRINTDLG . הפונקציה מחזירה את נקודת האחיזה של מכשיר הקשר או מידע הקשר חבר hDC . אם אתה משתמש את הדגל PD_RETURNDC, באפשרותך להשתמש בהקשר התקן להפקת פלט עבור המדפסת.
כדי לאחזר מידע אודות מדפסת ברירת מחדל מבלי להציג את תיבת הדו-שיח הדפסה , הגדר את הדגל PD_RETURNDEFAULT. במקרה זה, PrintDlg מחזירה מיד לאחר הגדרת חברי hDevMode ו hDevNames נקודות האחיזה של מבנים המכיל את המידע.
כברירת מחדל, PrintDlg מציג תיבות הודעה כאשר מתרחשות שגיאות. לדוגמה, הפונקציה מציגה הודעת שגיאה אם לא מותקנות מדפסות. כדי למנוע הצגת הודעות אלה של הפונקציה, להגדיר את הדגל PD_NOWARNING.