הדפסת מסכים בשפת סי

turbopascal

New member
הדפסת מסכים בשפת סי

אני רוצה לשלוח למדפסת את כל מה שמופיע על המסך בזמן הרצת התוכנית. (לא קוד מקור אלא בעצם התוצאה שלו).שהמשתמש בתוכנית יוכל ללחוץ על כפתור ולהדפיס את המסך, כמו בתוכנית ווינווז. (כאשר אני אגדיר את הפעולות שיעשו את זה). המטרה שלי לא לשמור את זה, אלא רק להדפיס. איך אפשר לעשות זאת? הקומפיילר שלי : BORLAND C++ 3
 

vinney

Well-known member
תלוי במדפסת

למדפסות שתומכות בDOS (רשום על האריזה/מדריך הפעלה) אפשר לכתוב דרך קובץ PRN (קובץ לכתיבה בלבד) או LPT1 (אם היא מחוברת דרך LPT). כל מה שנכתב לשם מועבר ישירות למדפסת ומודפס כמו שזה. אם המדפסת לא תומכת DOS, אז אתה צריך להשתמש בAPI של חלונות, וזה קצת מסובך יותר... תנסה את השיטה של DOS, אם היא לא עובדת, נפתור את הבעיה הזאת גם.
 

turbopascal

New member
לא מתאים

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

vinney

Well-known member
אז אני לא יודע איך עושים בבורלנד

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

joeher

New member
אבל כל הסביבה של BC3 זה סביסת DOS

או שאני טועה? ואם זה סביבת DOS אז ודאי שאתה אמור להדפיס למדפסת תואמת DOS, ואיך תראה שזה עובד בלי מדפסת? לכן אני חייב להניח שעיקר הבעיה היא דווקא "ללכוד" את המסך לתוך BUFFER , זאת ניתן לעשות ב DOS על ידי גישה ישירה לזיכרון המסך (יכול להיות ש XP לא ירשה זאת מתוך חלון DOS ונסה לפתוח COMMAND ולא CMD) ויש פקודות מיוחדות לכך ב BC (הזכרון שלי קצת עמום - נדמה לי שהיה שם PEEK כמו נשפת BAISC עתיקה, ודי בטוח שאתה יכול להגדיר FAR POINTER ולאתחל אותו בכתובת זכרון המסך משהוא כמו B800) בכל מקרה - גישה ישירה לזיכרון בימינו זה NO NO גדול אם אפשר להמנע מזה !!! אחרי שיש לך את זה בתוך הBUFFER אתה יכול לשאול "האם לשלוח פלט למדפסת או למסך ?" ולהראות שזב עובד על ידי שליחה למסך שורה אחרי שורה... או לשלוח ל PRN
 
למעלה