WIN32API ומבוא ל-MFC למתכנתי 6 ++VISUAL C

עריכה ועיצוב – רמה שנקלר | 651, 31 עמודים : איורים ; 24 ס"מ + 2 תקליטורים. – ISBN 965-361-255-7

OCR (הסבר)
לח ומבוא ל-6זוו! /למתכנת' 6 ++6 |808ו/ וקה32חו/ ומבוא ל-6-ו למתכנתי 6 ++6 |ב0פו יש להתעלם מכל מה שנכתב על התקליטור. אין תקליטור מצורף עם תוכנה. את קוד המקור ניתן להוריד מאתר הוד-עמי בתיקיה "קבצי תרגול לספרים" עורכת ראשית: שרה עמיהודד עריכה ועיצוב: רמה שנקלר יועוץ מקצועי: מאיר קלטר עיצוב עטיפה: ישראל מצגר שמות מסחריים. שמות המוצרים והשירותים המוזכרים בספר הינם שמות מסחריים רשומים של החברות שלהם. הוצאות. הוד-עמי עשתה כמיטב יכולתה למסור מידע אודות השמות המסחריים המוזכרים בספר זה ולציין את. שמות החברות, המוצרים והשירותיס. שמות מסחריים רשומים (8165ו1:8060 1601619706) המווכרים. הודעה ספר זה מיועד לתת מידע אודות מוצרים שונים. נעשו מאמצים רבים לגרום לכך שהספר ייה שלם. ואמין ככל שניתן, אך אין משתמעת מכך כל אחדיות שהזא.. המידע ניתן "כמות שהוא" ("פ! פג"). הוצאת הוד- עמי אינה אחראית כלפי יחיד או ארגון עבור כל אובדן או נזק אשר ייגרם, אם ייגרם, מהמידע שבספר זה, או מהתקליטורים שמצורפים לו. |לשם שטף הקריאה כתוב ספר זה בלשון זכר בלבד. ספר זה מיועד לגברים. ונשים כאחד ואין בכוונתנו להפלות או לפגוע בציבור המשתמשים/ות.. ב טלפון: 09-9564716 ב פקס: 09-9571582 ב דואר אלקטרוני: |ו.301.60-106000₪ח1 ב אתר באינטרנט: |ו.60. 1וחב- סח ושאר 1ק32חו/ ומבוא ל-1-6 למתכנתי 6 ++6 |בּטפו ייעוץ מקצועי: מאיר קלטר הוצאת הוד-עמי [) לספרי מחשבים 6 סו הסוז6טטסזפחו חב זק ה32חוער 6 כל הזכויות שמורות. הוצאת הוד-עמי לספרי מחשבים בע''מ ת.ד. 6108 הרצליה 46160 טלפון: 09-9564716 = פקס: 09-9571582 [ו.1.60וה000-3 100 אין להעתיק או לשדר בכל אמצעי שהוא ספר זה או קטעים ממנו בשום צורה ובשום אמצעי אלקטרוני או מכני, לרבות צילום והקלטה, אמצעי אחסון והפצת מידע, ללא אישור בכתב. מאת ההוצאה, אלא לשם ציטוט קטעים קצרים בציון שם המקור. הודפס בישראל 2000 ופ וו 0-8 בץולזסוז ,6108 .0.8 1 מסתייב 965-361-255-7. 158% תוכן עניינים מקוצר פרק 1: הקדמה פרק 2: תכנות בחלונות א9, סקירה.. פרק 3: עיבוד הודעות פרק 4: תיבות הודעה ותפריטים .. פרק 5: היכרות עם תיבות דו-שיח.. פרק 6: ממשק התקן גרפי פרק 7: מפות סיביות, קבצי-על וסמלים (00305ז/8, 161311165 ו-005ס1) -- פרק 8: מבט מקרוב על פקדים.. פרק 9: הקדמה לפסי גלילה (8315 |50101) .. פרק 10: הטיפול בטקסט . פרק 11: עבודה בגרפיקה . פרק 12: פקדים משותפים. פרק 13: פקדים משותפים נוספים פרק 14: מבט נוסף על פקדים משותפים ... פרק 15: ניהול זיכרון .. פרק 16: תהליכים ומטלות .. תוכן הענייניס ‏ 5 פרק 17: קלט/פלט בחלונות נספח א - פונקציות נוספות והרחבה נספח ב - סו אינדקס .- 6 אכבה ומבוא ל-0פו תוכן עניינים פרק 1: הקדמה ריבוי משימות מבוסס על מטלוו ממשק בשיטת הקריאות.. ספריות בקישור דינמי (ופ). תורי קלט.. מטלות ותהלוכים. פקדים מיעון כתובות רציף. פקדים כלליים חדשים. הקשר עם דו!.. עם איזו תוכנה להריץץ את התוכניות בספרו. 8 ו הוכן נמצאום הקבצים הקשורים לספר זת1. 5 העתקת קבצו המקור לדוסק. 5 פרק 2: תכנות בחלונות א9, סקירה.. 6 2.1 מבט על התכנות בחלונות א9.. 2 מבט אל שולחן העבודה.. העכבר סמלים ומפות-סיביות. תפריטים, סרגלי כלים, סרגלי סטטוס ותיבות דו-שיח. 3 קשרי גומלין בין חלונות א9 לתוכנית שלך. 4 ממשק תכנות יישומים 71 - של 2בחוצ 5 מרכיבי חלון בתוכנית סח . 6 חלון-אב וחלון-בן (פאוסמחוא 6/6 חב שחפזה) - 7 יישומי חלונות אפ, עקרונות בסיסיים. הקדמה למטלות (05ז1) , 8 הודעות התוכנית 16559065 חואו 0 פונקציית החלון. 1 סגנונות של חלונות - 6 7 7 8 8 8 > 30 ₪ 3 3 35 6 37 37 תוכן הענייניס ‏ 7 2 לולאת ההודעות.. 3 סוגים של נתוני חלונות. 1% תוכנית מסגרת לחלונות 9% . הפונקציה חופוחחחוצ הגדרת סגנון החלון כיצד ליצור חלון לולאת ההודעות.. פונקציית החלון. 5 כללום לקביעת שמות. פרק 3: עיבוד הודעות 1 מקן הודעותז 2 ההודעה 056006 אע 3 קריאת לחצני העכבר. 4 תגובה לאירועי מקלדת. 5 מקשים וירטואליים (66/5 |הטזזוא. 6 הצגת המקשים חווירטואליים. 7 מבט נוסף על השימוש בהודעה א//ו0 6 יוא 8 משך ומן הלחיצה הכפולה בעכבר.. 9 החלפת לחצני העכבר. הקשרי התקנים.. 0 עיבוד הודעה של דאזק אצ 1 כיצד להפיק הודעת דאזאק א 2 הפקת הודעות של קוצב זמן פרק 4: תיבות הודעה ותפריטים . 4.1 הפונקציה אסףססַפפסו. 2 הפונקציה 1559009660 3 היכרות עם תפריטים. 4 כיצד להשתמש במשאבים.. כיצד להדר קבצי ₪6 5 סוגי תפריטים (65ד טחסות 6 מבנה התפריט.. 7 יצירת תפריט בקובץ המשאבים.. 8 המתארים קפס ו- ואדנטאטו 9 הוספת תפריט לחלון היישום. 0 שינוי תפריטים בתוך היישום. 1 הודעות שנוצרות על ידי תפריטים.. 2 הוספת מקשים מחירים.. 3 כיצד לטעון את טבלת המקשים המהירים. 8 זקא2בח/ ומבוא ל-0פו פרק 5: היכרות עם תיבות דו-שיח.. 5.1 ביצד מתבצעת התקשורת בין תיבת הדו-שיח והמשתמש. 2 הגדרת סוגי תיבות דו-שיח. 3 קבלת הודעות מתיבות דו-שיח. 4 כיצד ליצור תיבת דו-שיח פשוטה.. 5 קובץ המשאבים של תיבת הדו-שיח.. רכיבי תבנית תיבת הדו-שיח. יצירת תבנית לתיבת דו-שיח. הגדרת הרכיבים של תיבת הדו-שיח. הגדרת הפקדים של תיבת דו-שיח.. 6 הצגת תיבת דו-שיח עם המאקרו אספפטוּ: 7 לולאת ההודעות של תיבת הדו-שיח. 8 השימוש במקלדת עם תיבות דו-שיח. 9 תוכנית ראשונה ליצירת תיבת דו-שיח. 0 אתחול נתונים בתיבת דו-שיח.. 1 המאקרו 0163000 2 הפונקציה 9₪ז3ל01031601/00. 3 ברירת המחדל לטיפול בהודעות של תיבת דו-שיח.. 4 סגירת תיבת הדו-שיח - פָט00₪3ח5. 5 כיצד להוסיף תיבת רשימה .. עקרונות בסיסייים בהפעלת תיבות רשימה. כיצד לאתחל את תיבת הרשימה כיצד לעבד הודעה על בחירת פריט. 6 ביצד להוסיף תיבת עריכה. פרק 6: ממשק התקן גרפי .. 1 ממשק ההתקן הגרפ (1601009ה1 6066 סקמ 2 כדאיות השימוש בממשק התקן גרפ 3 להבין יותר טוב את הקשר ההתקן. 4 הקשרי התקן פרטיום , 5 נקודות מוצא ומדידת מרחק. 6 קבלת הקשר התקן אל החלון 7 יצירת הקשר התקן למדפסת. 8 8000606ק016306007 - יצירת הקשר התקן בזיכרון.. 9 אחזור יכולות ההתקן.. 0 הפונקציה %61:65ו5/90ץ6615 לניתוח חלון 1 הפונקציה 500006065 /6649. 2 קבלת הקשר התקן עבור החלון כולו. 3 שחרור הקשר התקן. 4 קבלת ידית חלון מהקשר ההתקן. תוכן העניינים /9. פרק 7: מפות סיביות, קבצי-על וסמלים (8/008305, 166311165 ו-16005) 1. מפות סיביות שתלויות בהתקן. 2 מפות סיביות שאינן תלויות התקן.. 3 יצירת מפות סיביות. 4 הצגת מפות סיביות. 5. יצירת מפות סיביות תלויות התקן (018) 6 מילוי מלבן בתבנית. 7 שימוש ב-5010181.. 8 פלט של מפת סיביות להתקן נתון באמצעות 0089/65ד9ו561181. 9 קבצי-על 6120/69 158 0 יצירה והצגה של קבצי-על (6130165. 2 1 רשימה מפורטת של קבצי-על משופרים (%613865 660המח= 776 ַהו3זטהוטת=) 181 2 הפונקציה 60//10%0618085. 13 3 סמלים (5חס16).. 1% 4 יצירת סמלים 16 5 יצירת סמלים ממשאב. 1% 6 הפונקציה 1600106009 1% 7 הפונקציה 10361600 1 8 הפונקציה 6סַ9וח0861) טוענת סוגים גרפיים רבים. 1 00 10 161 16 17 170 גלג 1% 1% פרק 8: מבט מקרוב על פקדים 1 תיבות סימון אוטומטיות . כיצד לנחל תיבות סימון. כיצד להעניק לתיבת סימון תכונות של מפסק. כיצד לאתחל תיבת סימון.. 2 הוספת פקדים סטטיים . 16 1977 0% 84 5 55 3 כפתורי רדו 16 פרק 9: הקדמה לפסי גלילה (5ז88 |56101) 24 1 סוגי פסי הגלילה. 4 2 הוספת פסי גרירה לחלון. הוספת פס גרירה מחוץ לשטח הלקוח. הוספת פס גרירה כסוג פקד לתיבת דו שיח. 3 קבלת הודעות מפסי גלילה. 4 קביעת הטווח של פס הגלילה (6פַ561500183). 5 קביעת מצב הגרה בפס גלילה (509001005) 6 תוכנית ליצירת פסי גלילה (בתוך תיבת דו-שיח) 7 הפונקציה 5705601831 , 8 המיקוס והטווח של פס הגלילה. 3 5 0 זקתקבחו/ו ומבוא ל-ספו 9 קבלת הערכים הנוכחיים של פס הגלילה. 0 גלילת תוכן החלון- 1 ההודעה 5126 וע 2 ההודעה האנק אוו 3 שינוי מצב פסי הגלילה: פעיל ולא-פעיל .. 4 הפונקציה 560/06 פרק 10: הטיפול בטקסטי . 237 1 הקואורדינטות של חלון.. 7 2 הגדרת צבע הטקסט והרקע.. 8 3 כיצד לקבוע את צבע הרקע לתצוגה.. 9 4 כיצד לקבל את נתוני הטקסט. 9 5 חישוב אורך המחרוות. 1 6 ביצד להשיג את נתוני מידות המערכת. 1 7 הדגמה קצרה של פלט טקסט. 3 8 פתרון בעיית הצביעה מחדש 00800 6 9 רעיון החלון הווירטואלי 6 0 פונקציות 1קא נוספות. 7 1 יצירת חלון וירטואלי והשימוש בו.. 8 יצירת החלון הווירטואלי.. 8 כיצד להשתמש בחלון הווירטואלי 9 התוכנית השלמה לחלונות וירטואליים. 0 2 כיצד לשנות גופנים. 5% הגופנים המובנים במערכת. 5% כיצד ליצור גופנים אישיים .. 3 3 הפונקציה 3001165*)חסתוהטחם 3 4 הצגת גופנים רבים עם 1630006006 75 פרק 11: עבודה בגרפיקה . דדב 1 מערכת הקואורדינטות לגרפיקה. דדב 2 עטים ומברשות. 8 3 הגדרה של פיקסלים. 8 4 שרטוט קווים. 8 5 קביעת המיקום הנוכחי. 9 6 ציור קשתות. כ 7 כיצד להציג מלבנים. 0 8 כיצד לצייר אליפסות ופרוסות עוגה.. 0 9 כיצד לעבוד עס עטים. ג 0 כיצד ליצור מברשות אישיות.. 1 1 מחיקת עצמים אישיים. 3 2 הדגמת עבודה בגרפיקה. 3 תוכן הענייניס ‏ 11 3 הבנת מצבי המיפוי ואזורי התצוגה. קביעת מצב המיפו: ביצד להגדיר את גבולות החלון כיצד להגדיר אזור תצוגה.. קביעת נקודת המוצא של אזור התצוגה .. תוכנית לדוגמה לקביעת מצב חמופוי 91 91 304 . פרק 12: פקדים משותפים.. 1 הכלה ואתחול של פקדים משותפים. פקדים משותפים הם חלונותת סרגל הכלים. יצירת מפת-טיביות של סרגל כלים. תוכנית לדוגמה של סרגל כלים פשוט. הוספת תוויות לחצן תוכנית סרגל הכלים בשלמותה, כולל תוויות לחצן. 336 פרק 13: פקדים משותפים נוספים .. 1 פקדי מעלה-מטה. יצירת פקד מעלה-מטה. הודעות פקד מעלה-מטה הפעלת פקד מעלה מטה.. 2 יצירת פקד חוס5.. תוכנית לדוגמה של פקד חוסף. 3 פס העקיבה. סגנונות של פסי עקיבה. משלוח הודעות פס העקיבה.. טיפול בהודעת פס עקיבה .. תוכנית הדגמה של פס העקיבה. 4 פס התקדמות. שיגור הודעות פס התקדמות. תוכנית פשוטה של פס התקדמות. 341 4 4 פרק 14: מבט נוסף על פקדים משותפים .. 1 חלון המצב. יצירת חלון מצב.. הודעות חלון המצב הפעלת שורת המצו 1 פקדי כרטיסיה. יצירת פקד כרטיסיה שיגור הודעות אל פקד כרטיסיה. 9 . 31 2 קקח ומבוא ל-ספו הודעות חסו00/63! של הכרטיסיה .- תוכנית הדגמה פשוטה של פקד כרטיסיה - 3 הפעלת פקדי כרטיסיה 4 פקדי תצוגת עץ. יצירת פקד תצוגת עץ. שיגור הודעות אל תצוגת ע. הודעות של תצוגת העץ. תוכנית הדגמה של תצוגת עצ' פרק 15: ניהול זיכרון .. 5.1 מודל הזיכרון בח 2 זיכרון גלובלי וזיכרון לוקל 3 הזיכרון הווירטואלי. 4 מבט נוסף על ערימות (36005) - 5 הקצאת בלוק זיכרון מהערימה הגלובלית. 6 שימוש ב-61098/868164 כדי לשנות גודל ערימה באופן דינמי.. 7 מחיקת בלוק זיכרון שהוקצה. 8 הפונקציה 6/003/8166. 9 הפונקציות 610031106 ו-1008184806/6- 0 בדיקת זיכרון המחשב .. 1 יצירת ערימה בתוך תהליך.. 2 ניהול הציכרון של תהליך מוגדר באמצעות פונקציות הערימה. 3 בדיקת גודל הזיכרון שהוקצה מתוך הערימה. 1% הקצאת בלוק זיכרון וירטואלי. 5 דפים שמורים (09065 0316), 7 שחרור ציכרון וירטואלי. 8 ניהול דפי ויכרון וירטואלי 391. 391 1 פרק 16: תהליכים ומטלות . 420 1 הבה יותר טובה של תהליכים.. 0 2 יצירת תהליך. ג 3 סיום תהליכים. 3 4 יצירת תהליכים - תחליכי בן. - 5 עובדים יותר עס תהליכו בן.. 35 6 הפעלת תהליך בן מנותק (00959ז0 00186 0136066) . 56 7 הבנה מעמיקה יותר של המטלות. 7 8 הערכת הצורך במטלות. 38 9 ההחלטה לא להפעיל מטלה.. 39 0 יצירת פונקציית מטלה פשוטה. 0 1 הצגת אתחול המטלות .. 43 2 שלבי יצירת מטלות על ידי מערכת ההפעלה. 4 תוכן הענייניס 13 3 קביעת גודל המחסנית של המטלה.. 4 6% קבלת ידית אל המטלה הנוכחית. או אל התהליך 5 ניחול ומן העיבוד של המטלה. 6 ניהול ומן העיבוד במערכת של ריבוי מטלות. 7 להבין טוב יותר את הפונקציה 6600065155 .. 8 עיבוד חריגיס שלא טופלו - 5ח00ק665 90וחהחחט ה ותבו 9 סיום מטלות .. 0 קביעת זיהוי (פז) של מטלה או תהליך.. 1 תזמון מטלות על ידי מערכת ההפעלה .. 2 רמות עדיפות (965) /טוזסוזקו 3 מחלקות העדיפות של פאוסטחו/ (0185505 /מוזסוזק). % שינוי מחלקות העדיפות של התהליך. 5 קביעת העדיפות היחסית של התהליך .. 56 קבלת רמת העדיפות הנוכחית של מטלה. 7 קבלת הקשר מטלה. 8 הפסקה זמנית והפעלה מחדש של מטלות . 9 סינכרון מטלות (חס0פקוחסזתשח/5 6ה6זחד) - 0 הגדרת חמשת אובייקטי התיומון העיקריים. 1 יצירת קטע קריט. 2 קטע קריטי פשוט. 3 600[60פַ500ז0-ו8 - לסיינכרון של שתי מטלות.. 6 6005טוט%זס3145/+ - סיינכרון מטלות רבות. 5 יצירת מוטציה (אפזט/ ְַ6ז0 א). 6 שימוש במוטציה בתוכנית לדוגמה.. 7 השימוש בסמפורים. 8 עיבוד של אירוע פשוט. 51 41 481. 1 1 פרק 17: קלט/פלט בחלונות.. 1. פעולות קלט/פלט בקבצים ב-פוסחו/ו (1/0 516 605חוא. 2 צינורות (65פוק), משאבים (695ז0פטז), התקנים (469/65) וקבצים (0/95) 3 הפונקציה 01631956 לפתיחת קבצים. 4 הפונקציה 01631956 עם התקנים שונים. 5 ידיות קבצים. 6 מבט על מצביעי קבצים. 7 הפונקציה 6 פזוז) לכתיבה לקובץ.. 8 הפונקציה 869086 לקריאת קוב. 9 סגירת קובץ. 0 שיתוף נתונים עם מיפוי קבצים 1 מיפוי קובץ בויכרון הווירטואלי.. 2 מיפוי תצוגת קובץ אל התהליך הנוכחי. 3 פתיחת אובייקט קובץ מיפוי בעל שס. 1 50 0% 0% 4 זקתקבחו/ו ומבוא ל-ספו 4 תכונות קובץ.. 5 קבלה ושינוי של תכונות הקוב. 6 איך לקבל את גודל הקובץ.. 7 חותמת הזמן של קוב.. 8 יצירת ספריות/תיקיות.. 9 מידע לגבי הספריה/תיקיה הנוכחית, או שינוי ספריה/תיקיה. 0 השגת הספריות פווסחו/ ו-חחזפפ. 1 העברת ספריות/תיקיות. 2 העתקת קבצים. 3 העברת קבצים ושינוי שם. % מחיקת קבצים בספריה/תיקיה 5 הפונקציה 0688156 לאיתור קבצים. 6 הפונקציה 06:56 7 סגירת ידית החיפוש עם 0001056 8 חיפוש לפי תכונות עס פונקציות חיפוש קבצים.. 9 חיפוש באמצעות 5לח56376 ולא על ידי ₪06 - 6 קבלת נתיב זמני.. 1 יצירת קבצים זמניים. 2 הפונקציה 16310807060706, 3 התחברות לצינור בעל שם .. % קריאה לצינור בעל שם.. 10 11 1 1 5 התנתקות מצינור בעל שם.. 0 6 בחינה חוזרת של העיבוד האסונכרוני 0 7 קלט פלט אסינכרוני. 1 8 המבנה 60קק וש 0 3 9 קלט/פלט אסינכרוני עם אובייקט התקן גרעין. 64 0 הגדרת גודל שטחי עבודה (01959ט 5026 ז56-ַח7ס//0. 4 1 שינוי גודל של שטחי עבודה. 2 הפונקציה ז0זז6048515. 3 עריכת הודעות שגיאה עם 30/165536 הז 4 קלט/פלט אסינכרוני עס אובייקט אירוע גרעין 5 505ן909ק10טזס3/)5/. עסו קלט/פלטי אסינכרוני - 6 יציאות קלט/פלט מסיימות. (0115ק חסנ6!פוחס6 0/ 7 תתרעות קלט/פלט (1/0 6/130/6/) בעיבוד אסונכרוני. 8 התרעות קלט/פלט (1/0 360506) פועלות רק תחת דא שוחו 9 הפונקציות א65ו86905 ו-66%!פזוזעו. 0 שגרת משוב מסיימת 8800 6411 סחווטסה חסמסוח0ס), 1 תוכנית קלט/פלט מתריעה (וגזָסזק 1/0 6ו130ו6/ה) תוכן הענייניס 15 נספח א - פונקציות נוספות והרחבה .. הפונקציה 4ו00חו//וסת 5080 ואו 3568014 וש פונקציות משוב (חסטסחט= 63110866 הפונקציה טח080%6 1 הפונקציה טחסא100/0א, שליטה בתפריטים באמצעות וחסז1טחסוווטַח=.. הרחבת תפריט באמצעות טחפ!י6חסטקה. מחיקת פריטי תפריט שנבחרו, עם הפונקציה ח9%9ו6ו6ם. העמקה - מבנה קבצי משאבים.. מבוא לטבלאות מחרוזות. משאבים מותאמיס אישית (865001685 חחסופטס) - טעינת טבלאות משאבים לתוכניות באמצעות 1030500 הצגת תוכן קבצי המשאבים. שימוש ב- 667065ז90חוחטח5 עם קבצי המשאבים .. טעינת משאבים לתוכניות באמצעות 008950766 סגנונות חלון . נספת ב - 56 + הקדמה שאו דא ו-6אצ - האם ₪156 מת 9% חואו לעדמת ד 0005חוא, מתקדמים שלב נוסף עם 000%5חו/: סרגלי הצד המיועדים למתכנתי לבּחו4.. 596 למתכנתי 0032 : 00/6066 65ו0חו/ 1- ++6 ופטפו של מיקרוסופט .- מודל התכנות של פאו00חו/+. טיפול בהודעות. ממשק ההתקן הגרפי של פשוסטחו/ו. תכנות משותף-משאבים (פחווחוחבזָסזק 88566 690066 ה) - 5. ניהול הזיכרון.. ספריות !4 00 ממשק תכנות היישומים לבחו . 00 רכיבי שפת התכנות ++6 וגטפוש, 1 0 ++6 081פו/ 10105016 ותהליך הבנייה של יישום. עורכי המשאבים - שטח העבודה של וש//6זטספסה. מהדר לתוכניות ++0/6., 6% 6% 0% תוכנית הקישור.. תוכנית ניפוי שגיאות. 6 זקתקבח/ ומבוא ל-ספו אשף היישומים - 6זהנווססא אשף המחלקה - 01.455/1280., דפדפן המקור - 8/0086 66ז50, עורה מקוונת. כלו אבחון של פאוסטחו/. בקרת קוד המקור. הגלריה. סביבת הפותוח באמצעות ספריית מחלקת התשתיות - סו סביבת פיתוח יישומים - לשם מה עקומת הלמידה.. מהי מסגרת היושום מסגרת היישום כנגד ספריית המחלקה. דוגמה של סביבת יישום.. מיפוי הודעות על ידי ספריית סו מסמכים ותצוגות.. צעדים ראשונים עס אשף היישומים - "זט ,סוסוני מחי תצוגה ממשק מסמך בודד כנגד ממשק מרובה מסמכים. היישום י"שאינו עושה דברי - בַּאט. מחלקת התצוגה /9%ו05038. כתיבה בחלון התצוגה - ממשק ההתקן הגרפי של 05ו00חו - 601. הפונקציה-החברה צופזסחס.. הקשֶר ההתקן של פאוסטחווו. הוספת קוד כתיבה לתוכנית 03₪.. הצגה מוקדמת של עורכי המשאבים. תוכן תסריט קובץ המשאבים 6ז.6038. הפעלת עורך משאב תיבת דו-שיח.. ד 608 32חוו בהשוואה ל- סד 86/6356 32חואו, הפעלת פקודות המאקרו לאבחון שגיאות - הבנת הקבצים המהודרים מראש. שתי דרכים להרצת תוכנית .. 1 1 1 1 אינדקס תוכן הענייניס 17 פרק 1 הקדמה ספר וה הואא, בראש ובראשונה, מדריך מעשי לתכנות בסביבת חלונות. לפיכך אין הוא עוסק באופן מיוחד בהיבטים התיאורטיים של חלונות, אלא רק כאשר הם נוגעים במישרין לכתיבת תוכניות. במקום זה, הספר מתווה גישה מעשית-התנסותית, שתביא: אותך לידי כתיבת יישומי חלונות תוך זמן קצר ביותר. למרות האמור בפיסקה הקודמת, לפני שתוכל להפוך למתכנת בסביבת חלונות, יהיהה עליך להבין במונחים כלליים כיצד פועלת תוכנה זו, על אילו תפסות תכנון היא מבוססת, וכיצד היא מנהלת את המחשב שלך. חשוב להבין גם במה שונה חלונותת מקודמותיה: 005 ו-3.11 פווס6חו. בפרק זה נסקור את חלונות, ונבחן את נקודות. הדמיון והשוני אס לא כתבת מעולם תוכנית לסביבת חלונות, רוב המידע בספר זה יהיה חדש עבורךך פשוט התאזר בסבלנות. אס תתקדם באופן שיטתי, תיווכח שעד שתגיע לסוף הספר, תהפוך למתכנת מיומן בסביבת חלונות. ונקודה נוספת לסיום: חלונות היא סביבת תכנות מקיפה ומורכבת עד מאוד. לא ניתן למצות אותה במלואה בספר אחד (תיאור ממצה בוודאי יסתכם בכמה וכמה כרכים!. ספר וה דן בכל מרכיבי התכנות בסביבת חלונות המשותפים לכל התוכניות הנפוצות,, ובחידושים החשובים והייחודיים של חלונות. לאחר שתשלים ספר וה, תרכוש הבנה. מספקת בתכנות בסביבת חלונות ותוכל בקלות לחקור כל אחת ממערכות המשנה שלה. המאפיין החשוב ביותר בחלונות 9% הוא בכך שהיא מערכת הפעלה של 32 סיביות, כפר שיתברר לך ככל שתתקדס בלימוד בספר זה. המעבר לסביבת 32 סיביות איפשר לחלונות להותיר מאחור חלק ניכר מהבעיות והמוזרויות הקשורים במערכות הישנות. יותר של 16 סיביות. פרק ו: הקדמה 19 ריבוי משימות מבוסס על מטלות כפו שבוודאי ידוע לך, חלונות היא מערכת הפעלה המתוכננת לריבוי משימות (6ח56פטטווי). כפועל יוצא מכך, היא מסוגלת להריץ במקביל שתי תוכניות או יותר - ריבוי תוכניות (ַוחוחבזמָסזקטוט/א). מובן שהתוכניות חולקות ביניהן את ה-070 ועל. כן, מבחינה טכנית הן אינן רצות בו-זמנית ; אולם בשל מהירות המחשב, התחושה היא שההרצה אמנם בו-ומנית. חלונות תומכת בשני סוגים של ריבוי משימות: כוה המבוסס על תהליכים, וכוה המבוסס על מטלות. תהליך (00999זק) הוא תוכניתת הנמצאת בהרצה. העובדה שחלונות מסוגלת לריבוי משימות כשמדובר בתהליכים, פירושה שהתוכנה מסוגלת להריץ בעת ובעונה אחת שתי תוכניות או יותר. חלונותת תומכת, אם כן, בריבוי משימות המבוסס על תהליכים בסגנון הישן, המוכר לך בוודאיי הסוג השני של ריבוי-משימות בסביבת חלונות מבוסס על מטלות. מטלה (6מסזחד) היא יחידה ניתנת לביצוע (קפופ) של קוד להרצה. מקורו של השם ברעיון "מטלות. ההרצהיי. לכל תהליך לפחות מטלה אחת; בחלונות יכול כל תהליך להיות מורכב מכמה מטלות. מכיון שחלונות מבצעת ריבוי משימות מבוסס על מטלות, וכל תהליך יכול להיות בך כמה מטלות, עשוי להיווצר מצב שבו שני מקטעיס, או יותר, של תהליך נתון יוצאים. אל הפועל בו-ומנית. למעשה, הנחה זו נכונה. לכן, כשאתה עובד עם חלונות, באפשרותך ליצור ריבוי משימות לגבי תוכניות ולגבי מקטעים שונים של תוכנית מסוימת. כפי שיתברר לך בהמשך ספר זה, תכונה זו מאפשרת לך לכתוב תוכניות. יעילות עד מאודד ממשק בשיטת הקריאות אס יש לך רקע ב-05, בוודאי ידוע לך שההשקה עס 005 מתבצעת באמצעות פסיקות. תוכנה (פוקטזזפוח1 6הא5010) שונות. לדוגמה, הפסיקה המקובלת ב-005 היא 21א0. אולם, למרות שהגישה לשירותי 005 באמצעות פסיקות תוכנה בהחלט מקובלת (נוכח. האפשרויות המוגבלות של מערכת ההפעלה 005), אין זו דרך יעילה כלל וכלל ליצור השקה עם מערכת הפעלה מתוחכמת המסוגלת לריבוי משימות, כמו חלונות. חלונות. משתמשת בממשק בשיטת הקריאות (67866וח1 88506-/031). שיטה זו בחלונות פועלת באמצעות סדרה גדולה של פונקציות שהמערכת מגדירה, והן מאפשרות גישה למאפיינים השונים של מערכת ההפעלה. במקובץ, נקראות הפונקציות. הללו ממשק תכנות יישומים, או בקיצור 81 (160169ח1 סז הסוובס וקה זה מכיל כמה מאות פונקציות שתוכנית היישומים שלך מפעילה כדי לתקשר עם חלונות. פונקציות אלו כוללות את כל הפעולות הנחוצות הקשורות במערכת ההפעלה, כגון הקצאת ציכרון, פלט למסך, יצירת חלונות, וכדומה. 0 הכח ומבוא ל-0פו ספריות בקישור דינמי (11פ) כיון ש-1ק מכיל כמה מאות פונקציות, עלול לחיווצר אצלך הרושם שכל תוכנית המהודרת לחלונות מקושרת לכמות נכבדה של קוד, דבר היוצר כפילות קוד בכלל תוכנית. אולם בפועל אין הדבר כך. במקום זה, הפונקציות הכלולות ב-ק של חלונות. שמורות בספריות קישור דינמי, או בקיצור .11 (865זט/1 106 6וחפחעס). לכל תוכנית יש גישה לספריות אלה בשעה שהיא רצה. סעיף זה מסביר כיצד פועל הקישור הדינמי. פונקציות 01 של חלונות שמורות במתכונת ניתנת להעברה, במסגרת 01 נתון במהלך שלב ההידור, כאשר התוכנית שלך מפעילה פונקציה באמצעות 81, המקשר (פאח!) אינו מוסיף לגרסת ההרצה של התוכנית שלך את הקוד המתאים לאותה פונקציה. במקום זה, הוא מוסיף לתוכנית הוראות טעינה עבור אותה פונקציה, כגון שם הפונקציה ושם ספריית 01 שבה היא שמורה. כאשר התוכנית רצה, נטענות על ידי הטוען (103661) של חלונות גם שגרות ₪01 נחוצות. בדרך זו, אין צורך להכניס בפועל. לכל תוכנית את קטעי הקוד של כל פונקציה. פונקציות 1 מתוספות רק כאשר היישום נטען אל תוך הזיכרון לצורך ההרצה. שיטת הקישור הדינמי טומנת בחובה כמה יתרונות חשובים. ראשית, כיון שלמעשה כל התוכניות משתמשות בפונקציות 1קא, הקישור הדינמי מונע בובוו מקוס בדיסק, דבר שהיה קורה אילו היה צורך להוסיף בפועל לכל תוכנית להרצה עותקים של קטעי הקוד. של פונקציות 71 המתאימות. שנית, ניתן לבצע שדרוג ולהכניס שיפורים בחלונות אפ בפשטות רבה, על ידי שינוי השגרות של ספריות 11ס. באופן כוה, אין צורך להדר מחדש את התוכניות הקיימות של היישומים השונים. כאשר תשתמש ביישומי חלונות, יתברר לך שכמה מרכיבי בקרה שבים ומופיעים. בתדירות גבוהה למדי. ביניהם נמנים סרגל הכלים, בקרת הסיבוב ((סשחס חו50), המבט על העץ, ותיבת הסטטוס. בחלונות 9% הוגדרו מספר פקדים משותפים, חדשים. ומלהיבים, הזמינים לכל היישומים (בהמשך הספר תלמד כיצד להפעיל כמה מהם) השימוש בפקדים החדשים האלה מעניק ליישום שלך את החזות המודרנית, המסמנת. אותו בבירור כתוכנית של חלונות א9. תורי קלט תורי קלט (פסטסט )טסח]) מכילים מסרים, כגון לחיצות על מקשים, או פעילות באמצעות העכבר, עד שניתן לשולח אותן לתוכנית שלך. ב-3.11 פאוס6חו יש רק תור. קלט אחד לכל המשימות הרצות בנקודת זמן מסוימת במערכת. בחלונות א9 מוקצה. תור קלט לכל מטלה. היתרון הטמון בכך הוא שאף תהליך לא יכול להאט את מהירות. הביצוע של המערכת כולה בכך שהוא מגיב באיטיות למסריס שלו. הגישה של ריבוי תורי קלט היא תוספת חשובה, אך לשינוי זה אין שוס השלכה ישירה. על הדרך שבה תתכנת עבור חלונות אפ. פרק ו: הקדמה ‏ 21 מטלות ותהליכים חלונות תומכת גם בריבוי משימות המבוסס על מטלות. תוכניות ישנות של חלונותת ירוצו יפה תחת חלונות 9 בלי שום שינוי, אך ודאי תרצה לשפר אותן כדי שתוכל לנצל. את אפשרויות ריבוי משימות המבוסס על מטלות. פקדים בעבר, היה השימוש ביישומים מבוססי טקסט (כלומר, לא חלונאיים) מתוך חלונותת מסורבל למדי. חלונות א9 תומכת בסוג מיוחד של חלונות, הנקראים פקדים חס חלון מסוג וה מספק לך טביבת סמן-פקודה באמצעות ממשק רגיל, מבוסס טקסט. פרט להיותו מבוסס טקסט, פועל הפקד (ומופעל) כמו כל חלון אחר. תוספת זו של פקד מבוסס טקסט מאפשרת הרצה של יישומים לא-חלונאיים בסביבת חלונות מלאה, ומאפשרת ליצור בקלות רבה תוכניות שירות קצרות לשימוש חד-פעמי. חשוב מכך, מרכיב וה של חלונות מסוג פקד בחלונות 9% מהווה למעשה, הכרה בכך שיש היגיון בחלק מהיישומים מבוססי טקסט, ומעתה ניתן לנהלם ולהפעילם כחלק מהסביבה הכוללת של תוכנת חלונות. מיעון כתובות רציף קיבולת הזיכרון הווירטואלי העומד לרשות יישומי חלונות הוא 68 4! יתר על כן, מרחב מיעון הכתובות הזה רציף (₪180). שלא כמו ב-3.11 005חו/ו, 005 ויתר מערכות. ההפעלה ממשפחת 8086, המשתמשות בויכרון מקוטע על פי סגמנטים, חלונות א מתייחסת לציכרון כאילו היה רציף. מכיון שהיא משתמשת בשיטת זיכרון וירטואלי, לרשות כל *ישום עומד זיכרון בכל כמות שהוא עשוי להודקק לה (באופן סביר) המעבר למיעון כתובות רציף שקוף ברובו עבור המתכנת, המסיר מעליו חלק ניכר מהטיפול המייגע והמתסכל במיעון כתובות לפי השיטה הישנה, המקוטעת. פקדים כלליים חדשים 1 %ס6חו// תמכה בכמה פקדים רגילים, כגון לחצנים, תיבות סימון, כפתורי רדיו, תיבות עריכה, וכדומה. חלונות כוללת תמיכה בפקדים הרגילים הללו, אך הוגדרו בה. גם כמה פקדים חדשים. הפקדים החדשים נקראים פקדים כלליים (חסוחוחסס. וסשחסס), וכוללים בין השאר, פריטים כמו סרגלי כלים, ₪05 ו0ו, תיבות סטטוס,, תיבות התקדמות, תיבות מעקב ועוד. הפקדים החדשים משפרים את הממשק למשתמש ומעניקיים חזות *מודרנית" לייישומים המשתמשים בהם. 2 קקח ומבוא ל-ספו הקשר עם דא בוודאי שמעת על תוכנת דא פוס6חו\. ייתכן שאף השתמשת בה. זוהי מערכת ההפעלה. המשוכללת. ביותר של מיקרוסופט, המבוססת על חלונות. ‏ ישנם דברים רבים המשותפים ל-דאפוווסטחוו ולחלונות 9. שתי התוכנות תומכות במיעון כתובות רציףף בשיטת - 32 סיביות. שתיהן תומכות בריבוי משימות מבוסס על מטלות, ושתיהן תומכות בממשק המבוסס על עמדות שליטה. ואולם אין לבלבל בין שתי התוכנות, שכן אין ביניהן זהות. למשל, זו פווסחוו נוקטת גישה מיוחדת ליישום מערכות הפעלה, גישה המבוססת על דגס לקוח/שרת. בחלונות 9% אין זה כך. זא פאוסוחו תומכת. במערכת אבטחה מלאה; בחלונות אין זה כך אין ספק שחלק גדול מהטכנולוגיה הבסיסית שפותחה לצורך יצירת 1/1 פוסחוצ שימשה גם לבניית חלונות א9, אך שתי הגרסאות שונות מאוד זו מזו. עם זאת, רצור לציין שגירסה 4 של זוז פווסשחווו קיבלה את חזותה של חלונות אפ, כלומר, ממשק המשתמש דומה מאוד. עם איזו תוכנה להריץ את התוכניות בספר? ההידור של קטעי הקוד בספר וה נעשה באמצעות מהדר 6.0 ++6 |מטפוש של מיקרוסופט שנפוץ אצל מתכנתים רבים. סביר להניח שתוכל להדר את התוכניותת הכלולות בספר זה באמצעות כל מהדר תואם חלונות. הדוגמאות השונות נכתבו בשפת. ++6/6 הרגילה, וניתן להדר אותן באמצעות כל מחדר ל- ++6/0. לספר וה מצורפים 2 תקליטורים. באחד מהם תמצא את מהדר 6 ++6 |₪8 בגירסה מיוחדת - ח6000 עזסוט0סטחז של מיקרוסופט. התוכניות לא הורצו ונבדקו בגירסה זו. התוכנה ניתנת כבונוס ללא תשלום לרוכשיי הספר והוצאת הוד-עמי אינה מספקת תמיכה במוצר.. 8 /2000חו ספר וה מתייחס לגירסה של 6.0 ++6 וגטפוץ שעבדה עם 18801 שהתאימו ל-95 0/6045 קייימים 5670008065 נוספים שנותנים את האפשרות להשתמש עם תכונות ופקדים שנוספו במערכות ההפעלה הבאות. כתובת 08 טובה מאוד לחיפוש מידע מעודכן הלא : ח00610500.60.ח50ו פרק ו: הקדמה ‏ 23 על התקליטורים המצורפים קרא את קובץ 60.006א0 בתקליטור כדי לקבל מידע על תכולת התקליטור המצורף. קרא בהמשך כיצד להעתיק את קבצי המקור הרלוונטים לספר זה. לספר מצורפום 2 תקליטורים. באחד מהם תמצא את המהדר 84/000 /600ט106ה1 6 ++6 |הטפו/ בגירסה מיוחדת של מיקרוסופט. התוכניות לא הורצו ונבדקו בגירסה זו. התוכנה ניתנת כבונוס ללא תשלום לרוכשי הספר והוצאת הוד-עמי אינה מספקת תמיכה במוצר. בתקליטור השני המצורף לספר זה תוכל למצוא מספר דברים. : קטלוג וו - קטלוג ספרי המחשבים האינטראקטיבי של הוצאת הוד-עמי בו וכל לצפות בספרי ההוצאה ולקרוא פרקים לדוגמה מתוך חלק מהספרים. לשם קריאת הפרקים יש להתקין את תוכנת 863061 01006 0006 שנמצאת בתקליטור. הקטלוג מומלץ לצפייה באמצעות 5 זסוסוקא₪ 8106)ח1 שמצורף בתקליטור. מספר תוכנות עזר שימושיות. קבצי קוד מקור. 4 הַעְרֶה; | אס מנהל התקן כונן התקליטורים המותקן הוא 16 סיביות ווה יכול להיות גם אס הכונן חדש) - ייתכן שתראה רק את 8 התווים. הראשונים של שם הקובץ (במקרה שהמקור ארוך יותר), או ייתכן שתראה שהתיקיות ריקות. הטוב ביותר הוא להתקין מנהל התקן 32 סיביות, או לקנות כונן תקליטורים חדש ולוודא שמצורף אליו מנהל התקן 32 סיביות. 4 קקח ומבוא ל-ספו היכן נמצאים הקבצים הקשורים לספר זה? התיקיה הרלוונטית לספר זה: 59285 תחת תיקיה 8008559285:% (החלף את האות % באות הכונן המתאימה) תמצא תיקיות משנה: תיקיה עבור כל פרק: תיקיה 00501 עבור פרק 1, תיקיה 6802 עבור פרק 2 וכך הלאה. בכל תיקיה נמצאים קטעי קוד המקור לפי הדוגמאות שבספר. אנו מבקשים להתייחס רק לקבצים הנמצאים בתיקיה הרלוונטית לספר תחת 800% בתיקיות אחרות נמצאים קבצים הרלוונטיים לספרים אחרים של ההוצאה. העתקת קבצי המקור לדיסק הקבצים נמצאים בתיקיה 008559285פ :% מסודרים לפי תיקיות - תיקיה עבור כלל פרק. כדי להעתיק את הקבצים לדיסק. 1. לח על לחצן התחל, תוכניות, סיור פווסשחוא. 2. הצג את תוכן התיקיה 8006 אשר בתקליטור. 3. סמן את התיקיה 59285 וגרור אותה לתיקיה כלשהי בדיסק. מכיון שמקור הקבצים הוא התקליטור, הס מסומנים לקריאה בלבד. רצוי לשנותת מאפיין וה בדרך זר 1. דרך הסייר היכנס לתיקיה בדיסק, שבה נמצאים הקבצים שהעתקת. 2. סמן קובץ מסוים או את כולס על-ידי 011+8. 3. הצב את סמן העכבר מעל האזור המסומן ולחץ לחיצה ימנית בעכבר. 4 מתפריט הקיצור בחר מאפיינים. 5. בטל את הסימון בתיבה קדיאה בלבד (דאג שתיבה זו תהיה ריקה). 6. לחץ על החל, לח על אישור. אפשרות אחרת. 1. לחץ על לחצן התחל, תוכניות, הפנייה ל-5-005ו. 2. בחלון 005 רשוס: 5/ *.*6:59285 8+ ז- טחזו4. אם העתקת את הקבצים לתיקיה אחרת, רשום זאת במקום 6:59285. פרק ו: הקדמה 25 פרק תכנות בחלונות א9, סקירה בפרק זה נערוך היכרות עם תכנות בסביבת חלונות 9%. לפרק שתי מטרות עיקריות. ראשית, נגדיר את קשרי הגומלין המחייבים בין מערכת ההפעלה חלונות (005חו/. לבין התוכניות הרצות תחתיה, ואת הכללים שחובה על כל יישום של חלונות לציית. להם. שנית, נפתח בפרק זה שלד של יישום, אשר ישמש בסיס, או מסגרת, לשאר התוכניות שנפתח בספר זה עבור חלונות. בהמשך תכיר כמה תכונות המשותפות לכל. התוכניות של חלונות. המסגרת שתיבנה בפרק זה תכיל את כל אותן תכונות משותפות. 1 מבט על התכנות בחלונות א9 היעד של תוכנת חלונות 9% (וחלונות בכלל) לאפשר לכל מי שיש לו היכרות בסיסית עם. המערכת להריץ, בלי הכשרה מוקדמת, כמעט כל יישום שאפשר להעלות על הדעת. כדיי להנשים ועד וה, מכילה חלונות ממשק עקבי למשתמש. להלכה, אם אתה יודע כוצד להריץ תוכנית אחת המבוססת על חלונות, תדע להריץ כל תוכנית אחרת. רוב התוכניות השימושיות מחייבות הכשרה כלשהי כדי שניתן יהיה לנצלן באורח זעול, אבל ההדרכה במקרה שלנו מסתכמת במה עושה התוכנית, ואין צורך להסתבך בשאלות כמו איך על המשתמש לתקשר איתה. למעשה, חלק ניכר מהקוד ביישומים. חלונאיים משמש רק לתמיכה בממשק המשתמש. לפני שנמשיך, חובה לומר שלא כל תוכנית המסוגלת לרוץ תחת חלונות א9, תצוג בהכרח ממשק בסגנון חלונאי בפני המשתמש. בהחלט ניתן לכתוב תוכניות לחלונות. שאינן מנצלות את מרכיבי הממשק החלונאי. כדי ליצור תוכנית בסגנון חלונות, עליךך לנקוט כמה פעולות מכוונות, ולהשתמש בטכניקות המתוארות בספר זה. רק התוכניות. הנכתבות תוך שימוש באפשרויות הגלומות בחלונות, ייראו ויעניקו תחושה של תוכניות חלונאיות. ניתן בהחלט לוותר על הפילוסופיה העיצובית הבסיסית של חלונות, אך רצוי שתהיה לך סיבה טובה לעשות זאת, כיון שהדבר עשוי לעורר תחושה. של אי-נוחות אצל מי שאמור להשתמש בתוכניות שלך. ככלל, רצוי שיישומים שאתה 6 זקתקבחו/ ומבוא ל-ספו כותב לחלונות יופעלו באמצעות הממשק הרגיל של חלונות, ויעוצבו לפי עקרונות העיצוב הרגיליס של חלונות. תוכנת חלונות א9 (א9 פווסנחוו) היא בעלת אוריינטציה גרפות, כלומר, היא מכילה ממשק משתמש גרפי - 601 (97569זח1 056 בסוחקֶ3ז6). בשוק נמצא מיגוון רחב של פריטי חומרה לגרפיקה ושיטות וידאו, וחלונות מסוגלת להתמודד עס רוב ההבדלים. ביניהם. כלומר, בדרך כלל התוכניות שלך לא צריכות להביא בחשבון את סוג החומרה, או את שיטת הווידאו שישמשו להרצה. אולם, בשל האוריינטציה הגרפית של התוכנה, מוטלת עליך, כמתכנת, אחריות נוספת כשאתה יוצר יישומים לחלונות. כפי שתיווכח בהמשך, מוקדשים פרקים רבים בספר זה לניהול נכון של המסך. נתבונן עתה בכמה מהתכונות החשובות ביותר של חלונות אפ. 2 מבט אל שולחן העבודה למעט חריגות ספורות, מטרת ממשק משתמש המבוסס על חלונות היא ליצור תמונת. שולחן עבודה ממשי על פני המסך. על שולחן עבודה טיפוסי תמצא בוודאי ערימת ניירות, בדרך כלל תראה גם את קצוות הדפים שמלמטה. בסביבה החלונאית, הסביבה. המקבילה לשולחן העבודה היא המסץ. הדפים והניירות שעל השולחן מיוצגים על ידי החלונות השונים שעל המסך. כשאתה עובד על שולחן אמיתי, אתה מזיז את הניירות, ומדי פעס משנה את הסדר שלהם בערימה, כך שכל פעס נמצא דף אחר בראש הערימה. תוכנת חלונות מאפשרת לך לבצע פעולות דומות על המסך, בעורת החלונות השונים. על ידי בחירה בחלון, אתה הופך אותו לחלון הפעיל, כלומר, מניח אותו בראש הערימה של כל החלונות הפתוחים באותה עת. בקצרה, חלונות מאפשרת לך לשלוט במסך ולהזיז עליו פריטים באותה דרך שבה אתה מזיז דברים על שולחן העבודה שלך. דגם שולחן העבודה הוא הבסיס של ממשק המשתמש בחלונות, אך אין זו מתכונת המחייבת בהכרח את התוכניות עצמן. למעשה, אחד החידושים בחלונות הוא תוספת. מרכיבי ממשק שונים המחקים סוגים אחרים של התקנים נפוצים, כגון בקרת גלישה, בקרת סיבוב, רשימות עץ וסרגלי כלים. כפי שתיווכח, מספקת חלונות למתכנת מערך. מגוון של תכונות, דבר שמאפשר לכל אחד לבחור את המאפיינים והכלים המתאימים. ביותר ליישוס שבו הוא עוסק. העכבר תוכנת חלונות 9% מאפשרת שימוש בעכבר כמעט לכל פעולות הבקרה, הבחירה והציור. לומר שהתוכנה מאפשרת שימוש בעכבר היא המעטה מופלגת, כי הממשק של חלונות. תוכנן במיוחד לעכבר. למעשה, הוא מאפשו, ברוב טובו, את השימוש במקלדת! בהחלט אפשר ליצור *ישום המתעלם מהעכבר, אולם, זו תהיה הפרה של אחד מעקרונות העיצוב הבסיסייים של חלונות. פרק 2: תכנות בחלונות א5, סקירה ‏ 27 סמלים ומפות-סיביות חלונות מעודדת ומפשטת את השימוש בסמלים (16005) ובמפות-סיביות (פקמושוט - תמונות גרפיות). תפיסה זו מבוססת על האימרה י"תמונה אחת שווה אלף מילים". הסמל הוא תמונה זעירה המייצגת פעולה או תוכנית מסוימת. ככלל, ניתן לבחור בפעולה, או בתוכנית, על ידי בחירה בסמל. מפת-סיביות משמשת פעמים רבות להעברת מידע למשתמש בצורה מהירה ופשוטה, אך ניתן להשתמש במפות אלו גם: כפריטים בתפריט. תפריטים, סרגלי כלים, סרגלי סטטוס ותיבות דו-שיח פרט לחלונות הרגילים, מכילה חלונות א9 גם כמה סוגים של חלונות מיוחדים, הנפוצים ביותר הס. , תפריט (שחפו) הו חלון מיוחד, המכיל רשימה שממנה בוחר המשתמש פריט. מסוים. אולם, במקום שתצטרך לכלול בתוכנית שלך את הפונקציות המתאימות. לפריטי התפריט השונים, תוכל ליצור תפריט תקני בעורת פונקציות מובנותת שיתאימו לפריטי התפריט השונים. סרגל כלים (08 |100) הוא ביסודו תפריט מיוחד, המציג את האפשרויות שלו באמצעות תמונות גרפיות קטנות (סמלים - 06005. המשתמש בוחר עצם מסוים. על ידי לחיצה בעכבר על התמונה הרצויה לד סרגל הסטטוס 831 005גז5) הוא פס המופיע בתחתית חלון, המכיל מידע הנוגע. למצב חיישום. תיבת דו-שיח (80% סָסוום) היא חלון מיוחד המאפשר תקשורת מורכבת יותר ביך המשתמש והיישום מאשר באמצעות התפריט, או סרגל כלים. לדוגמה, היישום. שלך יציג תיבת דו-שיח כדי לבקש שם קובץ. כמעט כל קלט שאינו נעשה דרך. תפריט, נעשה באמצעות תיבת דו-שיח. 3 קשרי גומלין בין חלונות א9 לתוכנית שלך כאשר אתה כותב תוכנית המיועדת למערכות הפעלה רבות, התוכנית היא זו שיוומת את קשרי הגומלין עם מערכת ההפעלה. בתוכנית של 005 לדוגמה, התוכנית היא זו שמבקשת פריטים, כגון קלט ופלט. במילים אחרות, תוכנית שנכתבת במתכונת היימסורתית'' קוראת למערכת ההפעלה. בחלונות 9%, הדברים הפוכים. דווקא מערכת. ההפעלה היא זו הקוראת לתוכנית שלך. התהליך מתנהל כך: התוכנית שלך מחכה עד. שהיא מקבלת הודעה (%69936) מחלונות. לאחר שהתקבלה ההודעה, אמורה התוכנית. שלך לנקוט את הפעולה המתאימה. התוכנית עשויה להפעיל פונקציה אחת, או יותר, מתוך 1 של חלונות כאשר היא מגיבה להודעה, אך מערכת ההפעלה (חלונות 9%) 8 זקתקבח/ ומבוא ל-ספו יוומת את הפעילות. יותר מכל, קשרי הגומלין עם חלונות, המבוססים על הודעות, הם. המכתיבים את המתכונת והצורה הכללית של כל התוכניות לחלונות אפ. חלונות עשויה לשלוח לתוכנית שלך סוגים רבים של הודעות. לדוגמה, לחיצת עכבר על אחד החלונות של התוכנית שלך תגרום לחלונות א9 לשלוח לתוכנית הודעה שמקורה. בלחיצת עכבר. הודעה מסוג אחר תישלח כל פעם שיש ליצור מחדש את אחד החלונות. בתוכנית. הודעה מיוחדת אחרת נשלחת כל פעם שהמשתמש מקיש על מקש כלשהו, כשהתוכנית נמצאת במוקד הקלט. כדאי לזכור היטב עובדה אחת: ככל שהדבר נוגע לתוכנית שלך, ההודעות מגיעות בצורה אקראית. מסיבה זו תוכניות של חלונות דומות. לתוכניות המופעלות בשיטת הפסיקות. אאין דרך לדעת מה תהיה ההודעה הבאה. 4 ממשק תכנות יישומים - קה של 32חוצ הגישה לסביבת חלונות נעשית באמצעות ממשק מבוסס על קריאות, המכונה ממשק תכנות *ישומים (01א). 71 מכיל כמה מאות פונקציות שהתוכנית שלך מפעילה אותן לפי הצורך. הפונקציות שמכיל 1קא מבצעות את כל שירותי המערכת הכלולים. בחלונות. ל-1/ מערך-משנה המכונה ממשק התקנים גרפיים - 601 (0666 65חק97ז6. 6 וח]), שהוא אותו חלק מתוכנת חלונות המעניק תמיכה לגרפיקה שאינה תלוית-התקן. פונקציות 601 הן אלו המאפשרות להריץ יישומים של חלונות על מיגווך רחב של פריטי חומרה. התוכניות במערכת חלונות מבוססות על א של חואו ממשק 2חו/+ תומך במיעוך כתובות בשיטת 32 סיביות בעוד ש-16חו/ו תמך רק בשיטת הציכרון המקוטע בן 16 סיביותת בגלל ההבדל בשיטת המיעון, חלק מהפונקציות הישנות יותר ב-1 הורחבו, כדי שתוכלנה לקבל פרמטרים של 32 סיביות ולהחזיר ערכים של 32 סיביות. כמו כן, היהה צורך לשנות כמה מפונקציות 01 כדי להתאימן למבנה לפי שיטת 32 סיביות. פונקציות חדשות התוספו ל-א כדי לתמוך בגישה החדשה לריבוי משימות, במרכוביי הממשק החדשים וביתר התכונות המשופרות שהגיעו בחלונות אפ. כיון שחלונות תומכת במיעון כתובות מלא בשיטת 32 סיביות, ההיגיון מכתיב מספרים. שלמים שיהיו אף הם באורך של 32 סיביות. פירוש הדבר, שהסוגים זח1 ו-66ח0פחט. הם באורך 32 סיביות. אס אתה רוצה להשתמש במספר שלם באורך 16 סיביות, חובה. להגדיר אותו כ-+וסו5 (חלונות אפ מספקת לך שמות !1/0006 ניתנים להמרה עבור סוגים אלה, כפי שתיווכח מייד. השלכה נוספת של מיעון הכתובות בשיטת 32 סיביות היא, שאין עוד צורך להגדיר מצביעים כ - ז63 או זבז. לכל מצביע יש גישה לכל חלק מהזיכרון. בחלונות 9%, איך שום הגדרה ל-91 או ל-זגח. כלומר, אתה יכול להשאיר את 63 1-1 בתוכניות. שאתה מייבא אל תוך חלונות, אך לא תיה להם השפעה. פרק 2: תכנות בחלונות א5, סקירה ‏ 29 5 מרכיבי חלון בתוכנית פשצסחזצ אולי הצלחת לנחש: אבן היסוד של בניית תוכנית לסביבת 00005חו// זהו חלון אחד אר יותר, או תיבות דו-שיח (שגם הן סוג מיוחד של חלון). למעשה, כמעט כל עצם שנמצא בחלון הוא גם כן חלון מסוג מסוים. בסעיפים הבאים תבין טוב יותר שהתוכניותת משתמשות בחלונות דומים למדי, למרות שהם נגזרים ממקומות שונים. במה שקשור לסעיף מסוים זה, חשוב שתדע את המרכיבים של חלון רגיל (00חו/ 90306378) = במילים אחרות, מה שהמשתמש בתוכנית מזהה כחלון. בכלל, 010% בונה כל "חלון רגיליי משבעה חלקים בסיסיים. באפשרותך לפרק כל' אחד מחלקים אלה לחלקים יותר קטנים, דבר שתעשה ברוב הסעיפים הבאים. אבל, חשוב שתבין את צורת החלון באופן כללי לפני שתתחיל בניתוח חלקים קטנים אלה שכולם יחד יוצרים את כל אחד ממרכיבי החלון. בתרשים 2.1 מובאת תמונה של חלון רגיל, על כל מרכיביו סמל תפריט חצן הקטנה. כותרת. המערכת לחצן הגדלה. = (26. שג צויס פוה מוסזה וגו ככ בקה סדור ער ם שופ ב == 5 2]₪ומוה |= ו [-= 51 (>/ומוא פוב (₪וא1ב. | 0 ]6 |₪ 5 |₪ |=5 9 | םדו - התה שה ' מתאר 7 | פס גלילה אופקי שטח הלקוח. תרשים 1.1. המרכיבים של חלון רגיל. חלון המסגרת (אוסמחו\ סוחגז") הוא המכולה (פחוב!חסס) של כל מה שנמצא בחלון. כמו שנלמד בהמשך, אפשר ליצור חלונות מסגרת רבים ומסוגים שונים. חלון המסגרת. השימושי ביותר הוא זה שמאפשר לשנות את הגודל שלו, בדומה לזה שמוצג בתרשים 1. בתוכניות שלך תטפל במסגרת ותקבל הודעות רבות מהמסגרת, כמו ההודעה לשינוי גודל החלון. הסעיפים הבאאים דנים בחלון המסגרת באופן מפורט יותר. 0 הלבחו ומבוא ל-ספו שורת הכותרת (83 06ד) מציגה למשתמש מידע על התוכנית. שורת הכותרת נמצאת. לרוחב החלון בקצה הסמוך לגבולו העליון. שורת הכותרת מאפשרת זיהוי תוכן החלון. ומאפשרת למשתמש לבצע פעולות חלון רבות. שורת הכותרת משמשת כנקודת האחיזה בחלון כשרוצים להזיו אותו ונמצא בה גם תפריט המערכת (טח6) וחפוצץ5), והלחצנים האלה: הקטנה (טחוח!!), הגדלה (טקוחזואה!א), שחזור (5076פה) וסגירת. חלון (00חו/ו 056ו0). בסעיפים הבאים נלמד שרכיבי שורת הכותרת משתנים כתלות. ביישום שיוצר את החלון שבו נמצאת שורת הכותרת. הלחצנים השונים להקטנה, להגדלה ולסגירת החלון, שנמצאים בשורת הכותרת, חשובים מאוד, ולכן עליך לקחת אותם בחשבון כמרכיבי החלון. לחצנים אלה מאפשרים לך שליטה בגודל החלון וסגירתו כשלא צריך אותו יותר. שטח הלקוח (6ז :ח0/6) של החלון הוא חלק החלון אשר באפשרותך לתכנן את תוכנו כרצונך ולהתאים אותו לדרישותיך המיוחדות, כמו למשל קלט נתונים מהמשתמש. במילים אחרות, שטח הלקוח הוא אותו חלק של החלון אשר בו מתרחשת. מרבית הפעילות של התוכנית. לדוגמה, אם אתה עובד עם מעבד תמלילים כמו אס של מיקרוסופט, שטח הלקוח הוא אזור החלון שבו אתה כותב ועורך את המסמך.. פסי הגלילה (835 |/560) מאפשרים למשתמש לנוע בחלון שמאלה וימינה ולמעלה ולמטה. לדוגמה, תוכל להשתמש בתוכניות שלך בפסי הגלילה כדי לאפשר למשתמש. לגלול את הקלט על פני החלון. שימוש נוסף בפסי הגלילה בתוכניות הוא לאפשר למשתמש לנוע בתוך מסמך ששמר לפני כן בדיסק, כמו שהוא משתמש בפסי הגלילה. בתוכנה כמו 016/. פסי הגלילה הם כלי מאוד חשוב לניווט בתוכניות פאוסטחוו. שורת התפריט (ז83 טחסוו) היא מרכיב שכיח מאוד בחלונות אב (צאוסחוא זחפזהק), אך. בדרך כלל לא נמצא ברוב חלונות הבנים. תוכניות פווסחווו. משתמשות בשורת התפריט כדי לספק למשתמש אפשרויות פקודה רבות המתאימות לתוכנית. כמו שנלמד בהמשך, רוב תוכניות 0065ח/ מכילות לפחות את התפריטים קובץ 6 ועזרה (פ|6ו'). תוכניות %5סחוא מורכבות יותר מכילות גם 10 תפריטים ויותר, ויש. תפריטים שיש בהם אפילו 20 אפשרויות בחירה של פקודות. ככל שהתוכניות שלך יהפכו להיות יותר מסובכות ומורכבות, כך גם התפריטים שלך יהיו מורכבים יותר. תרשים 2.2 מציג את שורת התפריט של 6ז0// 010508 ער ₪ תרשים 2.2: שורת התפריט של 4זס/) 1010508 שורת המצב (83 583005) נמצאת בתחתית רוב חלונות האב, אך בדרך כלל לא נמצא אותה ברוב חלונות הבנים. תוכניות פווסוחוו משתמשות בשורת המצב כדי לספק למשתמש מידע שמפרט את מצב המשתמש בתוכנית - מקומו במסמך, בשורה, וכדומה. תרשים 2.3 מציג את שורת המצב של 6זסוו, שמספקת מידע חשוב על מיקומו הנוכחי של המשתמש במסמך.. תרשים 2.3: שורת המצב של 6זס0) 11070508 פרק 2: תכנות בחלונות א5, סקירה ‏ 31 6 חלון-אב וחלון-בן (5עצ00ח:/ 6116 3 +חסזבּק) בקטע הקודם למדת, שרוב חלונות האב מכילים את שורת התפריט ושורת המצב, אך רוב חלונות הבן אינם מכילים מרכיבים אלה. אולי אינך יודע עדיין מהו חלון-אב ומחור חלון-בן, אך נקדיש לכך הסבר קצר. מרבית תוכניות 0005חו/ תומכות בממשק מרובה מסמכים (97209זה1 זחסוחססם 6וקטווי. ובקיצור 01ו. ממשק זה מאפשר לתוכנית אחת להחזיק ולהציג רכיבים רבים בחלון אחד. לדוגמה, תרשים 2.4 מציג את תוכנת 6זס/ו שבחלון שלה מוצגים ארבעה מסמכים פתוחים. ₪ ישן ₪1 ואבו (=|ןש ₪ |:8 81219 ד בר כשה-הכת מו שמק | ל ב חן ד8]7/₪ בו | |-==|->> [ ומומ א (שורו₪ [טופום 0 ו תרשים 2.4: חלון-האב של שזס/+ עם ארבעה חלונות-בן פתוחים. דבר וה דומה יותר להיררכיית המחלקות שלמדת והשתמשת בה בתוכניות ++6. כל' חלון נגזר מחלון בסיסי מסוים ולכן, לכל חלון יש חלון-אב. בתרשים 2.4, חלונות הב הס החלונות הפנימיים שבמסמך, וחלון האב הוא החלון של שזס/+. כמו כן, אתה יכול. לחשוב על החלון של 4זס/ו כחלון-בן ואת חלון שולחן העבודה (ואס0חו ק0ז50ס) של 65ו0חו/ תוכל לראות כחלון האב שלו. לחלון שולחן העבודה אין חלון-אב. בתרשים הקודם, חלון האב תומך בממשק מרובה מסמכים, שמאפשר לחלון האב שיהיה לו חלונות בן רבים. תוכניות פאוס6חו אחרות תומכות בממשק מסמך בודד. (968!זפזח1 זחסוחנסס 6ח/פ) ובקיצור 501. ממשק זה מאפשר לחלון האב להחזיק רק. בחלון אחד, כמוצג בתרשים 2.5. 2 קקח ומבוא ל-ספו תרשים 2.5: תוכנית פנקס הרשימות (006036/!) של %5א00ח1 היא בעלת ממשק מסמך בודדד לבסוף, רבות מתוכניות 005חו// תומכות בגרסאות מיוחדות ושונות של ממשק מסמך בודד, שידועות בטם ממשק בסונון סייר 401060005 טחטחססס 000-5006 6 ]. המתכנתים קוראים לגרסאות המיוחדות האלו בשם זה, מכיון שהם מעצבים את הממשק על פי הממשק של סייר פווסטחווצ. ממשק זה דומה לממשק מסמך בוד בכל התכונות, מלבד העובדה שחלון המסמך (006חו/ זהסוחטסספ) היחיד. מתפצל באמצע, והדבר מאפשר לתוכנית להציג קבוצות נתונים מיוחדים בתצוגה יחידה (אפוש 6פָ5). ובדרך קלה יותר. תרשים 2.6 מציג את סייר 5או60חואו (60זס!קא 000085 ואת סגנון הממשק המיוחד שלו. ו ו [פ]א = || |ג [פש || ה ל-השכן ו בי ₪ בב - ור מ ו ב שא ד הש יב ₪ ב שב 7 5 ו ה תרשים 2.6: סייר 60%%5ח/6 וממשק בסגנון הסייר בתוכניות שלך תנהל בדרך כלל חלונות-בן רבים בתוך חלון-אב יחיד. ככל שתתקדם בתכנון חלונות, תכיר יותר את ההבדליס החשובים שבין הגרסאות השונות של הממשקים. פרק 2: תכנות בחלונות א5, סקירה ‏ 33 7 יישומי חלונות א9, עקרונות בסיסיים בטרם ניגש לפיתוח השלד של יישומי חלונות, ראוי לדון בכמה מהמושגים הבסיסיים. המשותפים לכל התוכניות הפועלות במערכת חלונות אפ. הקדמה למטלות (6865זחד) אנו מניחים שיש לך ניסיון בתכנות ++6 בסביבת 005. על כן, אתה בוודאי יודע ש-005 תומכת בהרצת תוכנית אחת בלבד בכל זמן נתון, ורק תוכנית זו נמצאת בויכרון באותו ומן, אך לא כך הדבר בסביבת העבודה פווסשחו שאאינה כפופה לאילו). זה. למעשה, 005חו/ו מגבילה את מספר התוכניות שמחשב מסוגל להפעיל בו-ומנית. רק אם אין מספיק ציכרון לפתוח תוכניות נוספות. היא מנהלת את התוכניות האלו בויכרון בשיטת המטלות. מטלה (66וחז) היא, למשל, בקשה של התוכנית להשתמש במעבד (690) של המחשב. כשיש לך מספר תוכניות שפועלות בו-ומנית, מערכת ההפעלה תנהל מטלה אחת או יותר עבור כל אחת מתוכניות אלו. 60606חו מציבה כל. מטלה בתור (רשימה) של מטלות הממתינות לביצוע. אחר כך, בהסתמך על העדיפות. שיש למטלה, 05ו00חו/ו ישולפתי מטלה מהתור ומקצה לה ומן מעבד לביצוע ההוראות. של המטלה. עדיפות המטלה קובעת היכן פאוסחוו מציבה אותה ביחס למטלות. אחרות שבתור. תרשים 2.7 מציג תיאור גרפי פשוט לדרך שבה 6068חו מנחלת. מטלות. 1 בב תרשים 2.7: המעבד מטפל בסדרת מטלות. נחזור ונדון במטלות בהרחבה בסעיפים שנלמד מאוחר יותר. אבל, מה שעליך לדעת. כרגע הוא שמטלה היא הישות ש-פווסחו/ו מקצה עבורה זמן מעבד להרצת הוראות. התוכנית הכלולות בה. 8וסחו/ מארגנת את המטלות בהסתמך על העדיפות שלהן והמעבד מבצע כל מטלה לפי התור. בתרשים 2.8 מוצג מודל פשוט שמראה איך התוכנית מבקשת מהמעבד לבצע פעולה כלשהי, ומקבלת ממנו את התוצאה בסיום. העיבוד 4 לבחו ומבוא ל-ספו 0סחו וחוסַסזכ 0 6 0 5ופפוו0) 5 ב בי -----| תרשים 2.8: סכמה פשוטה לעיבוד מטלות על ידי פווס0חחו. ווסטחו מחצירה את התוצאות לתוכניות שלך בסיום העיבוד בפורמט הקרוי הודעה [8 0553 8 הודעות התוכנית (16553065]) האמצעי העיקרי שמשמש לתקשורת בין 5ווסח/. והתוכניות הכתובות לסביבת פאוסחוו. ה הודעות (6953065/). הדבר פשוטי למדי. בכל פעם שמתבצעת פעולה מסוימת, 0085ח/ מגיבה על ידי משלוח הודעה אל עצמה, או אל תוכנית אחרת. לדוגמה, כשהמשתמש לוחץ על העכבר בחלון התוכניות שלך, 5וס0חו יקולטת' את לחיצת העכבר ושולחת הודעה לתוכנית שלך, בה היא מודיעה לה על כך שהמשתמש. לח על העכבר בחלון התוכניות במקום מסוים. כשהתוכנית שלך מקבלת את ההודעה, היא מתחילה תהליך עיבוד שמתאים להודעה שנקלטה. אם ההודעה אינה חשובה לתוכנית, היא צריכה להתעלם ממנה. להבנת מודל ההודעה של פאוסטחו/ יותר טוב, התבונן בתרשים 2.9, שמראה את המודל באופן מופשט, בצורת ליניארית. 0 1 זו | | 0 הור 1 1-ו בי ב היה תרשים 2.9: סכמה פשוטה למודל ההודעות של פאוסטְחו/. כשכותבים תוכניות בסביבת פווסטחוו השגרות החשובות ביותר בתוכניות תהיינה אלו שמקבלות ומעבדות הודעות ממערכת ההפעלה. לדוגמה, קטע הקוד הבא של הפונקציה. 6 מציג עיבוד פשוט של הודעה ופונקציה שמגיבה להודעה שלהלן. פרק 2: תכנות בחלונות 5, סקירה ‏ 35 הצקא אתתתפה ,ספפגו עתצט ,המות כומות | 00עפבחח אסהמננתס ענטפמתנ (מ898פ1 ונתהתקן 8 ל ו 00 9 896 ( (בפא) אס ) 160 צפפס 188 886 (שפט צנאם 188 886 (8) 5650100 (8%סעם צר + צסהצפפם 006 856 06005 008655896 0( ; [שפ 0 ((80עבק1 ,מבצקא ,ספעט ,מחת) ססעש400ה01סע) מעטסם, 1 (01) מ ג באופן כללי, קטע הקוד משתמש במשפט 800608 כדי לקבוע את סוג ההודעה שהתקבלה. ככל שתתקדם בלימוד הסעיפים, תבין בקלות את העיבוד שנעשה בפונקציה 0906ח/+. בקטע הקוד הזה, הפונקציה בודקת את ההודעה סאאויוואס6 ואר או את ההודעה צסהז055 !, או שהיא מוסרת את ההודעה לפונקציית ברירת המחדל שמטפלת בהודעות. הפונקציה פועלת על פי סוג ההודעה שהיא מקבלת. 9 ()חובּוחו/ כל התוכניות המיועדות למערכת חלונות 9% מתחילות את ההרצה בקריאה לפונקציה )הווחו (גרסאות קודמות של חלונות אינן מכילות פונקציה זו). לפונקציה ()חופזוחוא מספר תכונות מיוחדות, המבדילות אותה משאר הפונקציות ביישומים שלך. יש להדר אותה בנוהל הקריאה של זקאאז/ (בוודאי תיתקל גם במונח +הדאםזקא, אשר זהה למונח 1ק//1ו). לפי ברירת המחדל, הפונקציות בתוכניות שלך. הכתובות ב-6 או ב- ++6 משתמשות בנוחל הקריאה של 6. ניתן להדר פונקציה, כךך שתוכל להשתמש בנוהל קריאה אחר; אחת החלופות הנפוצות היא פסקל. מסיבות טכניות שונות, נוהל הקריאה המשמש את חלונות 9% להפעלת ()חופויוחו/ו הוא הנוהל. של 1/01/. הערך החוור של פונקציה זו אמור לחיות מסוג זחו 6 לבחו ומבוא ל-ספו 0 פונקציית החלון כל תוכנית של חלונות א9 חייבת להכיל פונקציה מיוחדת שאינה מופעלת על ודי התוכנית שלך, אלא על ידי חלונות א9. פונקציה זו מכונה בדרך כלל פונקציית החלון (חסססחט: אוסטחו/. אר נוהל החלון (06955זק עוסטחו/). חלונות: קוראת לפונקציה זר כאשר היא רוצה להעביר הודעה לתוכנית שלך, כלומר, זהו הערוץ שבו משתמשת. חלונות 9 כדי לתקשר עם התוכנית. פונקציית החלון מקבלת את ההודעה בפרמטרים. שלה. חובה להגדיר את כל פונקציות החלונות כפונקציות המחוירות ערכים מסוגג 6 דוטפסה). הסוג 88501) הוא מחרוות 666פ/, שבומן כתיבתה היא שם חלופי למספר שלם ארוך. נוהל הקריאה 011880% משמש באותן פונקציות שיופעלר בידי חלונות א9. במונחים חלונאיים, כל פונקציה המופעלת בידי חלונות, מכונה פונקציית משוב (03119300). נוסף לקבלת הודעות הנשלחות על ידי חלונות 9%, מתפקידה של פונקציית החלון לוזום. כל פעולה שמכתיבות ההודעות הללו. בדרך כלל, מכיל גוף הפונקציה משפט חאו המקשר תגובה מוגדרת לכל הודעה שהתוכנית אמורה להגיב עליה. התוכנית שלך אינה. מגיבה לכל ההודעות שחלונות 9% שולחת. כשמדובר בהודעות שאינך מעניינה של התוכנית שלך, הנח לחלונות אפ לבצע את פעולת ברירת המחדל. כיון שחלונות אפ' מסוגלת להפיק מאות הודעות, רובן עוברות עיבוד על ידי חלונות 9% עצמה, ולא על ידי התוכנית שלך. יתר על כן, כל הודעה מקושרת עם כל המידע הנוסף שהיא עשויה להודקק לו 1 סגנונות של חלונות בעת שהתוכנית שלך מתחילה לפעול תחת חלונות 9%, חובה עליה להגדיר מחלקת חלונות (6155 או60חו/ו). המונח מחלקה אינו משמש במשמעות המקובלת ב- ++6, אלא פירושו קרוב יותר לסגנון (58/6), או סוג (ספץ1). כשאתה מגדיר את סגנון החלון, אתה מודיע לחלונות 9% על צורת החלון ועל תפקודו. הגדרת סגנון החלון ינה הפעולה. היוצרת את החלון. על מנת ליצור את החלון בפועל, עליך לבצע כמה צעדים נוספים. 2 לולאת ההודעות כפו שהסברנו קודם, חלונות 9% מתקשרת עס התוכנית שלך באמצעות הודעות. כלל יישום של חלונות 9% חייב ליצור לולאת הודעות (1000 695396א) בתוך הפונקציהה ()חומזוחועצ. לולאה זו קוראת כל הודעה נכנסת מתור ההודעות של היישום, ושולחת. את ההודעה בחרה לחלונות א9. חלונות 9% קוראת לפונקציית החלון של התוכנית. שלך, כשההודעה הזו משמשת לה כפרמטר. ייתכן שהדבר נראה לך כשיטה מסורבלת. להעברת הודעות, אך זו הדרך שבה חייבות לפעול כל התוכניות של חלונות. הסיבה לנוהל וה היא הצורך להחויר את השליטה לחלונות א9, כך שה-560960/6 יוכלל להקצות זמן מעבד, לפי הנחוץ, ולא ימתיץ שהיישום שלך יסיים את פלח הצמן שלו. פרק 2: תכנות בחלונות א5, סקירה ‏ 37 3 סוגים של נתוני חלונות כפי שתראה מייד, תוכניות שפועלות בחלונות 9 אינן מרבות להשתמש בסוגי הנתונים. הרגילים של ++6/6, כגון זחו או * זגו6. במקום זה, נעשית לכל סוגי הנתוניםם המשמשים את חלונות א9 הסבה ל-8/06061. ההסבה נעשית בתוך הקובץ 06005.8 ו/או הקבצים הקשורים אליו. הקובץ ח.פאוסטחוו: מסופק על ידי מיקרוסופט, או בורלנד (וכל חברה אחרת המייצרת מהדרי ++6/6 לחלונות), וחובה לכלול אותו בכלל תוכניות חלונות 9%. בין הסוגים הנפוצים ביותר נמנים =וסאאוז, סאשווא, פדום, סחסצו, סהסווס, דאזט, 6אס), ו800, הד5ק! ו-190518. הסוג = וסאאוו הוא מספר שלם בן 32 סיביות, המשמש כידית. קיימים מספר סוגים של ידיות, אבל כולם בגודל וה ל-5 0%או. ידית (113066) היא ערך המגדיר משאב כלשהו. כל סוגי הידיות מתחילים באות א. לדוגמה, הערך סאעוו! הוא מספר שלם בן 32 סיביות, המשמש ידית לחלון. 876 הוא תו לא מסומן בן 8 סיביות. 0080 הוא מספר שלם קצר ולא מסומן בן 16 סיביות. סוס הוא מספר שלם ארוך ולא מסומן. זאז הוא מספר שלם לא מסומן בן 32 סיביות. 106 הוא שם אחר ל-פַחטו. נתונים מסוגג 800% הם מספרים שלמים, המשמשים לציון ערכי אמת או שקר (56ו3/פטזד). 10518 הוא מצביע אל מחרוזת, ו-120518 הוא מצביע מסוג 6005 אל מחרוות. נוסף לסוגים הבסיסיים שתוארו, מגדירה חלונות 9% כמה מבנים. השניים הנחוצים. לנו לבניית שלד התוכנית הם 156 ו-0355פא/. מבנה 456 מכיל הודעה של חלונות א9, ואילו 455ספא/ הוא מבנה המגדיר את סגנון החלון. מבנים אלה יידונר בהמשך הפרק. 4 תוכנית מסגרת לחלונות א9 לאחר שעסקנו ברקע הנחוץ, הניע הזמן לפתח יישום פשוט לחלונות א9. כפי שכבר נאמר, כל תוכניות חלונות 9% מכילות מרכיבים משותפים מסוימים. בסעיף זה נפתח. תוכנית מסגרת לחלונות א9, שתכיל את כל המאפיינים הנחוצים האלה. בממלכת. התכנות החלונאי נפוץ מאוד השימוש בשלדים, או במסגרות של יישומים, כיון שיצירת. תוכנית של חלונות כרוכה בי'מחיר כניסה" גבוה למדי. שלא כמו ב-005, שבה התוכנית הפשוטה ביותר מכילה כ-5 שורות, התוכנית המינימלית של חלונות מכילה 6 שורות בקירוב. תוכנית פשוטה של חלונות 9% מכילה שתי פונקציות: ()חואחו/וו ופונקציית חלון מתפקידה של הפונקציה ()חוג!אחווו לבצע את השלבים הכלליים הבאים. 1. להגדיר את סגנון החלון. 2. לרשום את סגנון החלון בתוך חלונות אפ. 3. ליצור חלון בסגנון שהוגדר. 4. להציג את החלון. 5. להתחיל בהרצת לולאת ההודעות. 8 לבח ומבוא ל-ספו תפקידה של פונקציית החלון הוא להגיב לכל ההודעות הרלוונטיות. כיון שתוכניתת השלד אינה עושה דבר פרט להצגת החלון שלה, ההודעה היחידה שהיא נדרשת להגיבב עליה היא ההודעה המורה ליישום שהמשתמש - סיים את התוכנית. לפני שנדון בפרטים, עיון בתוכנית 866% המובאת להלן (התוכנית נמצאת בתקליטור בתיקיה 02ִ5ו ,)000%559285‏ שיא שלד פשוט ומוערי לתוכנית חלונות א9. תוכנית ואת יוצרת חלון רגיל הכולל כותרת. החלון מכיל גם את תפריט. המערכת ועל כן ניתן להקטינו, להגדילו, להזיזו, לשנות את גודלו ולסוגרו. החלוך מכיל גם את לחצני ההקטנה, ההגדלה והסגירה התקניים. 106 0 "10.8ע06ה9ש" בבטבסה41 (01832) 4601868 418 מטתץ 32נאן 15 446116 8 מפנתפ 32אצאן 15 4461186 ה 35686 מהמפעמם // ;החדת מסונתתפ) /"10עסהסם" = שהפאסקתפפק1 תפפסקן ;"מ%10ג116קקת ם1עשהשם" | = 271:16פק1 תעפצסק1 ₪ (10 *55תנסומה פפאסם) 95ת018%0201ה מססם מסוותפפות ,ססהבםפתנת מסותעפאנה) תובעתגז צהונמדעת 5ב (6סמ45הסה 6ה1 ,שה21שמסק1 12578 ,06מ68פת1שספקם [ 4 שחו 55 ה נספור קותהפמחע 05 | אתתספאע פס = 8 ;ססעפטהא(ססהפפוה/) = | ססעקטמאת:קב סט = ע0א180סמ0 סט = עשאשבהחםם סט > תס ; ( חקפ ת82ק1 ,8סהבספה1ת) 10801000 = 0 ; (ווסתהה 10 ,טא ) 08000 = ו ; (1+אספונצאו הסמסס) (מפטתפ2) = במטסשףאס8פצמת סט ;במפאמקת2פם1 = סמבטטהס2פם1 סט ;סממאמפת2פם1 = שהם8201258%ם1 סט פרק 2: תכנות בחלונות 5, סקירה ‏ 39 0 נסת2בחואו ומבוא ל-ספו ("מנתעם" ,68ת8:פחדה. אפסא)ה1088160 = מפת1600ת אסס (08א8) %ם8001866201858 תעטם, הבעגתא אתתתקה ,ספפו עמצט (במות סמות | 200פבמח אסהמננתס ענטפמתת (מ8צמק1 מתהתק 1 ו 00 9 856 ( ( )סוס ) 160 לספל 18% 886 (6פט צעאם 188 0886 (מ) ו0ות 0+ 5% נ8%סעם צ + צסמצפפם 06 856 (0 0 0860 וצ 1 ((מ828ק1 ,מ8צבפא ,הפו ,0מאמ) ססעסא40ה601פ) מעטסם, 1 (01 ג נסקור עתה את התוכנית צעד אחר צעד. ראשית, כל תוכניות חלונות 9% חייבות לכלול את קוב הכותר 05.0חאו. כאמור, קובץ וה (יחד עם קובצי העור שלו), מכיל את אבות הטיפוס של פונקציות קא, וגם. פקודות מאקרו, הגדרות וסוגים שונים, המשמשים את חלונות. לדוגמה, ההגדרות של סוגי הנתונים סאטשו ו-061/455א/ כלולות בקובץ ה.6005חא. ההכרזות מגדירות אחר כך את 6וחגאפקהקפקן ואת 706פקו, שנראה במבט ראשוך כמערך תווים, או אולי כמו משתני מחרוות. תשתמש בסוג 20518) (סוג שמוגדר תחת. 05 כדי להחזיק מצביעים למחרוזות לקריאה בלבד. כשהמהדר מהדר את התוכנית, התוכנית ממירה למעשה את כל הכרוות 120518 להכרזות מסוג: *548 ז6%3 זצחסס. ובכן, כמו שאתה רואה, השימוש ב-120518 יותר קל להבנה ולהדפסה מאשר התחליף שלו. פרק 2: תכנות בחלונות א9, סקירה ‏ 41 לבסוף, התוכנית מכריוה על אבטיפוס לפונקציה ‏ 95חז6פפַָ. הפונקציה 5 מקבלת פרמטר מסוג 6/455סא/ו ומחזירה ערך בוליאני שמצביע עלל הצלחה או כישלון. פונקציית החלון שהתוכנית משתמשת בה נקראת ()67106ח//, המוגדרת כפונקציית. משוב, כי ווהי הפונקציה שחלונות מפעילה כדי לתקשר עס התוכנית. הפונקציה חוזגּ₪ח:/ בתוכנית 9606106 מן הסעיף הקודם, הפונקציה הראשונה שבתוכנית היתה חוגווחואו. כמו שלמדת, הפונקציה חוגוחואו הינה הפונקציה המקבילה של פווסשחוא לפונקציה. ופוח שכל תוכניות 6 ו- ++6 שלך השתמשו בה כפונקציה ראשית לעיבוד בסביבת העבודה 005. הפונקציה חוג!/חו/, שונה במספר דברים חשובים, אשר ההבדל בהכרות. הפונקציה הוא אחד מהם, כפי שמוצג לחלן ,6סה8ףפהדה מסוותלפאדא) ת|בעתואו צתצותמצקה 46 טפ מסותתשפוונת (אסתפמחסת 18% ,שה4םהמסק1 הצפם כפי שתוכל לראות, הפונקציה חוגווחווו מחזירה ערך זחו, כמו שעושות תוכניות ++6. רבות אחרות. ובכן, הו המקום שבו הן דומות (ואמנם, כמו שתלמד אחר כך, משפט הכותרת של הפונקציה חומאחואו מבצע עיבוד דומה לוה של הפונקציה חופוז). מילת. המפתח הדפקה מראה שהמשתמש יכול להפעיל את התוכנית מתוך פוסטחוא בלבד. טבלה 2.1 מפרטת את הפרמטרים שחובה על התוכניות שלך להעביר לפונקציה. ור טבלה 2.1: הפרמטרים שצריך להעביר לפונקציה חוב!אחווו. שם הפרמטר | סוג תיאור הפרמטר 6סחספחוה | 65אאדפונה | ידית המופע של היישום. לכל מופע של *ישום וש. ידית מיוחדת. התוכניות שלך ישתמשו בערכי 66חמזפחוח כארגומנט למספר פונקציות של. 005 חו/. גם אפשר להשתמש בערך 505065חו. כדי להבדיל בין מופעים רבים של יישוס מסוים. כלשהו. הנטקו | 1118513805 | ידית המופע הקודס של היושום. עבור המופע. הראשון ערך זה הוא 011א. עבור 9% 605חו ערך וה תמיד יהיה )טא 2 הלבחו ומבוא ל-ספו שם הפרמטר | סוג תיאור הפרמטר 8 דפ | זהו מצביע מסוג זג לשורת הפקודה שמסתיימת. ב-1). הגדר את הערך 6ח:61וח0ק! כשאתה. מפעיל את היישום מתוך מנהל היישומים. סגו וחפזַסזל) אר על ידי קריאה ל-66פחוו. שים לב, תחת א9 פוסחו פרמטר זה הוא מצביע. לשורת הפקודה כולה, ולא מערך מצביעים לכלל פרמטר (לכן, חובה על התוכניות שלך לפרש את. שורת הפקודה לפני שמתחילה לטפל בה - ו שחו | מספר שלם שקובע כיצד יוצג חלון היישום על המסך. צריך להעביר ערך זה ל-ו000ו//ו0ח5. הפעולה הראשונה שהפונקציה חוגאחוו מבצעת בתוכנית 8606146 היא להגדיר משתנה מסוג 156ו, משתנה מסוג סא/ווז, ומשתנה מסוג 355ססא/+, כפי שמוצג להלן יר רסוחו סוה בתוך הפונקציה נוצרים שלושה משתנים. המשתנה 0/4 יכיל את הידית לחלון התוכנית. משתנה-המבנה פָפוּח יכיל הודעות לחלונות, ומשתנה-המבנה 6 ושמש להגדרת המחלקה של החלון. ההוראות שבאות אחר כך בתוכנית 868614 הן הוראות. השמה לאיברי המשתנה סוו. הגדרת סגנון החלון חובה עליך לרשום את סגנון החלון ב-5ואס0חו לפני שתוכל להשתמש בו כדי ליצור את החלונות. לצורך וה תשתמש בפונקציית 871 בשם 0855ז18פטה. בתוכניות שלך תשתמש בפונקציה פ5ִַּזִפ5ּפָָח כמו שתוכל לראות באבטיפוס שלהלן. (ספב 5 נספוחו 00859) 8608602018 ו תוכל לראות שהפונקציה 861670055 מחצירה ערך מסוג ואס1א. סוג וה הוא ערך שלל סמס/ו שמתייחס למחרוזת תווים, שאין בה הבחנה בין אותיות רישיות לבין אותיותת רגילות. העובדה שהערכיס מסוג סא מתייחסים למחרוות ללא הבחנה בי אותיות. רישיות לרגילות, פירושו ש-"ץפטפח" זהה ל-ייצקקא" - שוויון אשר, כמו שאתה יודע, אינו נכון בדרך כלל ב- ++6. פאוסחו/ו שומרת את הערכים מסוג 810% בטבלת ואסדא. וכך, הערך סו שמכיל משתנה מסוג 410% דומה במידה רבה לידית. בנוסף להחורת ערך מסוג 10%א, הפונקציה 860090865 מקבלת פרמטר אחד - מצביע קבוע למבנה מסוג 01355א/. פווסטח!/ו מגדירה את המבנה 55 ספאזא כפר פרק 2: תכנות בחלונות א9, סקירה ‏ 43 שמוצג להלן. התבונן במשפטי ההשמה הבאים שנלקחו מתתוכנית. שמאתחלים את מחלקת החלון הספציפית שהתוכנית משתמשת בה ;אתתממט 05 | אתתספאע פס = 8 עסמ (ססהקפאא) = | ססמפבהמהזק1.ש = ע0א180סמ0 סט = םאמבהחם סט שפחדת = 8 ; (שחמאקםת82ק1 ,66הגמפהנת) מ1080100 = 0 ; הט 080 = ו ; (1+אספוונאו הסמסס) (מפטתפ2) = בממסשףאס8מצמת סט קסמגחמפת82ם1 = במגחטהסשפם1 סט קסמפאמפת2פם1 = 5201258%886ם1 סט משפט ההשמה הראשון אומר למערכת ההפעלה לצייר את כל החלון מחדש בכל פעם. שהמשתמש משנה את גודלו האופקי או האנכי. משפט ההשמה השני אומר למערכת. ההפעלה שפונקציית המשוב (חסווסחט 0311836%) זו הפונקציה 060106/. שני משפטר ההשמה הבאים מורים לפונקציה 89089108 לא להקצות מקום נוסף, וההוראה 18 מורה למהדר להשתמש במופע הנוכחי של התוכנית. שני משפטי ההשמה הבאים אחר כך, חס6זח ו-זספזוסח, טוענים את הסמל והסמן של החלון. בכל היישומים של חלונות חובה להגדיר צורת ברירת מחדל לסמן העכבר ולסמל היושוס. אפשר להגדיר ליישום גירסה מותאמת במיוחד של משאבים אלה, או שניתן להשתמש באחד הסגנונות המובנים, כפי שעשינו בתוכנית המסגרת. סגנון הסמל נטען על ידי פונקציית 7 בשם ()ח1036160, שהגדרתו מובאת להלן ; (86אעפק1 העפספ1 ,ספמדת מסאתשפנ8) 10441608 א200ו פונקציה זו מחזירה ידית לסמל. כאן, הפרמטר 56ח1ח מציין את הידית למודול המכיל. את הסמל, ואילו שם הסמל מצוין בפרמטר 6ו2%3פקו. כדי להשתמש באחד הסמלים. הקיימים במערכת, עליך להשתמש בערך !א עבור הפרמטר הראשון, ולציין את אחד. משמות המאקרו הבאים עבור הפרמטר השני. שם המאקרו לסמל = | תיאור אסנד10קקא 101 | הסמל בהתאם לברירת המחדל. 51156 101 | סמל מידע/חסוופוחזס!ה1 אסנדאויוא סאפ 101 | סמל בצורת סימן קריאה סאוו זז | סמל בצורת תמרור "עצורי. אסזד5טטס 101 | סמל בצורת סימן שאלה 4 הכח ומבוא ל-ספו + הערה: קיימים סמני מערכת נוספים. למידע נוסף פנה ל-א50ו. כדי לטעון את סמן העכבר, הפעל את הפונקציה ()10800050.. להלן הגדרת. הפונקציה (שתגאפפק1 תצפסק1 ,)פמנת מסָתפפותנמ) 50 ע2400, ג אספפטס הפונקציה מחזירה ידית לסמן. כאן מכיל הפרמטר ופח1! את הידית למודול המכיל את. סמן העכבר, ואילו הפרמטר ₪6 ג)!;פק! מכיל את שם סמן העכבר. כדי להשתמש באחד. הסמנים ממלאי המערכת, עליך להקצות לפרמטר הראשון ערך 011א, ואילו לשני עליך. להקצות שם של אחד מסמני המערכת, באמצעות שס המאקרו שלו. לפניך מספר מסמני המערכת הנפוצים ביותר. שם המאקרו לסמן = | תיאור סאה 196 | ברירת המחדל - מצביע בצורת ץ. 5 ספ | צורת צלב-כוונתת 185% 106 | צורת 1 דוא/ו 106 | צורת שעון חולל הוראת ההשמה שחטסז6הפזטח שאחרי הוראות אלו יוצרת ידית למברשת צבע, ושנר משפטי ההשמה הנותרים מציבים את ערכי ברירת המחדל של החלון עבור שם התפריט ושם מחלקת החלון. לאחר שהגדרת בצורה מלאה מחלקה לחלון שלך, היא נרשמת בחלונות 9% באמצעות. פונקציית 471 בשם ()56610955ו8, שתבניתה הטיפוסית מובאת להלן ; (55ג1סוס1* 5פהנספוחו 0059) 85ב1865201סת ספת הפונקציה מחזירה ערך המגדיר את סגנון החלון. 370% הוא 7/0606 שפירושו סהסעו. לכל מחלקת חלונות מוקצה ערך *יחודי. 0/0055 חייב. להיות המען של מבנה ב כיצד ליצור חלון לאחר שהוגדר סגנון החלון (או המחלקה), יכול היישום שלך ליצור בפועל חלון מאותו סגנון באמצעות הפונקציה ()00%חו/6319%ז0, שהגדרתה היא 0 | /* 01855 אסהת1ש 05 התגה */ ,שחבא5פבנסק1 הצפסק1 סאוט /* אסהת1א 05 51818 */ ,סתאאסמתנאק1 הצפסק1 /* 010606 01 שמע6 */ ,18ע0פאם סהסאם /* 68מבה201ססם 1856-עסקקט */ ,ל עה1 ,א פתג /* מסאת1ש 01 פמס1פהסת81 */ ,פמ1טאה עה1 ,ת186אה פתג פרק 2: תכנות בחלונות א9, סקירה ‏ 45 /* 808ה₪1 מהעגק 01 ש1מתמת */ ,ממסעקבהחם סאמות /* מתשה הנב 01 שנההגם */ ,ממסעת טאטוא /* ע0ס8שעם 05 ש1בתגת */ ,מסח8:פמדת /* 50ה1 288110881 0ס: צם%נסק */ הפעגפק1 פדסטק1 פא לו כפו שעולה מעיון בתוכנית השלד, ניתן להשאיר רבים מהפרמטרים המועברים לפונקציה ()/ו60חו/6/6306 לפי ברירת המחדל, או להקצות להם ערך 1)א. למעשה, במרבית המקרים הפרמטרים א, ץ, שש ותפפ | משתמשים במאקרו דוטא0ס5ט צו6, המורה לחלונות לבחור גודל ומיקום מתאימים לחלון, כאשר מדובר בחלונות שהסוג שלהם (00050//6) מורכב גם מ-40080 081 05 (במידה וסוגג החלון מורכב גם ‏ מ - 01110 5 אין אפשרות להשתמש במאקרו זה, משום שהרוחב והאורך של החלון יהיו - 0). אם איין לחלון חלון-אב, כמו במקרה של תוכנית השלד, אי יש להגדיר את הפרמטר זחסזגקח כ 085807 -סאעוחו (תוכל להשתמש גם בערך וטו עבור פרמטר זה). אס החלון אינו מכיל תפריט ראשי, חובה להקצות ערך וטא גם לפרמטר טחפוזח (במקרה זה, החלון ישתמש בתפריט שנרשם במחלקת החלון). כמו. כן, אם לא נחוץ מידע נוסף, כמו במרבית המקרים, יקבל גם הפרמטר וחגזגלק! ערך. וטא (הסוג סזסע! מוגדר ב-0606/₪ כ-*6וס. מבחינה היסטורית, 190010 בא במקום 906 0) זפוחוסק פָחסוי). פרמטר וה הינו מצביע לנתונים שהפונקציה 0103160000 צריכה להציב בהודעה 68818 %ש. עבור חלונות בנים בממשק מרובה ‏ מסמכים (%0), הערך חגזמלק! ‏ צריך ‏ להיות | מצביע ‏ למבנה ד0ט8ד65דא085דא0118. עבור רוב החלונות שאינם חלונות לקוח של זסוו, עליך להציבב שא ארבעת הפרמטרים הנותרים יוגדרו על ידי התוכנית שלך. הראשון, 806ו/20355פקן, מצביע למחרוות קבועה המסתיימת ב-)טא, שמכילה שם תקף של מחלקת חלון. אפשר ליצור שם זה בשני אופנים, על ידי התוכנית באמצעות השימוש ב-55ּספוָ או על ידי ערך מובנה (ערך שמוגדר ונמצא במערכת) של סוג חלון. כותרת החלון היא מחרוזת שהמצביע שלה הוא הפרמטר טחוהו!חו//פקו. המחרוות. יכולה להיות ריקה, אבל בדרך כלל נהוג לתת כותרת לחלון. סגנון (או סוג) החלון שיווצר בפועל נקבע עלל ידי הערך של הפרמטר 4%5//6, שמייצג את הסגנונות האפשריים של חלון. המאקרו שוססאזעוספקק והפטס 5/צ (בר השתמשנו), מגדיר חלו תקני המכיל תפריט מערכת, קו מתאר, לחצני הקטנה, הגדלה וסגירה. סגנון וה הוא הנפוץ ביותר, אך תוכל לעצב לעצמך חלון לפי הסגנון המתאים לך. כדי לעשות ואת, עליך להפעיל את. האופרטור 08 על פקודות המאקרו השונות של סגנונות שאתה מעוניין בהם. לפניך כמה מהסגנונות הנפוצים. מאקרו לסגנונות | | תיאור התכונה. ספקקג ופפ עו | חלון חופף עס קווי גבול. 90פקזוןא3ו 5+ | לחצן הגדלה. 6 זקתקבח/ ומבוא ל-ספו מאקרו לסגנונות = | תיאור התכונה א260נוונאזוי 5 | לחצן הקטנה. טא55% וו | תפריט מערכת. 0801 5 | פס גלילה אופק 050801 או | פס גלילה אנכ קיימיס הרבה ערכים נוספים. למידע מפורט חפש במדריכים המקווניס. הפרמטר זצח1טוחדח חייב להכיל את הידית של המופע הנוכחי של היישום. הפונקציה ()ו60חו/9%ו6163 מחזירה את הידית של החלון שהיא יוצרת, או ערך וטו אם לא ניתן ליצור את החלון. גם לאחר שנוצר, החלון אינו מוצג על המסך. כדי לגרום להצגתו, עליך להפעיל את הפונקציה ()אוסטחו/אוסו/5, שהגדרתה היא ; (אסת 186 עמשומ סאל ה) וסנתנאשיסגו מס הפרמטר 6חאוח מכיל את הידית של החלון להצגה. מצב התצוגה נקבע בפרמטר אסוזח. בפעם הראשונה שהחלון מוצג על המסך, עליך להעביר את הפרמטר 006חואוח בפונקציה ()חוג!אחוו כפרמטר אסוח. בקריאות הבאות לפונקציה זו, אתה יכולל להשתמש בערכים נוספים. בתוכנית השלד כלולה קריאה לפונקציה ()וסחו/306קט, למרות שמבחינה טכנית. אין צורך בכך בתוכנית השלד, מפני שהקריאה לפונקציה זו נחוצה כמעט בכל יישום. שתיצור לחלונות אפ למעשה, הפונקציה מורה לחלונות לשלוח הודעה ליישום שלך על כך שיש לעדכן את החלון הראשי לולאת ההודעות הקטע האחרון של הפונקציה חוגווחוו שבתוכנית 960614 עוסק בלולאת. 6חאו, שמטפלת בהודעות המערכת. כל תוכנית פאוסחו/ שתכתוב תשתמש בלולאת הודעות. (פ100 1659396). מטרתה בתוך הפונקציה לקבל ולעבד את ההודעות ששולחת חלונות. בעת ההרצה שלה, מקבל היישום הודעות ללא הרף. ההודעות נשמרות בתור ההודעות. של היישום עד שניתן לקרוא ולעבד אותן. הפורמט הרגיל של לולאת ההודעות מופיע להלן , 09 116) 550 [ (850) 8055580 1פמבעד (50) ספות פרק 2: תכנות בחלונות א9, סקירה ‏ 47 בכל פעם שהיישום שלך מוכן לקריאת הודעה נוספת, עליו להפעיל את הפונקציה ()699306א66, שהגדרתה מובאת להלן (אגמ פאצט ,תנת עומצט ,המאת פומות ,ספת 10056) 000055800 מססם את הפונקציה 661//655306 תכתוב, בדרך כלל, כמו בדוגמה זר ;(0,0 ,מנטה ,8856) 0608655806 מססם הפונקציה 66069306 מחצירה ערך אמת (פטזד) או שקד (89ז). היא מחזירה את הערך סט עד שהיא מקבלת את ההודעה דנטס אוו (במקרה של שגיאה הפונקציה תחזיר 1- . למשל: אם הערך ב-א/! הוא ידית לחלון בלתי תקין). טבלה 2.2 מפרטת. את הפרמטרים של הפונקציה 60/1095306. טבלה 2.1: הפרמטרים של הפונקציה 661/0655806. שם הפרמטר | סוג | | מטרה פופו | = 56 | החזרת מצביע למבנה מסוג 56/. לאחר טבלה זו תמצא את הגדרת המבנה 156 שחושו | סאוו | ידית החלון שמקבל את ההודעות. בדרך כלל מציבים. וטא עבור פרמטר זה, שמורה ל-661//699306 לקבל את. כל ההודעות עבור המטלה הנוכחית. חווזזסטו טפאט | = דאזט | ערך ההודעה המינימלי שצריך לקבל. בדרך כלל, מציבים 0 עבור פרמטר זה. אמווזפטו פוט | = דאנט | ערך ההודעה המקסימלי שצריך לקבל. אס תציב 0 עבור שני הפרמטרים חו91ז/508/נ ו-18חזסזופוט, הפונקציה 66069936 תקבל את כל ההודעות. כמו שראית בטבלה 2.2, הפונקציה 6001659306 מקבלת פרמטר מסוג 156!. 5ס6חואר מגדירה את הסוג 56! בקובץ הכותר ח.זספטחואו כמו שתראה להלן. 5 6 פע 6 606ת1 //‏ ;תאמ מא 10 69886ח //‏ ;5806פשח פאצט 6 מ4פמפא //‏ קההשבפט שאצט // 198548 16‏ :פב שתפתק1 864900 81866 41118600865ח // 0 ספסום 8 0056108668 מ6שש50 //;6ם שנס 10056108 הפס שמשצעגוה 3 8 זקתקבח/ ומבוא ל-ספו כל אלמנט במבנה מסוג 156 חשוב, אבל האלמנט (או למעשה הפרמטר) שתשתמש בר לרוב הוא האיבר 6פפפפסוח, שמתייחס לרבות מהגדרות פווסשחו לקבועי הודעות. תלמד יותר על קבועי הודעות בסעיפים שבהמשך ספר זה. השדה 6חאו! שבמבנה 056 מכיל את הידית של החלון שאליו מיועדת ההודעה. כל ההודעות של ו הן מספרים שלמים ב- 32 סיביות, וההודעה נשמרת בשדה 6 מידע נוסף הנוגע להודעות מועבר בפרמטרים ולאו ו-וחפזפקן.. הסוגג קוו הוא הגדרת 6061ק/6 ל-דא1ט, והסווג 1788 הדא הגדרת 666%ק/ ל-106 השעה שבה נשלחה ההודעה תצוין באלפיות השנייה בשדה פוחט. הרכיב (006א) זן יכיל את הקואורדינטות שבהן היה העכבר בעת שההודעה נשלחה. הקואורדינטות נשמרות במבנה דוז01ק, שהגדרתו נראית כך | 6809010 56506 6465פעט 10 צאצספ ן אם אין הודעות בתור ההודעות של היישום, הקריאה לפונקציה ()660655306 תחזיר. את השליטה לחלונות (נושא ההודעות יידון ביתר פירוט בפרק הבא). בתוך לולאת ההודעות, מופעלות שתי פונקציות. הראשונה בהן היא הפונקציה ()8051856%655896זד. פונקציה זו מקבלת הודעת מקש וירטואלי (כמו 148 אע שהמערכת יוצרת כאשר המשתמש מקיש על מקש כלשהו, ומשגרת את ההודעה המתאימה 6448 או לתור ההודעות של היישום (68 או מייצגת עבור 5אס6חוא את ההודעה על קבלת תו). אם ההודעה אינה של מקש וירטואלי, 088 אוו מחזירה. הודעת 1356 ואינה מעבדת את ההודעה. אף שהדבר אינו נחוץ בכל יישום, מרבית היישומים מפעילים את הפונקציה ()9%/655306ו3ופחזד, מכיון שהיא נחוצה לאפשר שילוב מלא של המקלדת בתוכנית היושום. לאחר שההודעה נקראה ותורגמה, היא נשלחת בחורה לחלונות 9% באמצעות הפונקציה. ()50300655395ו .0‏ הפונקציה 01808600/1655306. קוראת. לפונקציית. המשוב (חסטשחט! 63110866) שהוגדרה ברישום מחלקת החלון, כדי שתטפל בהודעה זו לרוב תשתמש בפונקציה 01503000/695306 כפי שתראה בהצהרה שלהלן. ; (890ק1 *0פו צפא00) 219086089659896 פָסַב למרות שהפונקציה 503000/165306ום מחצירה ערך מסוג פַחסו, התוכניות שלך יתעלמו בדרך כלל מערך זה, מכיון שחשימוש בו בתוכנית שלך חסר משמעות. הערה: לולאת ההודעות חייבת להכיל את הפונקציה 5081006655306וס, ‏ אחרת פונקציית החלון לא תקבל את ההודעות והתוכנית לא תוכל. לטפל בהודעות שהמערכת שולחת. פרק 2: תכנות בחלונות א9, סקירה ‏ 49 עם סיום לולאת ההודעות, הפונקציה ()חהאחוו מסתיימת בכך שהיא שולחת. לחלונות 9% את הערך שמכיל השדה וחפזגלאו.ָפוח. ערך זה הוא הקוד החוור המופק. כאשר התוכנית שלך מסתיימת. פונקציית החלון הפונקציה השנייה ביישום השלד היא פונקציית החלון. במקרה זה, נקראת הפונקציה. (060זקחא, אולם תוכל להעניק לה כל שם שתבחר. פונקציית החלון מעבירה את ארבעת החברים הראשונים במבנה 1456 כפרמטרים שלה. פונקציית החלון של יישום השלד מגיבה בצורה פעילח רק על שתי הודעות + 3% 065180 א/ו. הודעה זו נשלחת כאשר המשתמש מסיים את התוכנית. כשהיא מתקבלת, חייבת התוכנית שלך לבצע קריאה לפונקציה ()₪0655906פסק. הפרמטר לפונקציה זו הוא קוד יציאה המוחזר בתוך השדה ופזלאו.פפה, שבפונקציה ()חואחווו. הקריאה לפונקציה ()005400/0/655306 גורמת. למשלוח. הודעת ד01. אצ אל היישום, דבר שבתורו גורם לפונקציה ()660%699906. להחזיר ערך 56ו3!, וכך לעצור את התוכנית. 3% סאויואסס ואו הודעה זו תישלח כאשר המשתמש ילחץ על התפריט. המשתמש. יכול ללחוץ בתפריט בשני מקומות : ₪ ,6%ד. כאשר הוא ילח על 765 יופעל. סד 10%%. המערכת לא תעשה כלום וה רק הכנה לשימוש מאוחר יותר). כאשר המשתמש ילחץ על 54, התוכנית תפעיל את הפונקציה אא60חו5000פם שבעצמה. תסיים את התוכנית, ותשלח הודעה 65180 וא כל שאר ההודעות המתקבלות על ידי פונקציית החלון ()106ל6ח/ מועברות לחלונות. באמצעות הפונקציה ()6סזקוסחו/6ם, המכילה את ברירת המחדל לאופן העיבוד. צעד וה הוא צעד נחוץ, כיון שחובה לטפל בכל הודעה בדרך זו או אחרת. 5 כללים לקביעת שמות אס התכנות לחלונות א9 חדש עבורך, ייתכן שכמה משמות המשתנים והפרמטרים. בתוכנית השלד ובתיאור הנלווה נראו לך מוזרים. הדבר נובע מקביעת שמות אלה על פי כללום מסוימים שהומצאו על ידי מיקרוסופט לצורך התכנות החלונאי. כשמדובר בפונקציות, על השם לכלול פועל ולאחריו שם עצם. האות הראשונה של הפועל ושם. העצם יהיו רישיות. לקביעת שמות הפונקציות בספר זה, ישמשו אותנו ברוב המקרים, כללים אלה. 0 לבחו ומבוא ל-ספו טבלה 2.3: התווים המשמשים כתחיליות לציון טוג המשתנה. התחילית = | תיאור הנתון ₪ | בוליאני (סיבית אחת) > | תו (סיבית אחת = | מספר שלס ארוך ובלתי מסומן. | שדה-סיביות בן 16 סיביות (דגלים) ₪ | פונקציה = | ידית || | מספר שלם ארוך. | | מצביע ארוך ה | מספר שלם קצר ₪ | מצביע = | מספר שלם ארוך המכיל קואורדינטות של מסך = | מספר שלם קצר ובלתי מסומן ₪ | מצביע על מחרוזת שסיומה הוא ב-ווטא קפ = | מצביע ארוך, המצביע על מחרוזת שסיומה הוא ב-א סז = | מספר שלם ארוך המכל ערכי צבע 68 אשר לשמות של משתנים, מיקרוסופט בחרה להשתמש בשיטה מסובכת למדי של שתילת סוג הנתון בשם. כדי לעשות זאת, מוסיפים תחילית (65/ק) באותיות קטנות. לתחילת שם המשתנה, וזו מציינת את סוג המשתנה. השם עצמו מתחיל באות רישית. תחיליות הסוג מפורטות בטבלה 2.3. למען האמת, השימוש בתחיליות אלו שנוי במחלוקת, ואינ מקובל על הכל. מתכנתי חלונות רבים משתמשים בשיטה זו, אך יש. רבים אחרים שאינם משתמשים בה. בספר זה השתמשנו בשיטת מיקרוסופט כל שהדבר התבקש ונראה הגיוני, אולס אין וה מחייב אותך כלל. באפשרותך להשתמש. בכל מערכת כללים לקביעת שמות שתרצה. פרק 2: תכנות בחלונות א5, סקירה ‏ 51 פרק עיבוד הודעות כפי שהסברנו בפרק 2, חלונות מתקשרת עם יישומים על ידי משלוח הודעות. לכן, עיבוד ההודעות האלו הוא בעל חשיבות מכרעת בכל יישומי חלונות א9. בפרק הקודם. למדת כיצד ליצור יישום שלד לחלונות א9. בפרק זה, נרחיב את השלד, כך שיוכל לקבל. ולעבד כמה מההודעות הנפוצות ביותר. 1 מהן הודעות? חלונות אל מפיקה מיגוון רחב של הודעות. כל הודעה מיוצגת על ידי ערך שהוא מספר שלם ייחודי, בן 32 סיביות. קובץ הכותר ה.פווסשחווי מכיל שמות תקניים להודעות. אלו. כשתידרש להתייחס להודעה, תשתמש בדרך כלל בשם המאקרו של כל הודעה, ולא בערך עצמו. להלן שמות המאקרו של כמה מההודעות הנפוצות ביותר של חלונותת ור ונד תק וא פשסור א ו אסטו0 מ ]- מונתועוסס ואר לכל הודעה נלווים שני ערכים נוספים, אשר מכילים מידע הנוגע להודעה שאליה הם. קשורים. אחד הערכים הוא מסוג אהההק/ו, והשני הוא מסוג 1788. חלונות שנר הערכים האלה מתורגמים למספרים שלמים בני 32 סיביות. השמות המקובלים לערכים אלה הם וחפזפקאו ו-חזגּזפלו, בהתאמה. בדרך כלל, שמורים בהם פרטים כגון קואורדינטות לסמן או לעכבר, ערך של לחיצה על מקש, או ערכים הקשורים במערכת. כגון גודל התווים. בהמשך נברר את משמעות הערכים השמורים בפרמטרים וזמזפלוי ו-וחמזהק! לגבי כל הודעה שנעסוק בה. 2 קלח ומבוא ל-ספו כפו שהוכרנו בפרק 2, הפונקציה שמעבדת בפועל את ההודעות היא פונקציית החלון. של התוכנית. בוודאי תוכור שפונקציה זאת מקבלת ארבעה פרמטרים: הידית של החלון שההודעה מיועדת לו, ההודעה עצמה, ולבסוף הפרמטרים וחבזפקאו ו-וחבזקו לפעמים קורה ששתי פיסות מידע מקודדות אל תוך המילים המרכיבות את הפרמטרים וחגזגלאו ו-וזגזגלו. כדי לאפשר גישה נוחה לכל אחד מהחצאים של פרמטרים אלה, חלונות מגדירה שתי פקודות מאקרו, ששמותיהן ססאוס1 ו-סחסווז. פקודות אלו מחזירות את מילת הסדר-הגבוה ואת מילת-הסדר הנמוך של מספר שלם ארוך, בהתאמה. השימוש בהם הוא כזה. (8ש193) סו ; (בשבק1) סהסונ = א בהמשך תראה את פקודות המאקרו האלו בפעולה. למדת שתוכניות מגיבות לקלט מהמשתמש בפורמט של הודעות מערכת. בסעיפים: קודמים התוכניות בדקו את ההודעה סאג/אוו0 וז כדי לדעת אס המשתמש שלח פקודה לתוכנית, ואם צריך להגיב לבחירת המשתמש מתפריט או מתוך פקד שיצרו את. ההודעה. כאשר התוכנית פועלת באמצעות פעולות עכבר, חובה עליה לבדוק את הודעות פאוסחואו שמפורטות בטבלה 3.1 שלהלן. הודעות 005חו בתגובה לפעולות עכבר. טבלה 3.1: הודעות 5ו60ח%1 בתגובה לפעולות עכברר הודעה פירוש 650א או 5הטדקה6 4 | פאוסחוצו שולחת את ההודעה הזו לחלון שאיבד את לכידת העכבר (פזוס63 ספטסוו. ופסאסדד80 | וו | המשתמש לחץ על לחצן העכבר השמאלי פעמיים. אעוספאסדדט8 וא | המשתמש לחץ על לחצן העכבר השמאלי, והלחצן עדיין לחוץ. סטאסדדט8 ואו | המשתמש שחרר את לחצן העכבר השמאלי. ופסאסדדטפוא ואו | המשתמש לחץ על לחצן העכבר האמצעי פעמיים (רק. בעכברים בעלי שלושה לחצנים). אווספאסדדטפוי וו | המשתמש לחץ על לחצן העכבר האמצעי, והלחצן עדיון לחוץ (רק בעכברים בעלי שלושה לחצנים) קטאסדדטפו וא | המשתמש שחרר את לחצן העכבר האמצעי (רק. בעכברים בעלי שלושה לחצנים). שדאענד0 1055 ואו | המשתמש לח בעכבר בחלון שאינו פעיל כרגע. פרק 3: עיבוד הודעות ‏ 53 הודעה ב דד 8 סו ואר דד וס ואר קטאס דד 8 וס ואר וס טפוס ואר אצוספאסדדטפואסא ואר טפוס ואר ב וס דסא ואר וס דסא ור קדס ואר אסאס דדטפה ואר אסאס דדטפה ואר קטאסדדטפה וו פירוש המשתמש גרר את העכבר בחלון המשתמש לחץ על לחצן העכבר השמאלי פעמיים. בחלון, בשטח שאינו שטח הלקוח (163. 1ח0ו0-חסא). המשתמש לח) על לחצן העכבר השמאלי בחלון, בשטח. שאינו שטח הלקוח, והלחצן עדיין לחוץ. המשתמש שחרר את לחצן העכבר השמאלי בשטח שאינו שטח הלקוח של החלון. המשתמש לחץ על לחצן העכבר האמצעי פעמיים. בשטח שאינו שטח הלקוח בחלון (רק בעכבר בעלל שלושה לחצנים). המשתמש לחץ על לחצן העכבר האמצעי בשטח שאינו שטח הלקוח בחלון, והלחצן עדיין לחוץ (רק בעכבר. בעל שלושה לחצנים). המשתמש שחרר את לחצן העכבר האמצעי בשטח. שאינו שטח הלקוח של החלון (רק בעכבר בעל שלושה לחצנים). המשתמש גרר את העכבר בחלון, בשטח שאינו שטח הלקוח. המשתמש לחץ על לחצן העכבר הימני פעמיים בשטח שאינו שטח הלקוח בחלון. המשתמש לחץ על לחצן העכבר הימני בשטח שאינו שטח הלקוח בחלון, והלחצן עדיין לחוץ. המשתמש שחרר את לחצן העכבר הימני בשטח שאינו שטח הלקוח בחלון. המשתמש לחץ על לחצן העכבר הימני פעמיים. המשתמש לח) על לחצן העכבר הימני, והלחצן עדייך לחוץ. המשתמש שחרר את לחצן העכבר הימני. כאשר יישום מקבל הודעה מהעכבר, הערך וחגזגל! מכיל את קואורדינטות א ו-צ של סמן העכבר שעל המסך. 8ו0חו/ מאחסנת את הקואורדינטה + במילת הסדר-הגבוה. של וחפזפקו, ואת הקואורדינטה % - במילת הסדר-הנמוך. צריך להשתמש במאקרוס. סחסאוס ו-ססעוזו כדי להפריד בין שני הערכים, ולטפל בכל אחד מהס בנפרד 4 זקתקבחו/ ומבוא ל-ספו הסעיף הבא בוחן את ההודעה 1005606 אישו כדוגמה להודעת עכבר של 60%5חווא, וכולל קטע קוד שמראה איך שולפים את ערכי הקואורדינטות מהפרמטר ומק % הערה: במערכות חלונות מתקדמות יותר מ- 95 פאוס6חוו קיימות הודעות נוספות המתקבלות מהעכבר. לפורוט נוסף. עיין במדריכים המקוונים של מיקרוסופט. 2 ההודעה ₪005591/0/5 ואצו למדת בסעיף הקודם ש-פווסטחו/ו מעבירה ליישומים הודעות שונות כתגובה לפעולות. בעכבר. אחת ההודעות הנפוצות ביותר היא ההודעה 058%008/ |אא. 5אוסטחוער שולחת את ההודעה הזו לחלון בכל פעם שהסמן זז. אס אין חלון שכבר לכד את מידע העכבר, פאוסטחו// שולחת את ההודעה 0056%006! וא לחלון שבו נמצא הסמן. אחרת, היא שולחת את ההודעה אל החלון שלכד את העכבר. כשהתוכנית מקבלת את ההודעה 100569006 וו, היא צריכה לבדוק את מספר ערכים, לפני שהיא מגיבה להודעה 8 צא // הלא = פעסאום שספענוס 05 ה81610סם 581ת120עסמ // ;(מבעגק1) סה0אס1 = פספא פספפטס 0% מס1פנפסק 81ס1מצשט // ;(מבעגק1)סהסאנמ = מספץ / למדת בסעיף הקודם שהערך וזגקו מכיל את קואורדינטות המיקום א ו-צ של סמן. העכבר. הפרמטר וגאו מכיל את הערך 66/5/, אשר מציין אס מקשים וירטואליים. כלשהם לחוצים. הערך ₪655 יכול להיות כל צירוף של הערכים המפורטים בטבלה 3.2. טבלה 3.2: הערכים האפשריים של הפרמטר 55אאח. ערך תיאור דוס 6 | מקש 6 לחוץ. ואסדדטפ אוו | הלחצן השמאלי של העכבר לחוץ. אסדדטפוי! או | הלחצן האאמצעי של העכבר לחוץ. אסדדטפה אוו | הלחצן הימני של העכבר לחוץ. דחזוז5 אא | המקש 5/8 לחוא. בדי ללכוד את תנועות העכבר מתוך פונקציית ההודעות, על התוכנית להשתמש בקוד. דומה לוה שמוצג בקטע הבא: פרק 3: עיבוד הודעות ‏ 55 ו 0 5 [ 108 סהסו10 = פספאת (198588) 8100080 = פספצת תס )ופ צשמטם // בקטע קוד וה, התוכנית מציבה את המיקום הנוכחי של העכבר במשתנים 5ספאח 05-1/+ח בכל פעם שהמשתמש מזיז את העכבר. 3 קריאת לחצני העכבר בסעיף 3.2 למדת להשתמש בהודעה 0056/006ו ואו שנשלחת לחלון, כדי לאפשר לתוכניות להגיב לתנועות סמן העכבר על המסך. באופן דומה, הוספת קוד לתוכניותת כדי שיגיבו לפעולות לחצני העכבר, גם היא דבר פשוט. לדוגמה, כשרוצים שהתוכנית. תגיב ללחיצה כפולה של המשתמש בעכבר, בנקודה כלשהי שנמצאת בשטח הלקוח של החלון, התוכנית תשתמש בקוד שנמצא בפונקציה 09106ח//ו ודומה לקטע הקוד הזה ,פוא פאצט ,מאה סוח/מ) סספפבמו אסהמננתס נטפמתג (בשבפ1 מתתתק1 ,מבצבפא מתתתפו 160) ָ 1 אסצ 190 0 886 ;מס פע ,נתטאו ,"0116%68-שנמנוסם מסספטם" ,התא 680 טא צ אולם, כשרוצים שתגובת התוכנית תהיה שונה כאשר המשתמש מחזיק את המקש וז. לחוץ בומן הלחיצה על העכבר, אפשר לכתוב את קטע הקוד הזה סט 1 ו 856 פאס אע (מסתוו0 006 ₪ מהפגתא)) 18 | 1 0116%88-נמנוסם הספוטם" ,החאם) פס (א0 מא ,מנטון ,"משסם עשא 01עףהסס ספ 8 106 16-0116%68מגוסם מספטטם" ,תא טא ;(אס מא ,מנטון ,"משסם עשא 01ש%הסס פע 56 זלַח/ ומבוא ל-ספו אפשר לראות מהקוד שהתוכנית יכולה לבדוק אס המשתמש לוח כרגע על מקש' וירטואלי (/6 |גטטזו) נתון. היא עושה ואת על ידי ביצוע סאה הפועל על סיביותת (סאה/ 81096), בי ערך הפרמטר חגזגקאו לבין ערך המקש הווירטואלי שרוצים לבדוק. כל שהתוכניות שלך יילכו ויהיו יותר מורכבות, תרבה לבדוק את המקשים הווירטואליים בעת הטיפול באירועי העכבר. ראוי לזכור שלמרות ש-1606) מוסרת. רק מספר מסוים של מקשים וירטואליים ב-ופזפלווי בהקשר ללחיצות העכבר, היא תומכת במספר גדול של מקשים וירטואליים, כפי שתלמד בסעיף 3.5 4 תגובה לאירועי מקלדת למדת ש-00008/ו שולחת הודעות ליישום בכל פעם שהמשתמש מבצע פעילות כלשחי בעכבר. כך היא גם שולחת הודעות ליישוס בכל פעם שהמשתמש מקיש במקלדת. ההודעה ש-008חוו תשלח תהיה אחת מאלו שמפורטות בטבלה 3.3 טבלה 3.3: הודעות המערכת ש-0065ח1/ שולחת בעת פעולות מקלדת. הודעה תיאור פדענד0א/ אוו | הקשה בתוך חלון שאינו פעיל. הא ו | קוד ז501א של האות, אס המשתמש הקיש על מקש תו. ץפאדסרדפ6. ואוו | מאפשר לתוכניות לקלוט מקש חס (8א זסוז, או מקש מהיר) שהוגדר קודם לכן עבור החלון. +₪אדס3 וו | המשתמש הקיש על מקש חם. אעוססצ5א ואו | המשתמש הקיש על מקש. קטץפא ואו | המשתמש שחרר את המקש. 5 ואש | ההודעה נשלחת לחלון מייד לפני שהוא מאבד את מיקוד. הקלט מהמקלדת. 55 וו | ההודעה נשלחת לחלון מייד לאחר שהחלון מקבל את מיקוד הקלט מהמקלדת. +פאדסאד55 אע | מאפשר לתוכניות לקבוע יימקש חסיי עבור חלון. 550% וא/ו | קוד 85611 של האות שהמשתמש הקיש בעת שמקש וו לחוץ. אופ5%א5/5 ואו | המשתמש הקיש על מקש כאשר מקש ו לחוץ. קטץ6א5צ5 וא/ו | המשתמש שחרר את המקש וגם את המקש ו41. פרק 3: עיבוד הודעות ‏ 57 הפונקציה 155506ְ1ְח3זד שבלולאת ההודעות של המטלה יוצרת את ההודעה ההד0 יא אם היא מצליחה לפענח את התו כתו 85011. ככלל, היישום. משתמש. בהודעה א/ו00+א זו כדי לבדוק את מקשי הפונקציות (6/5א חסוטחט?), מקשי סמן (55א זספזס), המקלדת הנומרית (66/36 זסחוט!) ומקשי העריכה (5ץ6א 866), כמו 90600 ו-חאוסס6טפק. מקשים אלה מנצלים בצורה הטובה ביותר את קוד המקשים הוולרטואליים (60665 /881-66זו0), עליו נלמד בסעיף הבא: עם ואת, על התוכניות להשתמש ב-07/48 וו כדי לקבל אותיות (פססזבהס), ספות (פוסטוחטוא): וסימנים שניתנים בהדפסה (וסטוחץ5 6!סמוחוזק). השימוש בהודעה 8 וו כדי לטפל בהקשות אלו טוב יותר, מפני ש-85011 מציבה ערכים שונים עבור אותיות רגילות (1911615 066056 ואותיות רישיות (160095 וגזוקס). עם ההודעה אעוסס/פא א/ו, היישום חייב לבדוק את התו שהקיש המשתמש וג את מצב מקש ח5. ההודעה 6% ו מטפלת בהקשת 50. כשהמשתמש מקיש על מקש 1 ובעודו לחוץ - הוא מקיש על מקש נוסף, חיישום. מקבל ‏ את רצף ההודעות ‏ הבאות: א/ו00צ51566 או = 515078 ואו קטץ5א515 ואצ התוכנית צריכה להשתמש בהודעות אלו כדי לבדוק רצף הקשות הנלוות למקש ד)א. 5 מקשים וירטואליים (5ץ66 |בּש+זו/) למדת בסעיף הקודם שכדי לטפל בהקשה כתו 5011א, התוכנית צריכה להשתמש. בהודעה 34 א לפעמים, התוכנית עשויה לדרוש, או שתרשה למשתמש, להשתמש במקשים אחרים. בנוסף למקשי 85011 הרגילים, כמו לדוגמה, מקשי החיצים, מקשי המספרים במקלדת. הנומרית, וכדומה. כאשר משתמשים במקשים כאלה, צריך להשתמש בערכים של מקשים וירטואליים. השימוש במקשים וירטואלייס משחרר אותך מלהתחשב בסוג המקלדת של המשתמש, מכיון שהקוד הווירטואלי של מקש הפונקציה הראשון צריך להיות תמיד והה, ללא תלות ביצרן המקלדת או בסוג שלה. ההודעות א//ו0 5 ווו, קטצפא ואעו, ‏ אשוספ51565 או -קט+פ5156"8 או שולחות את קוד המקשים הווירטואליים בפרמטר וזאי של ההודעה. במכלול המבנה של קוד המקשים הווירטואליים, למספרים שבמקלדת הנומרית יש קוד מקשים וירטואלי נפרד. בנוסף, הקוד הווירטואלי עבור התווים ומקשי הספרות. שקול לערך 85611 של האות הרישית (ספמזפק0). במילים אחרות, ל-8 ו-א יש את הקוד 4 א/. לבסוף, שיס לב ששני מקשי 50/8 (הימני והשמאלי) יוצרים אותו קוד וירטואלי. טבלה 3.4 מפרטת את הקודים הווירטואליים של 71 32 חווץ. 8 זלבח/ ומבוא ל-ספו טבלה 3.4: קודי המקשים הווירטואליים של 8 32 חושא. קוד המקש אסדד9 א אסדדטפה א א א אסדדטפו א א פד אצ א אדפ א בוו 0 א טאפו אצ וו דוקה אצ א היו היו אפ א סופ אצ הויו ביוויו אצ ונה א אווסס א ערך (הקסדצימלי) ₪ ₪ ₪ / ₪8 0 6 פס 10 11 12 3 4 18 20 ₪ ₪ 3 / 55 5 27 28 השקול במקלדת או העכבר לחצן שמאלי של העכבר. לחצן ימני של העכבר. הטיפול ב-000₪01-8168%. לחצן אמצעי של העכבר, בעכבר עם שלושה לחצנים, או שני הלחצנים השמאלי וחימני בו-ומנית. מקש מס (88665865). טבלר (80ד). 4 ו ו = שוג 6 0 6 בב טפט סח האס חמק 6 7 סו 1 אוסזז סט וסזזה חפ סז האס פרק 3: עיבוד הודעות ‏ 59 קוד המקש אצ סו אע סופא אצ הפפ א אע מיוויון מו 27 אצ ויו הלויו הויו וו ויו וו 6 לוו 8 הלוו דוט אצ ספא אצ ייוו בוו אצ פסנענם אע 4 אע - 1 א ערך (הקסדצימלי) 5 25 6 ₪ 5 5 ו היו "₪ 6 8 "5 / 65 6 97 8 9 68 68 6 60 6 6 7 0 לבחו ומבוא ל-ספו השקול במקלדת או העכבר 0 וו ווק חן וו ו 9 2 1 0 0 0 1 0 6 7 8 0 ור חיק 0 הו מ ו 1 - 24 קוד המקש עוך השקול במקלדת או העכבר (הקסדצימלי) ו 90 ו 0 אע 1 0 6 הצגת המקשים הווירטואליים למדת שהתוכנית מקבלת מ-פאוס0חו בדרך כלל אחד משלושה סוגי קלט מקלדת. קלט תווי 85011 מוכרים, המועברים במשתנה וחזפוי של ההודעה הא וא; קלט. תווים לא מוכרים (60:חחָסטזחט), שאינם תווי מערכת (005190160 5100ע5-חסא) ומועברים ב-וחמזגקוו. של ההודעה א/ו0סץא ואו וקלט תווי מערכת (חפופקפ זסו0מזהת0) המועברים ב-חזפזפסוי של ההודעה אש51585+00 א/ו. גם למדת כוצד יכולה התוכנית לטפל בקלות בהודעות שמתקבלות מהעכבר. הטיפול בהודעות המקלדת קל ופשוט. לדוגמה, קטע הקוד הבא מציג תווים מוכרים בתוך תיבת עריכה של טקסט, ואם התו שאינו מוכר הוא מקש פונקציה, הקוד מציג תיבת הודעה שמציינת ואת פאנט ,התה פאטוא) 06עפ65%לט1ם אסהפננתס צמטפפה1 (מ98ב10 עתתהל1 ,מבבפט מתהתקור 3 האג | ( 01 180 ,6 001150 (ת458פט ,520816008) מששפמ1 (528016809 ,אסמצנסם 100 ,6מומ) 56ת1160ס :0 פע סלפ 0 856 (הבפגתא) 01600 1 אע 496 ,"068866 ע86 1 הס61סתנם" ,המאג 655496008 ;אס פע ,נפט (8%סע .92 אע 6896 ,*8868עק עשא 2 הס1מסתנם" ,ההאמ) 89600פטא אס פע ,נפטת (8%סע עפ 56868 עסא במטסט1ע הפמט // פרק 3: עיבוד הודעות ‏ 61 אפשר לראות שהתוכנית בודקת את הערכים הווירטואליים של מקשי הפונקציות. ש-00008/ מאחסנת בפרמטר חמומקאא, כדי לקבוע את המקש הווירטואלי שהמשתמש הקיש. 7 מבט נוסף על השימוש ב אעצספצםא אצ וסחוו. שולחת את ההודעה אעוסס/פא אוו לחלון שנמצא במיקוד הקלט של המקלדת, כאשר המשתמש מקיש על מקש שאינו מקש מערכת (/5 5/51971-חסא). מקש שאינו מקש מערכת הוא מקש שהמשתמש מקיש עליו ללא שילוב עם . בסעיף. 5 ראית ש-0005ח מעבירה בתוך הפרמטר וגזפלוו את קוד המקש הווירטואלי שהמשתמש הקיש. אך היא גם מעבירה בפרמטר וחגּזהקו את הערך בּבסע6או. הפרמטר. ו03ץ66! מגדיר מספר החזרות טחטס60 860636), קוד סריקה (0006/ה502), דגל מקש-מורחב (₪90 ע6א-400060ם), קוד הקשר (0986 זאטוחסס), דגל מצב-מקש קוד (180 50316-ץ69 פטסושסזק) ודגל מצב- מעבר (סכ1 51316-חס₪!פחגזד), כמו שתוכל לראות. בטבלה 3.5 ודעה טבלת 3.5: הערכים ש-5וו60חו/% מעבירה בתוך הפרמטר וחבזק| עם ההודעה 00 ?ו שו. סיבית. | תיאור 5 | מספר החורות. ערך וה הוא מספר ההקשות החוזרות כתוצאה מהחוקת. המקש לחוץ. 3 -16 | קוד הסריקה. הערך תלוי ביצרן הציוד טחסוחקוטףם וטס - ואס. ב 4 | מקש מורחב (ץ66 5/60666), כמו המקשיס 1 ו-600 הימניים שנמצאים. במקלדת המשופרת של 101 או 102 מקשים. כאשר ערך סיבית זו הוא 1, המקש הוא מקש מורחב; אחרת, המקש רגיל (שמאלי). - 25 | שמור, אונו בשימוש. 9 | קוד הקשר (6068 אאפחסס). הערך תמיד 0 עבור ההודעה אאוספצ:6 ואעו. 0 | המצב הקודס של המקש. סיבית זו נקבעת ל-1 אס המקש נלח) לפנ שליחת ההודעה; וערכה 0 אס המקש אינו לחוץ. 1 | מצב מעבר. סיבית זו לעולם אינה נקבעת עבור ההודעה א/ו0סץ5א יוא. כשהמשתמש מקיש על מקש הפונקציה 10", הפונקציה 60406חוא קובעת דגלל פנימי. כאשר 7106/ו00חו//090 מקבלת את ההודעה קט/65 או, הפונקציה בודקת אם הדגל הפנימי נקבע; אס כן, היא שולחת הודעה סא51500%%8 ו לחלון הראשי (אוס0חו//ו 6061 1-קסד). סקס חווט קובעת את ערך הפרמטר וחפזפקוי של ההודעה. ל-טאפוץ6 א 56. 2 הלבחו ומבוא ל-ספו תכונת החזרה האוטומטית (9300/6 )הפפסז-סזג) שיש ל-פווס6חוא. מאפשרת לה לשלוח יותר מהודעה אווסס+פא א/ אחת. אל היישום, לפני שהיא שולחת את ההודעה ק5/0א 8//ו. באפשרות התוכניות להשתמש במצב-קודם של המקש (סיבית. 0 כדי לקבוע אם ההודעה או65+00% וא מציינת את מצב המעבר הראשון, או את מצב המעבר החוזר. במקלדות המשופרות בנות 101 ו-102 מקשים, המקשים המורחבים הם מקשי וא 1-ו הימניים בחלק המרכזי של המקלדת; המקשים פח1, /06, סוחסוז, 6ח₪, קנ מק חווסס ססָּל, ומקשי החיצים בחלק שמשמאל למקלדת הנומרית, ומקש הלוכסן (/) ו-זוחם במקלדת הנומרית. ייתכן שמקלדות אחרות יתמכו בסיבית ההרחבה שבפרמטר 66/0303 ייתכנו מצביס בהם תרצה לקבל מחרוות שמייצגת את שם המקש. בסעיף הקודם. טיפלנו במקשים ידועים בתוך הוראת 60/פ. אולם ממשק 801 32 חווו מכיל את הרשימה של המקשים שיש להם קוד מקש וירטואלי, ובאפשרותך להשתמש בפונקציה. %פזסוח3 66165 כדי לקבל אותה. הפונקציה 6616630616 מקבלת מחרוות. שמיוצגת את שם המקש. משתמשים בפונקציה זא66166/80616 כמו בדוגמה זו 6 860 05 שם6ה4:גק 560088 // 19 06 במפח עסא 0% עמ5פטמ 05 2889085 // הפפפקם 355188 שחפת עשא 8 מטת1 אמ // 8 מ 1 / הפרמטר חָופ! מצביע למאגר שמקבל את שם המקש. הפרמטר 6טפח מגדיר את האורך המקסימלי, בתווים של שם המקש, כולל את התו המסיים )וא (הפרמטר 6 צריך להיות שווה לגודל המאגר שמוצבע על ידי הפרמטר חַופקו). הפרמטר זוי מגדיר את הפרמטר השני של הודעת המקלדת (כמו א/שס0/פא וא שהפונקציה :א300616ו/ץ66166 עומדת לטפל בו. החלקים של וחפזפלוי שהפונקציה מפענחת מפורטים בטבלה 3.6 טבלה 6 + הטיביות של הזפזבקאו ש-0 0010/96 מפענחת. סיביות | פירוש 3 | קוד הסריקה (0006 ח53). 4% | דגל מקש מורחב (ָג₪ /6א-90060ו50), כדי להגדיר מספר מקשים. במקלדת המורחבת. 5 | סיבית ייאל תתחשביי (י/6316 ז'חסם"'). היישום שקורא לפונקציה 661663676 קובע את הסיבית הזו, כדי לציין שהיא לא צריכה. להבחין בין וס שמאלי לבין ימני, או בין 50 שמאלי לבין ימנו, וכדומה. פרק 3: עיבוד הודעות ‏ 63 הפורמט של המחרוות של שם המקש תלוי בפריסת המקלדת 130000 66/9070 הנוכחית. מנהל ההתקן של המקלדת מחזיק רשימת שמות בפורמט של מחרוזת תווים, עבור מקשים שהשם שלהם גדול מתו אחד. מנהל ההתקן של המקלדת מתרגם את שמות המקשים לפי פריסת המקלדת המותקנת. שם של מקש תו הוא התו עצמו. התקליטור שמצורף לספר וה מכיל את התוכנית 665 אוסח5 (בתיקיה 5 6וס035קַחס800%559285), אשר מציגה שם של מקש בכל פעם שהמשתמש מקיש על מקש כלשהו. ב-6396 של ההודעה. אעוסס+65 או,. התוכנית מטפלת בהקשרי התקן (טסושפ 5פחסס), עליהם תלמד בהמשך. הנקודה החשובה שסעיף זה רוצה לציין היא הקריאה לפונקציה +616ו80ץ6א661, כפי שמוצג להלן (30 ,8תג5200 ,מבעבק1) :א0לסהפעם א התוכנית קוראת ל-10616ו/ץ66066, ואחר כך מוציאה את הפלט אל המאגר ומואנ של החלון. 8 משך זמן הלחיצה הכפולה בעכבר התוכניות מבצעות פעולות עיבוד שונות בעת קבלת קלט מהמשתמש. פעולה נפוצה של משתמש בתוכנית היא לחיצה כפולה 006-0/00פ) בעכבר, כאשר הסמן מוצב על אפשרות כלשהי בתפריט או שהוא מוצב על סמל כלשהו. לחיצה כפולה היא סדרה של שתי לחיצות בלחצן העכבר, כאשר השנייה מתרחשת פרק ומן מסוים לאחר הראשונה. אנו רוצים לשלוט בפרק הזמן שחולף עד הלחיצה השנייה, כדי ששתי הלחיצות תחשבנה לחיצה כפולה, ולא שתי לחיצות עוקבות. באפשרות התוכניות להשתמש. בפונקציה 5600060066 כדי לשלוט במהירות הלחיצה הכפולה של העכבר. הפונקציה 6ו0וד60/66/פ56!00 קובעת את משך הלחיצה הכפולה בעכבר. משך הלחיצה הכפולה הוא המספר המקסימלי של מילישניות שחולפות בין הלחיצה הראשונה לבין הלחיצה השנייה, ה'יכפולהיי. משתמשים בפונקציה 06ח/561000/60/66 בתוכניות, כמו שרואים בהגדרה שלהלן )9186 160116%מטספ 56% 00 1 66ה 018-0106 // 1 6הזט פאצט / הפרמטר |מחפוחזט: מגדיר את מספר המילישניות המקסימלי המותר בין הלחיצה. הראשונה לבין הלחיצה השנייה, כדי ששתיהן תיחשבנה לחיצה כפולה. אם נקבע לפרמטר זה הערך אפס, פאוסטחו/וו תשתמש בזמן ברירת המחדל של הלחיצה הכפולה,, אשר שווה 500 מילישניות. %. הערה: הפונקציה 6וחוד5600006066 משנה את משך הלחיצה הכפולה לכל החלונות שבמערכת. לכן, אס תשנה את משך הומן הזה בתוכנית. שלך, עליך להחזיר אותו לערכו הקודם לאחר שהתוכנית מסתיימת. 64 קלחו ומבוא ל-ספו כמו שתוכל לקבוע את משך הזמן בין שתי לחיצות עכבר שמווהות כלחיצה כפולה, תוכל גם לקבל את משך הלחיצה הכפולה הנוכחי בעכבר, באמצעות הפונקציה 6וחוד66%000/60/6%. ראינו שלחיצה כפולה היא שתי לחיצות עכבר רצופות בפרק ומן שאינו עולה על ערך שנקבע מראש. הו המספר המקסימלי של מילישניות שחולפות. בין הלחיצה הראשונה לבין הלחיצה העוקבת לה. משתמשים בפונקציה שוחוד06016%נו66100 בתוכניות כמו בהגדרה שלהלן. (03ע) 0011016 1מגוסס 0 פונצט אס הפונקציה 06חוז000/6016פ!66 מצליחה, הערך המוחזר של הפונקציה מגדיר את. משך הלחיצה הכפולה במילישניות. כדי להבין טוב יותר את הטיפול שמבצעות הפונקציות = 6וד6000ופט0ס!56 = |-6וחודא606וט0ס:66, = התבונן = בתוכנית 16 ופ 566 66%, שבתקליטור המצורף לספר זה 060 ו 56% 0300366%). בכל פעם שהמשתמש לוחץ לחיצה כפולה בעכבר, התוכנית מציגה תיבת הודעה שמציינת שהיא קיבלה את הלחיצה הכפולה. אך בכל פעם שהמשתמש בוחר את האפשרות 160 מהתפריט, התוכנית מנדילה את משך הלחיצה הכפולה בעשירית. השנייה. שים לב, שכאשר התוכנית מטתיימת, היא מחזירה את משך הלחיצה הכפולה. לערך המקורי שחיה לפני השינו. 9 החלפת לחצני העכבר ראית בסעיף 3.8, שיכולים להיות מצבי עבודה שונים שבהם צריך לשנות דברים שנקבעו מראש. אחד מאלה היה שינוי משך ההשהיה בין לחיצות העכבר, כדי שתיחשבנה לחיצה כפולה. כך גם ייתכן שצריך יהיה להחליף את לחצני העכבר ולהשתמש בלחצן הימני לביצוע פעולות שכרגיל נעשות על ידי הלחצן השמאלי, ולהיפך, להשתמש בלחצן השמאלי כדי לבצע את הפעולות שנעשות בדרך כלל על ודי הלחצן הימני. הפונקציה חסזוטפספטסויוקוו53 הופכת, או משחזרת, את פעולת לחצנ העכבר השמאלי והימני. 5אסחוו מאפשרת את החלפת הלחצנים כדי להקל. על מי שמשתמשים בעכבר ביד שמאל. בדרך כלל, רק לוח הבקרה ((7306 וסשחסס) קורא לפונקציה חסשטפספטסויוקויו ,53‏ למרות שאפשר לקרוא לפונקציה באופן חופשי בתוכניות. כשחייבים להשתמש בתוכניות בפונקציה חסז8ספטסוק53, צריך לקרוא לה כמו בהגדרה שלהלן מס סט 055056: צס שמממטמ // 9+ ₪008 0 הפרמטר 1593 מציין את התפקיד הנוכחי של לחצני העכבר: רגיל או הפוך. אם סאפ! שווה פחד, לחצן העכבר השמאלי מייצר הודעות לחצן ימני ולחצן העכבר הימני. מייצר הודעות לחצן שמאלי. אם קַגוופ! הוא 566, הלחצנים נמצאים בהגדרתם המקורית. בתקליטור שמצורף לספר וה תמצא את התוכנית 8 קאפ (בתיקיה 3 שמחליפה את המצב של לחצני העכבר ומשחורת אותם ולהיפך, בכל פעם: שהמשתמש בוחר באפשרות 765 מהתפריט. פרק 3: עיבוד הודעות ‏ 65 שים לב. העכבר הוא משאב משותף ולכן, הפיכת תפקוד הלחצנים שלו משפיעה על כלל היישומים. התוכניות צריכות להימנע מהחלפת לחצני העכבר ככל האפשר. ובמקרה הצורך, להחזירם למצב המקורי. הקשרי התקנים בתוכנית מהסעיף הקודם, הושג הָקשר התקן לפני שהתוכנית שלחה פלט לחלון, והוא: שוחרר לאחר שהפלט הופק. כעת נברר מהו הָקשר הַתקן סוחס 06/65). למעשה. והו נתיב פלט העובר מהיישום, דרך הדרייבר המתאים להתקן, אל שטח הלקוח של החלון. הקשר ההתקן גם מגדיר בצורה מלאה את מצב הדרייבר של ההתקן. לפני שהיישום שלך יוכל לשלוח מידע כפלט לשטח הלקוח של החלון, עליו להשיג הקשר התקן. עד אז, אין למעשה קשר בין התוכנית שלך לבין החלון, בכל הנוגע לפלט. לכן, חובה להשיג הקשר של התקן לפני משלוח הפלט לחלון. הפונקציה ()00אפד ופונקציות פלט אחרות דורשות ידית להקשר של התקן, לכן זהו כלל הנאכף מעצמו. ב בוח ה תרשים 3.1: כותרת חלון לדוגמה שהופק על ידי התוכנית ה4!) ו 0 עיבוד הודעה של דאז4ק וזע לפני שתמשיך בקריאה, הר את התוכנית 5/5 שוסו51 מהסעיף הקודם פעס נוספת,, והקלד תווים אחדים. כעת, הקטן והגדל מחדש את החלון. כפי שיתברר לך, התור האחרון שהקלדת לא יוצג כשהחלון ישוחור לגודלו הרגיל. זאת ועוד, אם החלון הוסתר על ידי חלון אחר ולאחר מכן נחשף מחדש, התו האחרון אינו מוצג עוד. הסיבה לכך פשוטה: ככלל, חלונות אינה רושמת לעצמה את תכולתו של חלון נתון. האחריות. לשמירת תכולת החלון מוטלת על התוכנית שלך. כדי לסייע לתוכנית במשימה זו, כל פעם שמתעורר צורך להציג מחדש את תוכנו של החלון, תישלח לתוכנית שלך הודעת. דאזא. או (הודעה זו תישלח גכ כאשר החלון מוצג לראשונה). כל פעם שהתוכנית. מקבלת הודעה כזו, עליה להציג מחדש את תכולת החלון. בסעיף זה תוסיף לתוכנית. משפט 6356, שמתפקידו לעבד את הודעת המאקרו דאו1ק ו + הערה: מסיבות טכניות שונות, תכולתו של חלון מוצגת מחדש באופן אוטומטי לאחר הזוה של החלון. דבר זה לא יתרחש אם החלון הוסתר על ידי חלון אחר, או שחלקו היה מחוץ לתצוגה, והוצג מחדש. 66 לבחו ומבוא ל-ספו לפני שנסביר כיצד להגיב על הודעת זאזאק וא+, רצוי להסביר מדוע חלונות אינה כותבת מחדש את החלון באופן אוטומטי. התשובה לכך קצרה ועניינית: במקרים רבים, לתוכנית שלך (היודעת בדיוק מהי תכולתו של החלון), קל יותר מאשר לחלונות. לכתוב מחדש את תכולת החלון. למרות שיתרונותיה של גישה זו הם נושא לוויכות. מתמשך בין מתכנתים, רצוי שפשוט תקבל ואת, כי אין זה סביר שהדבר ישתנה בקרוב הצעד הראשון בעיבוד הודעת דאזק יו הו הוספת משפט 656 למשפט האופ בתוך פונקציית החלון, הנה כך /* 000685 מתנפקס? 8 00888צק */ נצאדתק אא 486 /* סם ממ */ ;(טסטעטפםה1גם5 ,תת 6ה1גפה1ש6ם = סשת /* שָהעם8 טטקפטס */ ;((02160)562 ,ע58 ,1 ,1 ,סשמ) ממ0:אבד /* סם 2616886 */ ; (ססמעם8מת81ק80 ,מאת) טת1פטתם ופצ הבה נתבונן במשפט זה ביסודיות. ראשית, שים לב שהקשר ההתקן מושג באמצעות. קריאה לפונקציה (גּקְחומַָ8, ולא לפונקציה ()66006. מטעמים שונים, כאשר עתה עוסק בעיבוד של הודעת דא31ק וא/ו עליך להשיג את הקשר ההתקן באמצעות הפוקנציה ()חו3לחו860, שהגדרתה היא ; (פפק1 צסטתצפעוננתקקת ,המות סאאם) שה1גתה1מט ספ הפרמטר השני הוא מצביע אל מבנה מסוג 51806 דו1ק, שהגדרתו היא | 8002ע9ע10ת800: מסטפ0פ 6668קעט /* %5ם:מ0ם 460108 50 416ממת */ /6את ספא /* 2568ב שם מפנת ההו0:סם 11 שטצ: */ ;שפגעם? מססם /* 204280 10 206108 05 8068מ600281 */ ;סתוגקם: צסמת /* 20509068 */ סעסספשת+ מססם /* 6502068? */ ;0ף62קטשחד? מססם /* 68שע2656 */ ;[68]32ע6562מס5 עצמ הדונ תק [ הסוג 8501 הוא מבנה המגדיר את הקואורדינטות לפונה השמאלית-העליונהה והימנית-התחתונה של אצור מלבני. מבנה זה נראה כך || 680 6668קעט /* 1686 עשמקט */ 5007 ,165% בא10 /* 5מ16ע עשא10 */ קמסףמסם ,תע בא10 פה [ במבנה ד800ד1815אק, הרכיב 6030 מכיל את קואורדינטות אזור החלון שיש לצובעו מחדש. לעת-עתה אינך צריך להשתמש בתכולתו של מבנה זה; תוכל להניח שיש להציגג מחדש את כל החלון. פרק 3: עיבוד הודעות ‏ 67 נציג תוכנית שלמה, המסוגלת לעבד הודעות מסוג דאזאק ו התוכנית. נמצאת. בתיקיה 6 וק ואאו3003ת0. 8 0 106 "ה עמ 6הצגק א" שהטבסה41 <מ.58810> 1006סה1 (01832) 4601868 418 מטתד 32אנון 15 440116 8 מפנתת 32אנאן 15 446116 ה ספה מהמפצגטם // >פחדת פסונתלפוננ ;"צוצתקוחו" = ההפאסקתפפק1 תעפפסקת "%ה41ע אא" = 15271016 תעפפסק1 < (סמ1 *55תנססומה פפאסם) 95ת01560201ה מססם /* פַ15צ80 סמטקסטס 185ממ */ [80] 85% צמתם מסוותפפאת3 (פסתבםפתזת מסותפפאנה) תובעתוז צהפנמנעת 45 (06מ45מסה 186 ,שה411מסק1 12578 ,06מ68פה1עםפקם [ 4 תו פעחור 6 טאו קאתהסמחע 05 | אתתספאע פס 8 מ קפוהו ב 01 ₪ 0 ₪ 1 ₪ (סמאמקת82ם1 ,8סמ8:פהנמ) ה1088160 0 ; (מוסתהה 180 ,טא 08 = ו ; (1+אססוונאו הסנסס) (מפטתפ2) = במטספףאס8פעמת סט ;במפאמקתלפם1 = סמגחטה20פם1 סט קסמגאממת2 18 = שהם58%ג8201מ1 סט ( (5ש6) 18601866601895) 16 6 תצטסם+ דה = 6פחדת קת ק1) 0ה01 :ספ = 4מאר 1 לבחו ומבוא ל-ספו פרק 3: עיבוד הודעות ‏ 69 0 נלתלבחואו ומבוא ל-ספו לפני שתמשיך, הקלד, הדר והרץ תוכנית זו. נסה להקליד כמה תווים ולאחר מכן להקטין את החלון ולשחזרו לגודלו הרגיל. כפי שיתברר לך, בכל פעם שהחלון יוצג מחדש, התו האחרון שהקלדת יצויר מחדש באופן אוטומטי. שים לב שהמערך הגלובלי. 50 מאותחל ל-זטפזטס 16קו53, ושמחרוזת זאת מוצגת בעת שהתוכנית מתחילה לרוץ. הסיבה לכך היא, שהודעת דאזאק + מופקת באופן אוטומטי כל פעם שחלון נוצר. הטיפול בהודעות של דא1ק וו בתוכנית השלד פשוט למדי, ראוי להדגיש שבמרבית. הגרסאות הממשיות, הדברים יהיו מורכבים הרבה יותר, כי רוב החלונות מכילים. הרבה יותר פלט. האחריות לשחזור התכולה של החלון במקרה של שינוי גודל, או הסתרה מוטלת על התוכנית שלך. מחובתך לספק לכל תוכנית מנגנון כלשהו שבאמצעותו היא תוכל לבצע ואת. בתוכניות אמיתיות, הדבר נעשה באחת משלוש דרכים. 1. התוכנית יכולה להפיק מחדש את הפלט באמצעות חישובים מתאימים. דרך זו מתאימה כשאין צורך בפעולה כלשהי מצד המשתמש. 2. במקרים מסוימים אפשר לרשום ולשמור את רצף האירועים, ולהריץ אותם מחדש כל פעם שצריך לצייר מחדש את החלון. 3. התוכנית יכולה לשמור מסך וירטואלי, שתכולתו מועתקת אל החלון בכל פעם. שצריך לציירו מחדש. השיטה השלשית היא הכללית ביותר מבין השלוש (יישומה של גישה זו מתואר בהמשך הספר). איזו גישה היא הטובה ביותרו זה תלוי לחלוטין ביישום. ברוב הדוגמאות בספר זה איננו טורחים לצייר מחדש את החלון, מכיון שהדבר כרוך בתוספת ניכרת של קוד, שרק תטשטש את הנקודה שאנו מנסים להבליט בכל דוגמה. כדי ליצור יישומי חלונות ל תקניים, תצטרך לדאוג לשחזור החלונות בתוכניות שלך. 1 כיצד להפיק הודעת ד1₪ק ואצ תוכל לגרום לתוכנית שלך להפיק הודעת דוק אצ. ייתכן שתשאל את עצמך מדוע שיהיה צורך בכך, ואת מכיון שהתוכנית יכולה לצבוע מחדש את החלון שלה בכל עת. שתרצה. אבל ווהי הנחה שגויה. וכור, עדכון של חלון הוא תהליך יקר במונחי זמןן חלונות היא מערכת לריבוי משימות וייתכן שהיא מריצה במקביל תוכניות נוספותת שגס להן דרוש זמן 670, ולכן רצוי שהתוכנית שלך רק תגיד למערכת ההפעלה שהיא מעוניינת להפיק פלט, אך תניח לה להחליט מתי לבצע את הדבר בפועל. דבר זה מאפשר לחלונות לנהל את המערכת בצורה יעילה יותר ולהקצות. זמן 690 לכל המשימות הרצות בה. על פי גישה זו, התוכנית שלך תעכב כל פלט עד שתקבל הודעת. דאז. או ממערכת ההפעלה. בדוגמאות הקודמות התקבלה הודעה כואת רק כשהחלון נחשף מחדש לאחר שהיה מוסתר, או כאשר שוחור ממצב מוקטן לגודל רגיל. אולם, אס מעוכב כל הפלט עד לקבלת הודעת דוזאק + ואו מושג פלט/קלט אינטראקטיבי, חייבת להיות דרך פרק 3: עיבוד הודעות ‏ 71 כלשהי להודיע לחלונות שהיא צריכה לשלוח הודעת !71 ואו לחלון שלך בכל פעם. שיש צורך בהפקת פלט. כצפוי, תכונה זו גלומה בחלונות א9. וכך, בכל פעם שיש לתוכנית שלך מידע שהיא רוצה להוציא כפלט, היא רק מבקשת ממערכת ההפעלה. לשלוח לה הודעת זא1הק או כאשר תהיה פנויה לעשות ואת. כדי לגרום למערכת. ההפעלה לשלוח הודעת דא1ק א/ ,4‏ תפעיל התוכנית שלך פונקציית 1קא בשם (6316804/הח1. הגדרתה מובאת כאן (ספגפפם 8008 ,מסשתק1* צסמת פפאסם ,במשות סומוא) 608ת110850פטת1 מססם כאן, הפרמטר שחאח הוא הידית לחלון שאליו אתה רוצה לשלוח את הודעת דאז. א. הפרמטר 661חפ! מצביע על המבנה ז856, המכיל את קואורדינטות שטח החלון, אשר יש לציורו מחדש. ערך 01 בפרמטר זה מציין את החלון כולו. אם הפרמטר 081956 מכיל ערך סטז, יימחק הרקע של החלון. אס הוא מכיל ערך אפס, לא יחול שום שינוי ברקע. פונקציה זו מחזירה ערך לא-אפס אס סיימה בהצלחה, וערך. אפס אם לא סיימה בהצלחה (בדרך כלל הפונקציה מסייימת בהצלחה). כאשר הפונקציה ()66חטו₪ווגאח1 מופעלת, היא מודיעה לחלונות שהחלון אינו תקף עוד ויש לציירו מחדש. דבר זה, גורס למערכת ההפעלה לשלוח הודעת דאזאק אא לפונקציית החלון של התוכנית. לפניך גירסה חדשה של שלד היישום הקודם, המבצעת כל פלט על ידי הפקת הודעת. זז א.. יתר הקוד לתגובה על הודעות מכין את המידע המיועד להצגה, ולאחר מכן מפעיל ‏ את הפונקציה ()9060ז1₪0168. = התוכנית | נמצאת בתיקיה ק עש 03 <ה. 6008ת01> 4301086 "ה 2386 ופ" 41001086 <ה.95016> 43001086 188 )132( מטתע 32אצאן 18 6ת48651 8 מפנתת 2במצא 15 6ה001+ ה 35686 מהמצצטם // ;6פחדת מסונתתפ) ;"צוצתקואו" = שהפהסקתפפק1 ת57פסק1 ;"תס אא" | = 15291616 8ע5פסק1 ₪ (סאמ1 *55תנספאה פפאסם) 95ת8015%0201ה מססם /* 809188 מטקסטס 188ס */ ;"" = [80] 562 צמתם /* מ1008010 ה66ע0ם */ ,1 = ץ ,1 = א שתג מסוותפפאות3 ,ססהבםפתנת מסותפפתצה) תובעתגאז צהפונמדעת 48 (סתפמהסה 186 ,שת1ם4תס1 10578 ,06ה68פתנטםעקת 2 קקח ומבוא ל-ספו פרק 3: עיבוד הודעות ‏ 73 16 *88ה1ספאון עפממסס) 95ת601866901 מססם [ סא 558% נססוה? = 0 ;00עקבתאמ:ם1<-0אמ1 = ססעקנתאהזק1 אססט 10-00 = 01 ,מס = 0 סה 0 = 1 1 = סו 10-00 = 100 אס ;סע ףס מעמה<-6אמ1 = = בתטסשףַאס8מצעם אססט 6םןוטה26פם1<-6אמ1 = סתבאמהם2פק1 אססט ,82018580806מ1<-6אש1 = 52012580206ק1 אססט (55ה:סון) 512005 = 1 ; ("ממתאם" ,6סה58פ1 אםסא)ת1080100 = 1 סו ; (6089) א86018665018598 פנש ,הבעגקא אתתתפה ,ספמו עוצט ,במאת כומוט ) 00פפבחח אסהמננתס ענטפמתנ (מ858פ1 ונתהתקן [ 6 ספ ד טהעפעוותק 8 1 ו /* בא0עםע%0 00088צק */ נתתאס ו) 56ב /* צתע0ש 1856 עמקקט ת1 פעמהם 818018 */ 12 = ץ = א (מפצפסא (צפה) ,"ש%" ,51)858ת1צקב /* שםשסבתגהם 128פהעםב */ /* 20266 שתם 6מ1בם */ ;(1 ,תנש ,מאמ) 1102558605בטחד פע /* 2686 מת1צמס: 8 655ס0עם */ :פאדתק וז ספמ /* 06 66 */ ;(ססטעםםה1ק8 ,המאה):ת1גקה601ם = סשת /*אַת1צם5 ממקפטס */ ;((ע58)מ16עם8 ,עטפ ,צ ,א ,סשמ)ממ0) אס /* סם 610886ע */ ;(טסטעםםטת1בקם ,במחה) מת1 קשח פע /* ה0פ%טם 21608 8פבססעם */ :אאסםונסלצטמה (ק) 856 ;(*.מ408 15 תסססטם גהנה" ,ע%פ) עצוב /* מההעעטם 60 צ,% 868 */ ;(מצגפ1)סהסא0ן = א 4 התלח ומבוא ל-ספו /* 1003010 הפטסת */ ;(ממגפ1) פהסאנע = צ ;(1 ,טא ,4מאמ) 508ה60ב10נהטחד /* 502668 שמץ מת1מק */ 6 /* הסטטטכ 1658 8פסססעם */ :אאססאספדטםן וו 6פמם ;(".מא40 18 מספסטט 2658" ,:86) עסספספ /* ממסעצטם 60 צ,% 568 */ ;(ממעגפ1)פהסא0ן = א /* 1002610 בפטסח */ ;(מעגק1)פהסאנע = צ ;(1 ,מפטא ,4מאמ) 808ה50ב110הטחד /* ה66ע0ם שת: מת1מק */ וצ 00 9 856 |( פא) סוס ) 160 צפפס 188 0886 6 צנאם 188 886 ( 0 ופ שפצ + צסמצפפם 006 856 (0 0 0 0 ;((108288 ,מ98בפא ,הפא ,תאמ) ססעסא40ה601פ) מעטסם, 1 01 ג שים לב שהתוספו לתוכנית שני משתנים גלובליים חדשים, ‏ ו-+, המחזיקים את המיקום שבו יוצג הטקסט כאשר תתקבל הודעת דאזק ואוו כפו שאתה רואה, על ידי ניתוב כל הפלט דרך דא1 או, למעשה צמצמנו את גודלל התוכנית, ובמובנים מסוימים פישטנו אותה. כפי שכבר הזכרנו, התוכנית גם מאפשרת. באמצעות נוהל זה לחלונות אל להחליט על המועד המתאיס ביותר לעדכון החלון. 6% הערה: = יישומי חלונות רבים מנתבים את כל (או רוב) הפלט דרך זאזהק ואו, מהסיבות שפורטו לעיל. טכנית, אין שוס פסול בכך שהתוכניות הישנות מפיקות טקסט בעת שהן מגיבות על הודעה, גס אם גישה זו אינה הגישה הטובה ביותר לכל מצב. פרק 3: עיבוד הודעות | 75 2 הפקת הודעות של קוצב זמן ההודעה האחרונה שתידון כאן היא הודעת הפוא1ד וא/. באמצעות חלונות, תוכלל ליצור קוצב זמן (זפוחוז), שייצור פסיקות (פוקוזזפוחז) בתוכנית שלך במרווחי זמן קבועים מראש. בכל פעם שקוצב הזמן מופעל, הוא שולח הודעת תשווד ואו לפונקציית החלון שלך. השימוש בקוצב זמן הוא שיטה טובה 'ילעורר" את התוכנית בפרקי ומן קצובים. דבר זה שימושי במיוחד כשהתוכנית שלך רצה בתור משימת רקע. כדי להפעיל קוצב זמן, הפעל פונקציית 81 בשם ()9וחוו56, שהגדרתה היא שסמפתמווניי ,5תסתא מוצט (סצת )01 (סמנתפפ 1 הפרמטר שחאוח הוא הידית לחלון שמשתמש בקוצב הזמן. הפרמטר 15 מציון את הערך שיקשר עם קוצב הזמן הזה (מותר להפעיל בו-זמנית יותר מקוצב זמן אחד) הערך השמור ב-חִוּפָחפוי מציין את פרק הזמן באלפיות השנייה, כלומר, כמה ומן יעבור בין פסיקה לפסיקה. סחטחזק! הוא מצביע, המצביע על פונקציית קוצב הזמן שתופעל כל פעם שקוצב הזמן '"מצלצליי. פונקציה זו חייבת להיות פונקציית משוב 03/0360 המחזירה ערך 6811880% פז0, ומקבלת אותו סוג של פרמטרים כמו פונקציית החלון. אך, אס הערך של 6חטחזפו הוא +וטא, כפי שקורה פעמים רבות, תשמש לצורך זה פונקציית החלון של התוכנית. במקרה זה, כל פעם שקוצב הזמן "ייצלצליי, תישלח הודעת 1168 וא לתור ההודעות של התוכנית שלך, ופונקצייתת החלון של התוכנית תעבד אותה כמו כל הודעה אחרת. זוהי הגישה שננקוט בדוגמה הבאה. הפונקציה מחצירה סז אם סיימה בהצלחה. אם לא ניתן להקצות קוצב זמן, מוחור ערך אפס. לאחר שכיוונת קוצב ומן, הוא ימשיך להפסיק את התוכנית שלך בפרקי הזמן הקצובים עד שתסיים את היישום, או שהתוכנית שלך תקרא לפונקציה ()זפוחודוווא, שהגדרתה היא ;ופצת שאצט ,סמות סאאט) 811191865 מססם הפרמטר 6חוח הוא החלון המכיל את קוצב הזמן, ואילו פ1ח הוא הערך המוהה את קוצב הומן המסוים הזה. כל פעם שמופקת הודעת הפויו1ד וא/ו נשמר בפרמטר וחפזפקאי ערך 10 של קוצב הצמן, ואילו חחפזגקו מכיל את המען של פונקציית המשוב של קוצב הזמן (אם הוגדרה פונקציה כזאת). בדוגמה הבאה, יכיל הפרמטר וחגזּק! את הערך טא כדי להדגים את השימוש בקוצב ומן, משתמשת התוכנית. זסוחוד אא שלפניך (בתיקיה 3קַת6) בקוצב זמן ליצירת שעון. לשם כך היא משתמשת בפונקציות השעה. והתאריך התקניות של ++6/6, כדי לקלוט ולהציג את ומן המערכת ותאריך המערכת. הנוכחיים. כל פעם שקוצב הזמן י"מצלצליי, במקרה זה בערך פעם בשנייה, מתעדכנת. השעה. באופן זה, השעה המוצגת על המסך מדויקת בגבולות של שניייה אחת. 6 לבח ומבוא ל-ספו פרק 3: עיבוד הודעות ‏ 77 8 זלת2בחואו ומבוא ל-ספו פרק 3: עיבוד הודעות ‏ 79 + פמק 0 486 (0 0 וצ 0 ;((108538 ,מבצבפא ,הפ ,מאמ) ססעסא40ה601פ) מצטסם, 1 0 לאחר שלמדת כיצד תוכנית של חלונות 5% מעבדת הודעות, תוכל להמשיך וליצור תיבות הודעה ותפריטים, נושאים שיידונו בפרק 4. 0 לבחו ומבוא ל-ספו פרק 4 תיבות הודעה ותפריטים עכשיו, כשאתה כבר יודע כיצד לבנות שלד בסיסי לתוכנית חלונות שתדע לקבל ולעבד. הודעות, הגיע הזמן להתחיל בבדיקת המרכיבים של ממשק המשתמש של חלונות. אם. אתה לומד תכנות חלונאי לראשונה, חשוב שתבין שהיישומים שלך יתקשרו עם המשתמש בדרך כלל באמצעות אחד, או יותר ממרכיבי הממשק המוגדרים מראש. חלונות א9 תומכת בכמה סוגים של מרכיבי ממשק. פרק וה דן בשניים מהם: תיבות הודעה ותפריטים. אלה הם מרכיבי הממשק הבסיסיים ביותר של חלונות, שיופועו כמעט בכל תוכנית שתכתוב. כפי שיתברר לך, הסגנון הבסיסי של תיבת ההודעה ושל התפריט מוגדר מראש. מה שנותר לך לעשות הוא לספק את המידע המתייחס ליישום. שלך. בפרק זה תכיר את המושג משאב (65ז8690), מרכיב חיוני ברוב יישומי חלונות. 1 הפונקציה א165530680] החלון הפשוט ביותר בממשק הוא תיבת ההודעה. תיבת הודעה (80% %09936) מציגה. הודעה למשתמש, ודורשת תגובה מהמשתמש לפני שהתוכנית תוכל להמשיך בפעולתה. בסעיפים שנראה בהמשך נלמד ליצור תיבות דו-שיח מסוגים שונים. עם זאת, עבור תיבות דו-שיח פשוטות המקבלות קלט מהמשתמש, התוכניות. יכולות להשתמש. בפונקציה אס68מַ695א. פונקציה זו יוצרת, מציגה ומפעילה תיבת הודעה 80% 699306/א). תיבת הודעה מכילה הודעה וכותרת שמוגדרים על ידי היישום, בנוסף. לצירופים מובנים של סמלים ולחצנים. תיבת ההודעה אינה יכולה להציג חלונותת בעצמה. התוכניות שתכתוב תשתמשנה בצורה הכללית של הפונקציה 169580680 כדר להציג תיבות הודעה, כפי שתראה להלן. 4 10% שסחאם 05 16אמממ // וו סוחו אס 95806סח 1 %אםף 01 860285 //‏ ,מאשלק 1‏ הדמצה אמ // 069986 08 61816 05 8602685 // ,108ממהסקג ‏ הצפצס. אס 0658896 06 מ1עטם // >קעפטו צאדט / הפרמטרים שהפונקציה 165538 מקבלת מוסברים ברשימה שבטבלה 4.1> פרק 4: תיבות הודעה ותפריטים ‏ 81 נוסף לטקסט שתיבת ההודעה מציגה (כפי שנקבע על ידי הפרמטר ואפזקן) והכותרת. עבור תיבת ההודעה (שנקבעת על ידי הפרמטר חסוו30סטו), התוכניות תשתמשנה פעמים. רבות בפרמטר 6קעָזט כדי לשנות את הלחצנים והסמלים שרוצים להציג בתיבת ההודעה. טבלה 4.2 מפרטת את הערכים האפשריים שמקבל הפרמטר פפְעד לשליטה במספר הלחצנים וסוגיהס שמוצגים בתיבת ההודעה. בטבלה 4.1: הפרמטרים שהפונקציה 8105989680 מקבלת. דגל תיאור שחעצת | מוהה את החלון לו תהיה שייכת תיבת ההודעה שרוצים ליצור. אם. פרמטר זה הוא-11א', פירוש הדבר שאיין לתיבת ההודעה חלון לו היא שייכת. אפדק! | מצביע על מחרוות המסתיימת ב-11ט)! שמכילה את ההודעה שתיבת ההודעה צריכה להציגג חס%ק3ספן | מצביע על מחרוזת המסתיימת ב-011! שמשמשת את כותרת תיבת 6 ההודעה. אם פרמטר זה הוא -011ו!, התוכנית משתמשת בכותרת. ברירת המחדל שגיאה (זסזז). מגדיר קבוצה של דגלי סיביות 5 8%) הקובעים את תכולתה. והתנהגותה של תיבת ההודעה. פרמטר זה יכול להיות שילוב של. דגלים מקבוצת הדגלים. טבלה 4.2 מציגה את רשימת הדגלים. שהתוכנית יכולה להשתמש בהם, כדי לציין את הלחצנים המוכלום. בתיבת ההודעה. בטבלה 4.2: הערכים האפשריים שמקבל הפרמטר ץד לשליטה במספר הלחצנים. דגל פירוש 1 הדפ הדהס8, מו | תיבת ההודעה מכילה שלושה לחצנים : בטל (זס4), 2 נסה שנית (860), והתעלם (ִזְטְמָ1. 06 8 | תיבת ההודעה מכילה לחצן אחד: אישור 060). הדגל. 0 %8! הוא ברירת המחדל של הפרמטר קדו מסו0אס .פוא | תיבת ההודעה מכילה שני לחצנים: אישור (0%) וביטול (/63066). 6אא6+אדםה .18 | תיבת ההודעה מכילה שני לחצנים : נסה שנית (960) ו וביטול (/9069) 550 18 | תיבת ההודעה מכילה שני לחצנים : כן (65?), ולא (ס). 5500 .ו | תיבת ההודעה מכילה שלושה לחצנים : כן (65), ולא. (סא) וביטול (/6366). לבחו ומבוא ל-ספו בנוסף לשליטה בכותרת ובמספר הלחצנים שמוצגים עס תיבת ההודעה, באפשרות. התוכנית גם לקבוע אם יוצג סמל עם תיבת ההודעה, או לא. ברירת המחדל היא אססנסוו 8 (כלומר, לא). טבלה 4.3 מציגה רשימה של הערכים האפשריים שמקבל הפרמטר פע לשליטה בהופעת הסמל עס תיבת ההודעה. בטבלה 4.3: הערכים האפשריים שמקבל הפרמטר קד לשליטה בסמל תיבת ההודעה. דגל סד 1600 הו 16 ור 160 הור 8 160 160 פוא 16050 הו 160 ו 160 הו אסא 8 פירוש מציג בתיבת ההודעה סמל סימן קריאה. מציג בתיבת ההודעה סמל סימן קריאה. מציג בתיבת ההודעה סמל שמורכב מהאות | בתוך מעגל. מציג בתיבת ההודעה סמל שמורכב מהאות | בתוך מעגל. מציג בתיבת ההודעה סמל סימן שאלה. מציג בתיבת ההודעה סמל עצור. מציג בתיבת ההודעה סמל עצור. מציג בתיבת ההודעה סמל עצור. לא מוצג סמל כלשהו בתיבת ההודעה. הפונקציה 165530680! תומכת במספר רב של קבועים נוספים עבור הפרמטר עדנ אך הקבועים שנמצאים בטבלה 4.2 ובטבלה 4.3 הס השימושיים ביותר. כדי לראות את. רשימת כל הקבועים בדוק את העורה המקוונת של המהדר. הפונקציה ()סססָפפטו מחזירה את תגובת המשתמש לתיבה. הערכים החוזרים האפשריים הם. טבלה 4.4 הלחצן שנבחר * | הערך החוזר חן בי ה אפ 1 1 יי 1 0 סופ 2 יי ₪2 ג פרק 4: תיבות הודעה ותפריטים | 83 כדי להציג תיבת הודעה, הפעל את הפונקציה ()1655306804!. חלונות תציג את תיבת. ההודעה בהודמנות הראשונה שתוכל. אינך צריך להשיג הקשר התקן, או להפיק הודעת דא1 0%ו. הפונקציה ()א9530680 מטפלת בכל הפרטים האלה במקומך (כיון שכה פשוט להשתמש בתיבות הודעה, הן משמשות כלי נפלא לניפוי תוכנה, כאשר דרוש לך אמצעי פשוט להוציא פלט אל המסך). התקליטור שמצורף לספר וה מכיל את התוכנית 4655 אוסח5 (בתיקיה 68004 התוכנית 1655 שוסח5 אאומרת ייוסווש/י למשתמש וממתינה לקשה על מקש כלשהו. 2 הפונקציה 1655306866] בסעיף הקודם למדת להשתמש בפונקציה א69930680 כדי ליצור תיבת דו-שיח פשוטה. התוכנית 4655 שוס5 קוראת לפונקציה 699368969 כשהיא צריכה לוצורר תיבת ההודעה. הפונקציה 1695306869 משמיעה נגינה בפורמט 1//46 (0חזס/36/. פריט בקטע (6ח50] של מערכת הרישום מגדירה את תבנית פורמט גל הקול (6חט50 וחזס!סופ/ו) עבור כל סוג של קול. התוכנית תשתמש בפונקציה פפס8ססַפפטו לפי ההגדרה שלהלן. (פמעגר עעוצט) 558008600טו מססם הפרמטר סקץדט מגדיר את סוג הקול, כמו שמזוחה על ידי הכניסה בחלק [6חט0פ] של. רישום המערכת. פרמטר הקול עדו יכול לקבל את אחד הערכים שבטבלה 4.5. בטבלה 4.5: ערכים אפשריים של פרמטר הקול סע דט. ערך קול אפקקתקאטא | צליל סטנדרטי המושמע על ידי רמקול המחשב. א15הפד100₪5 18 | 97851005%ז55 (כוכבית). דהואה 100101 פוא | 5/5909 (סיימן קריאה). וו 100 ו | 6מ 5/9 (יד). אסנדפ 10000 פוא | 5519706500 (שאלה. אס 8וא | %/0630וחט5/51 (ברירת מחדל). התוכניות צריכות להשתמש בפונקציה מ66פטָפפטו כדי להשמיע קול פשוט, שמשתמשים בו בדרך כלל להתריע למשתמש על מאורע כלשהר 4 לבח ומבוא ל-ספו לפניך דוגמה פשוטה המציגה תיבת הודעה בכל פעם שאתה לוח על אחד מלחצני העכבר (הבאנו פה רק את לולאת ההודעות של התוכנית 165589680%. התוכנית. בשלמותה נמצאת בתיקיה: אספסמַ08046553) מש8ק אהתתקחו ,הפר קוודט ,מא סמו ) ססצפבחו אסהמנמהס צמטפמה1 ( מ8טת1 |עתהתק ב שה ( חפ )1 [ :0 0 856 ( ב 100 )156 |[ + לפמץ 108 856 ( 1 ו | 9090 ב" ,מ | 4580 | 46 וס תעתנם0אפאסס1 מע | סאפמצ מו טא (פפצסד ..68פ8סצם פבא פמ // 1 סע טספ 18% 856 ,מ ,"אסמפטסמה" ,6פהזת )50%ף10ג1ם ףוסה (ססתקסונם) 8 + צנאם 188 886 ( 8 פס סע 1 וצ /* מספמטם 5מח1ע פפסססעם */ :אאססאסעדטמה ותו 856 ו ,"מסספטם מגה" ,":פה0 פםצק" (פהסון0 תצמהצהסמת מו 0 פרק 4: תיבות הודעה ותפריטים | 85 6 לבחו ומבוא ל-ספו בכל פעם שאתה לוחץ על לחצן, מופיעה על המסך תיבת הודעה. למשל, לחיצה על הלחצן הימני של העכבר תגרום להצגת תיבת הודעה על המסך, לדוגמה. ב ₪ בעשע .-וכ11שטי ו טמא 00ב | :ב ||אןבן-1 1 פע | סאבע שו ₪ פשסעם פמט בע 0 סט 4) - -ן ו 0 הו = )טל 36% ססספק = 80000 סשפם. , 'מ0 גפ 588%" "080 בפסשם" -005[) 10-0530208 = מבמספבט תלדמ דפתדפסם בור תרשים 4.1 כפי שאתה רואה, בתיבת ההודעה מופיעים הלחצנים אאסטג, זה ו-06ח19. בהתאם לתגובה שלך, תוצג תיבת הודעה שנייה, שבה יצוין על איוה לחצן לחצת. לחיצה עלל הלחצן השמאלי של העכבר תגרום להופעת תיבת הודעה ובה סמל יעצור". תיבה זר מאפשרת לך להגיב ב-65 אל פא לפני שתמשיך, ערוך ניסיונות עם תיבות הודעה, נסה לגרום להצגת סוגים שונים של תיבות הודעה על המסך שלך.. 3 היכרות עם תפריטים אמצעי השליטה הנפו ביותר בחלונות הוא התפריט. כמעט כל החלונות הראשיים מלווים בתפריט מסוג כלשהו. תפריטים הם פריט שכיח וחשוב ביושומים, ולכן יש. במערכת ההפעלה תמיכה מובנית ומקיפה באמצעי זה. כפי שתראה, הוספת תפריט. לחלון נתון כרוכה בשלבים הבאים. 1. הגדרת התצורה של התפריט בקובץ משאבים. 2. טעינת התפריט כל פעם שהתוכנית שלך יוצרת את החלון הראשי שלה. 3. עיבוד הוראות הנובעות מבחירת אחד הפריטים מתוך התפריט. ככלל, תפריט הרמה העליונה מוצג לאורך חלקו העליון של החלון. תפריטי-משנה יופיעו בתצורה נשלפת (ְטֶס). כל שנאמר כאן אינו חדש עבורך, כי כך נוהגים ברוב התוכניות. לפני שנמשיך, חשוב להבין מהס משאבים וקבצי משאבים. פרק 4: תיבות הודעה ותפריטים | 87 4 כיצד להשתמש במשאבים מערכת ההפעלה חלונות מגדירה מספר סוגים נפוצים של עצמים כמשאבים (095זט8050). בעיקרון, משאבים הס עצמים המשמשים את התוכנית שלך, אך הוגדרר מחוצה לה. בין אלה ניתן למנות פריטים כגון תפריטים, סמלים, תיבות דו-שיח וגרפיקת מפת-סיביות. הואיל ותפריט נחשב למשאב, עליך להבין מהס משאבים בטרם. תוכל להוסיף תפריט לתוכניתך. משאב הוא עצם הנוצר בנפרד מהתוכנית שלך, אך מתוסף לקובץ ₪%6 כאשר התוכנית. שלך מקושרת. משאבים נשמרים בתוך קבצי משאבים ₪69 8950008), שהם קבצים. בעלי סיומת 86. ככלל, שם הקובץ אמור להיות זהה לשם קובץ ההפעלה של התוכנית. לדוגמה, אם התוכנית שלך נקראת 06.5%5א2, קובץ המשאבים שלה צריך להיקרא ב חלק מהמשאבים הם קבצי טקסט שאתה יוצר בעורת עורך הטקסט הרגיל. משאבי טקסט מוגדרים בדרך כלל בתוך קובץ המשאבים. משאבים מסוגים אחרים, כגון סמלים, קל יותר להפיק בעזרת עורך משאבים 50001 8650₪65), אבל יחד עם זאת, חובה לאזכר אותס בקוב המשאבים הקשור ביישום שלך. קבצי המשאבים המובאים. לדוגמה בפרק זה הס קבצי טקסט רגילים, כיון שתפריטים הס משאבים המבוססים. על טקסט. קבצי משאבים אינם כתובים ב- ₪ או ב- ++6, אלא בשפת משאבים מיוחדת, או שפת תסריט 0ק601), ויש להדרם באמצעות מהדר משאבים (ז16קוח0ס 690/65ה). מהדר המשאבים הופך קבצי 86 לקבצי 885 אותם ניתן לקשר (06:) עם התוכניות שלך כיצד להדר קבצי ₪0 תוכניות אינן משתמשות במישרין בקבצי משאבים. כדי שיוכלו לשמש את התוכניות, יש להמיר את קבצי המשאבים למתכונת ניתנת לקישור. לאחר שיצרת קוב 86, עליך. להדר אותו ולהופכו לקובץ 855 בעורת מהדר המשאבים (המכונה לרוב 86.5%5, אבל. אין זו חובה). כיצד בדיוק תהדר את קובץ המשאבים! דבר וה תלוי במהדר שלך. ואת ועוד, בחלק מסביבות הפיתוח המשולבות, שלב זה מתבצע באופן אוטומטי על ידי המערכת. בכל מקרה, הפלט של מהדר המשאבים יהיה קובץ בעל סיומת 885, ווהו הקוב שאותו תוכל לקשר עם התוכנית כדי לסיים את בניית היישוכ לחלונות אפ. % הערה: רצוי לעיין במדריך למשתמש הנלווה למהדר שלך. שס תמצא הוראות כיצד לכלול קבצי משאבים בתוכניות. 8 לבח ומבוא ל-ספו 5 סוגי תפריטים (65קץד טחסו/) שורת התפריט היא למעשה מכולה (ושחוגזחטס) למשאבי תפריט. ככלל, מרכזים את התפריטים בקבוצות שמספקות למשתמש מספר אפשרויות. תוכניות פאאסחז/ו משתמשות בשני סוגים עיקריים של תפריטים: תפריטים עליונים (פטחס! /16%6-קס1), שמוצגים תמיד, ותפריטים נשלפים או מוקפצים (פטח6! ק-פסק) שמוצגים בעת הצורך בלבד. התפריט העליון שנראה תמיד (נקרא גם התפריט "יהראשייי של התוכנית) הוא למעשה קבוצת פקודות שנראות בחלון שורת התפריט כל. הזמן, בהנחה שהתוכנית משתמשת בתפריט. עבור תוכניות מורכבות יותר, ייתכן שלא: יהיה אפשרי או מעשי, להכניס את כל פריטי התפריט לשורה אחת. במקרים אלה התוכניות יכולה להשתמש בתפריטי משנה (פחפוו-500) שמוצגים רק כאשר פונים: לפריט האב שלהם, או שמוצגים תפריטים נפתחים, או נשלפים למטה (פטחס!/ חאוסם-!ול), אד תפריטים הנזרקים למטה (פטחט% חצוסם-קסזם). כשבוחרים. אפשרות מתפריט ראשי כתוצאה מכך נפרש תפריט משנה ש-005חו// מרחיבה באופן אוטומטי, תרשים 4.2 מציג תפריט ראשי פשוט ותפריט משנה. תרשים 4.2: תפריט ראשי פשוט ותפריט משנה. הערה: אל לך לטעות ולהתבלבל, ולחשוב על תפריטים נשלפים (פחפ!! פ000-0) בהקשר של תפריטים תלויי הקשר (פחו 01-5050006 ה0ס) של 1 05 שספרים רבים מתייחסים אליהם כתפריטים נשלפים. תפריט תלוי הקשר הוא סוגג מיוחד של תפריט, אשר נלמד עליו בהמשך. 6 מבנה התפריט וס חוו בונה את תפריט התוכנית בצורה מדורגת, היררכית. התפריט מורכב מפריט. תפריט אחד או יותר, מאפשרות בחירה (חסוקס) אחת או יותר בכל פריט תפריט. ראשי; ומבחירה אחת או יותר בכל אפשרות (והו תפריט-משנה עם אפשרויות משנה, 5חסטקס-59). לדוגמה, תרשים 4.3 מציג מבנה פשוט של עץ תפריטים עבור תוכניתת כלשהי. שים לב למבנה ההיררכי: בתפריטים הראשיים יש מספר משתנה של אפשרויות, ובחלק מהן אפשרויות בחירה נוספות (תפריטי משנה) פרק 4: תיבות הודעה ותפריטים | 89 וס הי 1 0 7 ו ופ 1 ו 0 ד ה 7 הו וו תרשים 4.3: המבנה ההיררכי של תפריטים. חשוב לשים לב שבמבנה תפריט טוב, יש דרך אחת בלבד כדי להגיע לאפשרות מסוימת, או לבחירה מתוך אפשרויות התפריט. השמירה הקפדנית על צורתו ההיררכית של התפריט מגינה על המשתמש מבלבול בבחירה מתוך אפשרויות משנה 509-0000089 בתפריטים רבים. כאשר משתמשים במבנה תפריט המעוצב בקפדנות בצורה היררכית, המבנה שלו בתוכנית צריך להיראות כמו בסכימה של תרשים 4.2 ובתרשים 4.3. סד 6/0 18ס/ ספסוסו ה ו ו 0 תרשים 6.4: התפריט שנראה בתוכנית. 7 יצירת תפריט בקובץ המשאבים ברוב המקרים יוצרים את תפריטי התוכנית בקובץ משאבים. רוב סביבות הפיתוח של ++6 עבור פאוסשחוו מאפשרות ליצור תפריטים על ידי שימוש בטכניקות פשוטות של גרירה ושחרור. עם ואת, חשוב להבין איך התוכניות יוצרות תפריטים במקרה שבו חייבים ליצור תפריט באופן עצמאי. להלן קטע מן התוכנית טח (הנמצאת בשלמותה בתקליטור 608004) המציג דוגמה לבניית תפריט בקובץ המשאבים. ם טופ פפתצע אזסטם " פטפספ אזסטם צאט עפד ,"1%אשם" ממצצטופות וג 0 לבחו ומבוא ל-ספו פפמל 10% ,"ו9656ש" שטפסק אזסמם ממפצז ‏ %פ: ,"81 מסמ1" ממפצטו כפלז 15% ,"82 1:68" ממפנטופע 1" מפפצטו מצד מםז ,"83 מש וג "68610" פטפס -- שטספת 10% ,"...11086108קקת /8 סטסמה6" מפענטוות מגט סוט במספר סעיפים שיבואו בהמשך תבחן בפירוט את ההגדרות שתשתמש בהם להנדרת. תפריט בקובץ המשאבים; גס תבחן כיצד להשתמש בהגדרות אלו בתוכנית. בסעיף 4.8 שבהמשך תראה איך משתמשים בקובץ המשאבים במתארים (5ז06501010, או מילות. מפתח) 2070 ו-ואפדנטאפוי. חשוב לשים לב לכך שהמתאר 0150808866 שראית. בדוגמה הקודמת אומר למקשר של המהדר (ז8א1/0 %ז6ווחטס) שיש צורך למחוק את. מידע המשאבים המקורי אודות התפריט, לאחר שהתוכנית רושמת את התפריט במחלקת החלון. כמעט תמיד נשתמש במתאר 0150380815 עם הגדרות התפריט, כדי לשמור על שטחי הזיכרון ולשפר את מהירות עיבוד התוכניות. 8 המתארים 00 ו-ואם דנטאטוא בסעיף קודם ראית שהחלק המתאר את התפריט בקובץ המשאבים מתחיל בהוראה 85618 ומסתיים בהוראה סא5. תיאור תפריט יכול להכיל כל מספר של פריטים מסוג' קטקסק או מסוג אפחוטאטוו. עם ואת, צריך להיוהר מליצור יותר מדי תפריטים ראשיים, כי ייתכן שלא יהיה לכולם מקום בשורת התפריט, גם כשהחלון בגודלו הרגיל. בחלק של תיאור התפריט, המתאר קטקס מציין את החלק הראשי, העלוון, של התפריט. לדוגמה, בסעיף הקודם ראית שהפריט 16% נמצא בתפריט הראשי של התוכנית. השימוש בתו (4) בתוך המחרוות מציין שהמשתמש יכול להשתמש במקשי מהיר (ץ65 ז3609/6300) בצירוף א ולא בעכבר, כדי להפעיל את הפריט שנבחר בתפריט. פעמים רבות מתייחסים המתכנתים למקש המהיר כמקש קיצור של המקלדת 50100 6/00310א). במקרה של הפריט 5%ד, המקש המהיר הוא +. קוב המשאבים משתמש במתאר אפזוטא8!! כדי להגדיר כל פריט בתוך התפריט. לדוגמה, בתפריט המתאר את !1690 בסעיף 4.7 יש שלושה פריטי תפריט: פריט 81, פריט 92 ופריט 3, שים לב שבכל פריט יש התייחסות לקבוע, ועבור פריט %1 הקבוע שמתייחסים אליו הוא 1ו₪ד1 %פ1. בעורת הפונקציה 06וק6ח/ התוכנית תלכודד תחילה את ההודעות מסוג סאאואוא60 אצ. לאחר מכן, מילת הסדר-הנמוך של הערך. חובּזפקי שהפונקציה 06זל0חו מקבלת, מכילה את הקבוע המזהה את פריט התפריט. שנבחר על ידי המשתמש. לדוגמה, כדי לבחור באפשרות 1ואפד1 %פ1, התוכניתת פרק 4: תיבות הודעה ותפריטים ‏ 91 תשתמש בשתי הוראות 0/ו5. ההוראה הראשונה היא לאימות סוג ההודעה כ-סואויוזוס6 .61% ההוראה השנייה בודקת את הערך של וחזגלאו כדי לאמת את הפריט התפריט שנבחר על ידי המשתמש היה פריט 41 לפניך הקוד המתאים. ( וט . + סוס 0 856 ( (ט 0 )160 [ 1 1 56 0+ חספ // עפצ 1% 856 0+ עסמ // 9 הוספת תפריט לחלון היישום הגדרת תפריט בקובץ המשאבים (%0) אינה מספיקה להפעלת התפריט, או להצמדת התפריט לחלון היישום. בדרך כלל מצמידים תפריט היישוס להגדרת מחלקת החלון. שבפונקציה חומ!אחועו לפני שקוראים לפונקציה 86060855 כמו שראית בסעיפים. קודמים. וכור שקבעת בתחילה ערך לשדה 6וחגו!טחס!פק| במבנים 355 ספאאו ו-556%/ סְא/, כדי לבצע קישור מוקדס. הפונקציה ₪6081970855 תשייך עכשיו את. שם התפריט לכל חלון שהתוכנית תיצור ממחלקה זו. באפשרותך גם להשתמש בפונקציות 07696060 ו-טח1030%/6 כדי להצמיד את התפריט לחלון. כשקוראים לפונקציות 00%%חו/616319%, באפשרותך לקבוע לפרמטר שחס!זח את הערך שהפונקצייה טח1080%6 מחזירה. אחר כך תקרא לפונקציה עח10301%6 עם שם התפריט מתוך קובץ המשאבים כפרמטר של הפונקציה, כמו שתראה להלן ( אמות 108 == (מב בק )48 ; ("טאפואופםז" ,%פה1) 08 = תפסא ("טםאס.0" ,תו 0 = שת לבסוף, באפשרותך להשתמש בפונקציות טח6א560 ו-שח103016 להצמדת תפריט לחלון. אחרי שתיצור את החלון. עליך לקרוא לפונקציה טח6/ו56 עם הידית טחשאח כפרמטר. טח560%6 מקשרת את התפריט שהידית טחשאח מצביעה עליו אל חלון היישום שפתוח. כרגע, כפו שמוצג להלן ( ו 0 2 לבח ומבוא ל-ספו 0 שינוי תפריטים בתוך היישום בסעיפים קודמים למדת להשתמש בשיטות שונות כדי להצמיד תפריטים ליישום. אך מעבר לעניין תכנון תוכניות 6ס0חו)ו, אתה עשוי לפתח יישומים מורכבים יותר שנדרש בהם שינוי של התפריט כשהיישום מפעיל. ממשק התכנות 801 32ּחו// מספק. אוסף של פונקציות שאפשר להשתמש בהן בתוכניות, כדי לשנות תפריט בזמן פעולת. היישום. חלק מהפונקציות האלו נמצאות בנספח 1. ככלל, הפונקציות מאפשרות לשנות כל אלמנט תפריט לאחר שהצמדת את התפריט לחלון. 1 הודעות שנוצרות על ידי תפריטים בכל פעם שהמשתמש בוחר באחד מפריטי תפריט כלשהו, פאס0חו שולחת. את ההודעה. סאאויוווס6 ואו. אל לולאת ההודעות של התוכנית. בלולאת ההודעות. שבתוכנית צריך לבדוק את מילת הסדר-הנמוך של הערך וזזפסוי (וכור, הערך שמכיל. הפרמטר וחפזפלוו הוא מסוג סס/ופ), כדי לקבוע איוה פריט תפריט נבחר. ככלל, ההודעה סאאואואס6 4% היא היחידה ש-5אוס6חואו שולחת. לתוכניות כתוצאה מבחירת פריט בתפריט התוכנית. אס המשתמש בוחר פריט מתפריט המערכת, למשל, 005חו/ו תשלח במקום הודעה זו את ההודעה סאג/%8ז51500 זאו (שקרוב לוודאי תטפל בה על ידי הפונקציה ססזַו00חו6). ייתכן שהיישום שלך ידרוש מלולאת. ההודעות שתטפל בהודעות טאפואד1א1 אצ ו-קטקסקטאשואד1א1 וא//ו, אשר נשלחות על. ידי המערכת לחלון מייד לפני שהמערכת מפעילה את התפריט (תפריט ראשי או תפריט. נשלף, בהתאם להודעה). תפיסת ההודעות שאפואדזא1 וא ו-קטקסקטאפואדנא ואר מאפשרת ליישום לשנות תפריט או תפריטים, אם תצטרך לעשות זאת, מיוד לפני ש-0005חו/+ מציגה את תפריט היישום. התפריט ישלח את ההודעה ד86 188058 ו בכל פעם שהמשתמש בוחר בו פריט. כלשהו. הודעה זו מתוחכמת יותר מההודעה סאאויויו60 4וא,. מכיון ש-05ס6חואר יוצרת אותה אפילו אם פריט התפריט אינו פעיל (66ו8830). עס זאת, בדרך כלל משתמשים בהודעה ד56 188056 וזו רקי כדי להציג תפריט עורה תלוית-הקשר. הפעל את התוכנית חפ הנמצאת בתקליטור. 2 הוספת מקשים מהירים תכונה אחרונה שנדון בה לפני שנניח לנושא התפריטים, היא מקשים מהירים. מקש מהיר (/68 זסוגז0606) הוא מקש שאתה מגדיר, ואשר הקשה עליו גורמת לבחירה. אוטומטית באפשרות מסוימת מתפריט מסוים, אף על פי שאותו תפריט כלל אינו מוצג על המסך. במילים אחרות, תוכל לבחור פריט נתון במישרין, על ידי הקשה על מקש מהיר, ולעקוף לחלוטין את התפריט. המונח מקש מהיר מיטיב לתאר תכונה זו, מכיון פרק 4: תיבות הודעה ותפריטים | 93 שבדרך כלל משך הזמן הדרוש לבחירה בפריט מתפריט באמצעות מקש מהיר, קצר מוה הנדרש כשאתה קודם מפעיל את התפריט ואחר כך בוחר ממנו את הפריט הרצוי מקובל גס המונח מקש קיצור (66 זוסאזסח5), במקום מקש מהיר. בדי להגדיר מקשים מהירים עבור תפריט נתון, עליך להוסיף טבלת מקשים מהירים. לקובץ המשאבים של התפריט. המתכונת הכללית לכל הגדרות טבלאות המקשים המהירים היא; תמ :טסה 86 בעפסי [ [מס1טמס] [6קע5,] 1ש1טתשא ,1עסא [6פע>,] 2ס1טמא ,862 [6פע6,] 103טמ6א ,863 [6פע>,] מסנטה6א ,מעשא ו בדוגמה, 3/6 הוא השם של טבלת המקשים המהירים. הפרמטר 66 מכיל את. המקש הגורם לבחירת הפריט, ואילו פזטח6! הוא ערך 15 הקשור בפריט הרצוי הפרמטר ₪06 מציין אם המקש הוא מקש רגיל (ברירת המחדל), או מקש וירטואלי (נדון בנושא וה בהמשך). האפשרויות לבחירה הן אחת מפקודות המאקרו הבאות. זהפטאזסא, דוא, 51 ו--וסהדאס6. דהפטאזסא מונע הדגשה של פריט התפריט הנבחר בעת הלחיצה על המקש המהיר. 81 מציין את מקש אוא, 5111 מציין את מקש. %, ו- 607804 מציין את המקש |שס., הערך של הפרמטר /68 יהיה תו בתוך גרשיים, ערך מספרי המקביל להגדרת המקש כ-- ז0פא, או קוד למקש וירטואלי. אם תשתמש בתו נתון בגרשיים, המערכת תניח שמדובר בתו 85011. אס השתמשת בערך מספרי, עליך להודיע במפורש. למהדר המשאבים שוהו תו 5011, על ידי סימון 85011 עבור הפרמטר 98ש. אם זהו מקש וירטואלי, יש לכתוב צאדףזש במקום 6פף. אס המקש הוא אות רישית בתוך גרשיים, פריט התפריט המתאים ייבחר כאשר המשתמש יקיש על אותו מקש, בעת שמקש 508 לחוץ. אם זהו תו רגיל, הפריט. המתאים ייבחר בעקבות הקשה על אותו מקש בלבד. אס המקש הוגדר כתו רגיל, עם. אפשרות 6/ה, אצי לחיצה על זא והקשה על אותו מקש תגרום לבחירת הפריט המתאים. (אם המקש מיוצג על ידי אות רישית בצירוף 4, אזי יש ללחוץ על ₪/5 ו- 6 יחד עם: אותו מקש כדי לבחור את הפריט המתאים). אך אס ברצונך שהמשתמש ילחץ על מקש. וס ועל האות כדי לבחור בפריט מסוים, הוסף לפני שם המקש את התו * (למשל, א%). מקש וירטואלי (ע8א |גםוש) הוא קוד שאינו תלוי-מערכת. בין המקשים הווירטואליים נמנים מקשי הפונקציות 1? עד 512, מקשי החיצים, ומקשים נוספים. שאין להס הגדרה בטבלת 45011. מקשים אלה מוגדרים באמצעות פקודות מאקרו 4 לבחו ומבוא ל-ספו בקובץ הכותר .סאוו (או באחד מנגורותיו). כל פקודות המאקרו למקשים וירטואליים מתחילות ב- =6/. לדוגמה, פקודות המאקרו למקשי הפונקציות הם 1 אש עד ₪12 -א/. עליך לעיון בקובץ ח.פווסטחואו כדי לברר מהם קודי המאקרו עבור שאר המקשים הווירטואליים. כדי להפוך מקש וירטואלי למקש מחיר, עליך לציין בפרמטר /%6 את המאקרו המגדיר אותו, ובפרמטר פע הקלד זפאד1. כמובן שתוכל. לציין גם דא, 5/1 או 60180 כדי להגדיר את צירוף המקשים הרצוי. להלן מספר דוגמאות. -8011% שַה1פפסעם ע 801608 ; א מש1 ,"ה" 4 698106:ק עם 861606 : א מ / א-06+1 הַה6851פק עמ 861608 ; א 108 ,"ת" ג-316 685389טם עט 561668 ; ענה ,א מש1 ,"ג" 2 אַה1פפסצק עמ 561608 ; א ממד ,2ע אתה 8015682 אַה881שצק עמ 861608 ; שפזאם ,א מז ,2ע אע לפניך חלק מקובץ המשאבים 40606 בתוספת הגדרות למקשים מהירים עבור התפריט שפיתחנו בסעיף הקודם : מתטפ ממתפטסע 5הסצהתתם נמססה טאנפועצ פס שאה אפ 2 צפפעווצ סו , למאצתנעי וטספ פב ,בע אט שתפטאנסא ‏ ,11ספת ,שפד פד מ שתפטאנסא ‏ ,11ספת כשפעד אפ 3 1סתצאסס ( צמאפתנט ,193 פד 4 א תפו סו סט שים לב שהגדרת התפריט הורחבה, כך שיוצגו בה הקישורים בין מקשים מהירים לבין האפשרויות בתפריט. כל פריט מופרד מהמקש המהיר שלו בטאב. קוב הכותר .5סחוו נכלל כאן, מכיון שהוא מגדיר את פקודות המאקרו של המקשים הווירטואליים. 3 כיצד לטעון את טבלת המקשים המהירים אף שהגדרות המקשים המהירים שמורות באותו קוב משאבים כמו התפריט, וש לטעון אותן בנפרד בעורת פונקציית 71 אחרת, הנקראת (10868609630005, שהגדרתה היא ק (סמגת תעפספם ,מפמ1בנֶת מסתשפו00616286028)1ת1080 ממססת פרק 4: תיבות הודעה ותפריטים | 95 הפרמטר וצחזפוחד הוא הידית ליישום, ואילו סופא מכיל את שם טבלת המקשים המהירים. הפונקציה מחזירה ידית לטבלת המקשים המהירים, או ערך וא אם לא ניתן לטעון את הטבלה. עליך להפעיל את הפונקציה ()10304609/613005 מייד לאחר שהחלון נוצר. הדוגמה הבאה מראה כיצד לטעון את טבלת המקשים המהירים של אפוא/וו סת ; ("טופועצע" ,151856תסמ) 108800616586088 = 1שססתת הערך שמכיל הפרמטר 655 ישמש אותנו אחר כך ויסייע לטפל במקשים מהירים. למרות שהפונקציה ()5ז0ו10300609/3 טוענת את טבלת המקשים המהירים, תוכלל התוכנית שלך לטפל בהס (לבצע את הוראתם), לאחר שתוסיף פונקציית 801 נוספת. ללולאת ההודעות. פונקציה זו נקראת ()319%609613101!פחזד, והגדרתה היא (פפסוק1 סמועמ ,נפמסתת ממססהא ,שמשת סומעם) 006102850ת50ב1פממפע מ4 במקרה וה, מכיל הפרמטר שחו ידית לחלון שעבורו יתורגמו המקשים המהירים. 60 הוא הידית לטבלת המקשים המהירים שתשמש לצורך זה. זוהי הידית. המוחזרת על ידי הפונקציה ()1030%609/6130015. ולבסוף, 1655 הו מצביע, המצביע על ההודעה. הפונקציה ()086606130015והופחמזד מחזירה ערך טטזו אם היתה לחיצה על. מקש מהיר, וערך 356 א לא. הפונקציה מתרגמת כל הקשה על מקש מהיר להודעת. סאאויוויוסס יוא מתאימה. כאשר אתה משתמש בפונקציה ()8460963001%ו8ופחזד, על לולאת ההודעות. שלך להיראות כך ((0 ,0 ,תתט ,סָפמ8) 0000055806) שבגמ [ ) ((8₪98 ,נבססתת (תאמ) ע1255300610:800פהב1/)!12 /* בעמסמעסא 01 שפט 8110 */ ;(12:00055200)8080פהבעד /* 8008ה₪1 10 01ע%ה0ם מעוטשע */ ק(58ת8) 6858806אמשט8ס5ום 1 הפונקציה. זס)גז96ס646והופח3זד מתרגמת כל הודעה של טבלת מקשים מהירים (99906סו 307730/6ז3009/6). להודעה: מתאימה מסוג. 00190 אש ולשילוב. של קבועי תפריט. שים לב שהתוכנית בודקת את הפונקציה זס30ז46096פ)מ!פחבזד. כאשר פונקציה זו מטפלת בהודעה, הלולאה לא צריכה לאפשר את המשך הטיפול הרגיל, מכיון ש-ז0ז0ז008600/6הופח3זד קוראת בצורה אוטומטית לפונקציה 6זקנחאו. 6 לבחו ומבוא ל-ספו כדי לנסות את השימוש במקשיס מהירים, תמצא בתקליטור את התוכנית !666, (הבאנו פה רק את הפונקציה ()חוגיוחואו של התוכנית. התוכנית בשלמותה נמצאת בתיקיה: 008004609). פסוותלפונת ,ססהבופחנת מסותצפאנה | תןבעתוא צהפונמנעת 45 16 ,8ת1מ6ה0ק1 תצסלקת,ססתב)פתנטשעפת 0 [ 4 6 ומא | סאאט ספ ; בפססגת ממססהת .01888 שס8ת1ש מ610ב11קמם הנח סג שַב6מַשָבה // ו ;אתהספחט 05 | התתספתם פס 8 /* מס1ששמנת 406ה1ש */ ק00צקה תא (ססהפמותו) ו ₪ 01 0 ₪ /* פסתבספת1 515 0: ש[בהגת /*‏ ;ססהםספמצת ו ;( שממאקפתלפק1 ,ססהבמפחדת )10801000 0 /* 16ע55 00) */ הת 10 10 ו /* 1ע8 צספפגם *] ; (+אססווצוו ה0נסס) (מפטחפט) = בממספף%ס8מעמת סט קסהגומקת52מ1 = במגמטה26פם1 סט /* מחפת פפגנם אממת1א */ ;שממתשםה2פק1 = שהה%פפ2012פק1 סט ( 5 18 | 46 ( ( 06פ )8601466501095! | 15 ( שפמת )תעטם? ] ( ( ₪66 )1906501488ַשה! ) 16 בפבם ;( מפתתת )מעמס? = 6פמנ פרק 4: תיבות הודעה ותפריטים. 7 .610808 ה102:10נקקה תוגה פמ: מ8%בעם // 8 פא 1 2 1 פטס 5 ,0 ,פמטתפטספפט אס ,0 ,פמטתפטספפט אס טא גנט 1 טר ( בחאתו | 11 ( 8155ת )מצמס? ; ("טנפווצוע" ,מפמנת) 1088800616286055 = במססתת ( ה סמ ( חמ )הקט ( (0 ,0 ,תמטא ,8 )0610555846 )שבגמ ו )| ((2086 ,1סססתת ,שתאמ) ש0בעם081סת1260פה8ע !)18 ( 0 )2500500 1פהבצם ספ ;/( מפעבתא פה )תעטםם, 1 לפני שתמשיך לפרק הבא, רצוי שתערוך כמה ניסיונות בתכנות תיבות הודעה, תפריטים ומקשים מהירים. נסה את האפשרויות השונות ובדוק מה הן עושות. אנר נשתמש בתפריטים ובתיבות הודעה במרבית התוכניות שנציג בספר זה, ועל כן חשובב שתרכוש הבנה יסודית בנושא זה. 8 לבח ומבוא ל-ספו פרק היכרות עם תיבות דו-שיתח כשנתבונן היטב נראה שתיבת דו-שיח דומה לחלון נשלף (או חלון קופץ). היא מקבלת. קלט מהמשתמש למשימה מסוימת, כמו למשל, שם קובץ או מחרוות תווים לחיפוש. ההבדל העקרוני בין תיבות דו-שיח לחלונות נשלפים הוא, שתיבות דו-שיח משתמשות. בתבניות (פטוגוקוחפד) שמגדירות את הפקדים פ!סשחס6) שתיבת הדו-שיח מציגה משתמשים בסוג המשאב 018.06 כדי להגדיר תבניות אלו בקובץ המשאביס. באפשרותך ליצור את התבניות גס באופן דינמי בזיכרון בומן פעולת התוכנית. כמו כן, תיבות הדו-שיח פועלות באופן שונה מחלונות נשלפים בכך שהן משתמשות. בפונקציית ברירת מחדל מיוחדת לטיפול בהודעות שמפענחות את הקשות המקלדת, כמו מקשי החיצים ומקש הטבלר א טגז), אשר מאפשרים למשתמש לבחור בקלות. בפקדים שבתיבת הדו-שיח. ככלל, הפונקציה הנוספת לטיפול בהודעות וההצגה של תיבת הדו-שיח עושים את תיבת הדו-שיח לכלי המקובל ביותר לקלט פשוט מהמשתמש ועיבודו תיבות דו-שיח (ואמצעי הבקרה הכלולים בהם) הן נושא רחב. בפרק זה תלמד את יסודות הניהול של תיבות דו-שיח, כיצד ליצור אותן וכיצד לעבד הודעות שמקורן בתיבות דו-שיח. בפרקים הבאים, תשתמש בתיבת דו-שיח כדי לחקור כמה ממרכובי הממשק של חלונות אפ .5 כיצד צעת התקשורת בי 1 כיצד מתבצעת התקשורת תיבת הדו-שיח והמשתמש תיבת הדו-שיח (80% חָטוום) מנהלת את התקשורת עם המשתמש באמצעות פקדים. (פוסשחסס). פקד הו סוג מיוחד של חלון לקלט, או פלט. פקדים נמצאים "בבעלות' חלון-האב שלהם; בדוגמאות המובאות בפרק צה, חלון-האב הוא תיבת הדו-שיח הדוגמאות בפרק זה מתייחסות לשלושה מהפקדים האלה: לחצנים, תיבות רשימה, ותיבות עריכה. בהמשך הספר, נבחן את שאר סוגי הפקדים. פרק 5: היכרות עם תיבות דו-שיח = 99 חשוב להבין שהפקדים האלה מפיקים הודעות (עם כל גישה מצד המשתמש) אך גם' מקבלים הודעות (מהיישום שלך). הודעה שהופקה על ידי פקד מציינת את סוג האינטראקציה שהתחוללה בין המשתמש לפקד. הודעה הנשלחת לפקד מסוים היא למעשה, הוראה שהפקד יגיב עליה בפעולה כלשהי. בהמשך הפרק יובאו דוגמאות. להעברת הודעות מהסוג שתואר לעיל. 2 הגדרת סוגי תיבות דו-שיח בסעיף הקודם למדת שבאפשרותך להשתמש בתיבות דו-שיח בתוכנית כדי לספק למשתמש מידע, וגס לקבל ממנו מידע. יש שני סוגים עיקריים של תיבות דו-שיח תיבות דו-שיח מודאליות 8045 פָטוום. ו003//) | ותיבות ‏ דו-שיח ‏ לא-מודאליות. 8095 130 (1063-חס)! 0 10081655 כשתיבת דו-שיח מודאלית מוצגת על המסך, המשתמש אינו יכול להמשיך ביישום עדד אשר הוא יסגור את התיבה, ובדרך כלל - יקליד נתונים ויאשר, או ילחץ בלחצן כלשהו כנדרש. תיבת דו-שיח מודלית מגבילה את הגישה לשאר החלונות הנראים של היישום. שקרא לתיבת הדו-שיח. עם ואת, המשתמש יכול לעבור ליישומים אחרים בומן שיישום אחד מציג את תיבת דו-שיח מודאלית. תיבת הדו-שיח הפשוטה ביותר מסוג' וה היא תיבת ההודעה (804 655306ו/), שהשתמשת בה בפרקים הקודמים. התוכנית יכולה להגדיר גם תיבת דו- שיח מודאלית למערכת סגו 1003 וחפזפץפ. 5. תיבת דו-שיח מודאלית למערכת משתלטת על כל המסך, ואינה מאפשרת למשתמש לבצע עיבוד כלשהו בכל התכניות האחרות עד שהמשתמש גיב לתיבת הדו-שיח. ההיגיון לשימוש בתיבת דו-שיח מודאלית למערכת הוא רק למקרה של בעיה. רצינית שהמשתמש אינו יכול להתעלס ממנה, כמו למשל, שגיאת מערכת. אפשר ליצור תיבת דו-שיח מודאלית למערכת בשתי שיטות. הראשונה - על ידי הגדרת הסגנון הפסויפ+5 5או בתבנית של תיבת הדו-שיח והשנייה - על ידי שימוש בפונקציה /ו00חו/56057506310 כדי ליצור את תיבת הדו-שיח עצמה. 3 קבלת הודעות מתיבות דו-שיח תיבת דו-שיח היא למעשה חלון (אף שוהו חלון מסוג מיוחד). אירועים המתרחשים. בתוך תיבת דו-שיח נשלחים אל התוכנית שלך בעזרת מנגנון להעברת הודעות המשמש. גס את החלון הראשי. אולם הודעות מתיבת דו-שיח אינן נשלחות לפונקציית החלון. של החלון הראשי. במקום זה, כל תיבת דו-שיח שתגדיר תודקק לפונקציית חלון משלל עצמה, שנהוג בדרך כלל לכנותה פונקציית דו- שיח (חסטסחו ָסוו0). הגדרת פונקציה. זו צריכה להיות כך (מובן ששם הפונקציה נתון לבחירתך). ,655496 צאט ,ממ זתו8) סמו (ממצגת1 (ותתתק1 ,מבתגקט אתתתפר 0 הכפהו ומבוא ל-ספו כפי שאתה רואה, פונקציית דו-שיח מקבלת את אותס פרמטרים כמו פונקציית החלון. של החלון הראשי. עס זאת, היא שונה מפונקציית החלון הראשית בכך שהיא מחזירה. ערך טש או 56וג!. בדומה לפונקציית החלון של החלון הראשי, פונקציית חלון של תיבת דו-שיח תקבל הודעות רבות. אם הפונקציה מעבדת הודעה מסוימת, היא תחזירר ערך פטו. אס היא אינה מגיבה להודעה, היא תחזיר ערך 56 ככלל, כל פקד הכלול בתיבת דו-שיח יקבל מספר זיהוי משלו. כל פעם שהמשתמש מפעיל פקד נשלחת הודעה לפונקציית הדו-שיח, ובה יצוין מספר הויהוי של אמצעי הבקרה וסוג הפעולה שנקט המשתמש. הפונקציה תפענח את ההודעה ותנקוט את הפעולה המתאימה. תהליך וה והה לדרך שבה מפענחת פונקציית החלון הראשית של התוכנית את ההודעות שהיא מקבלת. שלא כמו תיבת הדו-שיח המודאלית, שומן פעולתה מוגדר, באפשרות תיבת הדו-שיח הלא-מודאלית לקבל וגם לאבד את מיקוד הקלט (פטסט! וופח1), כלומר, תיבת דו-שיח לא מודאלית יכולה להיות חלון פעיל או להיות חלון לא פעיל (כמו לדוגמה, בעת חיפוש במעבד התמלילים 6זס//). לתיבת דו-שיח לא-מודאלית יש ומן פעולה לא מוגדר. מכיוון שתיבת דו-שיח לא-מודאלית יכולה להיות חלון לא פעיל, התוכניותת שמשתמשות בה חייבות לוודא שניתנת האפשרות גם לתיבת הדו-שיח לקבל את ההודעות שנשלחות אליה. בדרך כלל תבנה לולאת הודעות עבור תוכניות שמכילות. תיבות דו-שיח לא-מודאליות, כמו שבדוגמה שלהלן ( (0 ,0 ,תתטת ,ספמ8) 0000555806) שבגמ |[ ((8888 ,0061685מבפמ) 55806ש0ף1810ם9ד || 1555שבסמפנתת) 45 [ ( 5050 ) 2500055800 נפתבפק פם בצורת הבניה המקובלת, הערך 65פַסּיִפַָח = מציין =ידית לתיבת הדו-שיח הלא-מודאלית. ‏ אם תיבת הדו-שיח הלא-מודאלית אינה פתוחה כרגע, הערך א חיוב. להיות ‏ ₪01 הפונקציה 10/3166 קובעת אם הודעה מ-6005חו+. מיועדת לתיבת הדו-שיח. אם כן, הפונקציה תשלח את ההודעה אל פונקציית תיבת הדו-שיח שמטפלת בהודעות, ולכן הפונקציה 0%659306)הפחמזד והפונקציה 030%699306פו לא יטפלו בהודעה. פרק 5: היכרות עם תיבות דו-שיח | 101 4 כיצד ליצור תיבת דו-שיח פשוטה תיבת הדו-שיח הראשונה שניצור תהיה דוגמה פשוטה שתכיל שלושה לחצנים: 866, הז ו-09ח63. לחיצה על לחצן 866, או על ח66ז6 תגרום להפעלת תיבת הודעה שתציין איזה לחצן נבחר. התיבה תעלם מהמסך בעקבות לחיצה על לחצן /63066. בדוגמה זו ובשאר הדונמאות בפרק זה, לא נעשה שימוש רב במידע שמעבירה תיבתת הדו-שיח. עס ואת, יש בחן כדי להדגים היטב את התכונות העיקריות של תיבותת הדו-שיח שישמשו אותך ביישומים שתכתוב. 5 קובץ המשאבים של תיבת הדו-שיח גם תיבות הדו-שיח הן משאבים הכלולים בקובץ המשאבים של התוכנית. לפני שתפתח. תוכנית העושה שימוש בתיבות דו-שיח, עליך לבנות קוב משאבים המגדיר תיבות דו-שיח. רכיבי תבנית תיבת הדו-שיח הגדרת תיבת דו-שיח מתחילה בהוראה 06.א01, שנכתבת לפני סדרת משאבי הפקדים. של תיבת הדו-שיח. המבנה הכללי של תבנית תיבת הדו-שיח דומה לתבנית המשאב שהשתמשת בה בסעיפים קודמים, כדי לתכנן תפריטים ופריטי תפריטים. המבנה הכללי של תבנית תיבת הדו-שיח 690% ,01800 ,קסצ ,165% םנמההת0פנם הסנתנק 611168מ16מם אץ56 | ... | 162ץ5% | 161ע56 פס מתצח " 18100ם" אסצעפגס אס "שתפוטתסם" ,5126 מהסע א ,סז ,165% ,10 1סע6ה00 ,"108ק8ס בסטסמסס" 1שמעצ1סע6הסס סא ,מש ,סז ,165% ,18 01ע0006 ,"0806108 בסטטמסס" 1שמעעבסעםהסס 61 ,מ%צ ,סז ,165% ,10 1סע6ה00 ,"108ק08 בסטסמסס" 1שמעצ1סע6הסס סא ,מש סט 81060006 הוא שם תיבת הדו-שיח. הפינה השמאלית-העליונה של התיבה תהיה בנקודה סד ,19 מימדי התיבה נתונים על ידי הפרמטר חז0ו/ו והפרמטר חח 2 זקא2כחווו ומבוא ל-ספו טבלה 5.1: טגנונות נפוצים לתיבות דו-שיח. הערך הפעולה שואי הססון 5 | יוצר תיבת דו-שיח מודאלית. 806% 5/ | כוללת קו מתאר אסזזק אס פא | כוללת פס כותרת. 10 5 | יוצר תיבת דו-שיח בסגנון חלון-בן קטקסק פע | יוצר תיבת דו-שיח בסגנון חלון קופ' 90%פקזויןא3ו. 5+ | כולל לחצן הגדלה. א680קזווזאזו 5 | כולל לחצן הקטנה שאשופ+5 5 | כולל תפריט מערכת. קסד85 אד וו | בחירת פקד בלחיצה על סד 85 או | התיבה נראאית כשהיא פעילה. ההגדרה 6קעדוסשחס6 מתייחסת לאחד מסוגי חלונות הבן שאפשר להשתמש בהם כדי ליצור פקדים בתיבת דו-שיח. ההגדרה 6קץזוסשחס6 חייבת לכלול את אחד הערכים. שברשימה המפורטת בטבלה 5.2. טבלה 5.2: הערכים האפשריים עבור הכניסה שקץדוסעוחס6 בהגדרת תיבת הדו-שיח. סוגי פקדים אפשריים הו הויו ו 0 זופדווסם | = אסדדטשאפטקפפס הווי הפצו ו 6 הי ג לפניך תיאר קצר של הסוגים. , אסדדטט פס אס סד סנס לחצן (חסטטום חפם) הוא פקד שהמשתמש ילוח עליויי (על ידי לחיצה בעכבר, או הקשה על מקש טגד עד שהלחצן הרצוי מואר, ולאחר מכן הקשה על זפוחט) כדיי לחולל תגובה מסוימת. לדוגמה, לחצן 0% שבו אנו משתמשים ברוב תיבות ההודעה, הוא פקד מסוג יילחצן". , תיבת סימון (804 00606) מכילה פריט אחד או יותר, ולצידם סימן "'*" (או אחר), או מקוס ריק. אם הפריט מסומן, פירוש הדבר שנבחר. אם תיבת דו-שיח מכילה. יותר משתי תיבות סימון, ניתן לבחור ביותר מפריט אחד. פרק 5: היכרות עם תיבות דו-שיח | 103 צ + > כפתור רדיו (חפזוטפ 83000) הוא בעיקרו של דבר תיבת סימון. ההבדל הוא, שניתן לבחור באפשרות אחת בלבד בכל פעם, ללא קשר למספר הכפתורים המוצגים. כפתור רדיו הוא תיבת סימון המוציאה מכלל אפשרות (טאופט/0א5) כל תיבת סימו. אחרת. תיבת רשימה 800 151) היא תיבה ובה רשימת פריטים, שהמשתמש רשאי לבחור. באחד מהם (או ביותר). תיבות רשימה משמשות בדרך כלל להצגת פריטים, כמו. שמות קבצים. תיבת עריכה (803 /86) מאפשרת למשתמש להקליד מחרוות תווים. תיבות אלו. מכילות את כל המאפיינים הנחוצים לעריכת טקסט. לכן, כשהתוכנית מבקשת. מחרוזת תווים, היא מציגה לפני המשתמש תיבת עריכה ומחכה עד שיסיים. להקליד את המחרוזת הרצויה לו. תיבה משולבת (803 חסטמחוטחוסס) היא צירוף של תיבת רשימה ותיבת עריכה. פס גלילה (ז88 ו/500) משמש לגלילת הטקסט בחלון. פקד סטטי (וסזוחס6 5/31) משמש ליצירת פלט טקסט (או גרפיקה) מהמשתמש, אך אינו יכול לקבל קלט. יצירת תבנית לתיבת דו-שיח בסעיף הקודם למדת על הגדרת המבנה הכללי של תבנית תיבת הדו-שיח, שכללה מטפר מרכיבים חשובים. ייתכן, שיהיה לך יותר קל להבין את הגדרת תיבת הדו-שיח, אס תנתח הגדרה של תיבת דו-שיח פשוטה, כמו בדוגמה שלהלן. (דוגמה זו תשמש אותנו ליצור תיבת דו-שיח ראשונה) 14 6 0 ,20 ,20 מממתסהה50נם הסמגנם 00מת1פסמט אסנעפגס ₪5 | מתמנפנע פ₪ | פטקסק פא | םאתתפתתססון פם מתצדם טאפואפצפ פוף "01810 טע" א10פטהס "86516 585 פע" ,8 פאסע [ 4 5ס64",1ת" ‏ אספצטמאפטטטמם 7 14, ,טא 100,"מ66טם" 7 פסצפמתד ₪5 | מנמצפנט פא | סמצמס פא ,"030061" פסצפמתת ₪5 | מנמצפנט בא | סמזאס פוף מ 5 | ספזאס פף קת2פח/וו ומבוא ל-0פו ההגדרות שלעיל יוצרות את תיבת הדו-שיח שמוצגת בתרשים 5.1 כשמסתכלים מקרוב על תיבת הדו-שיח שנוצרה, קל מאוד להבין את הרכיבים שלה המפורטים בקובץ המשאבים המוגדר. כל הוראה שבבלוק ההגדרות 506-חו899 יוצרת. פקד נפרד. הראשון הוא לחצן ברירת המחדל. לחצן זה מואר אוטומטית כאשר תיבת. הדו-שיח מוצגת. לפניך התצורה הכללית של הכרזה על לחצן. [6ע56 ,] משנשא ,מ6בגא ,ל ,א (סצפע ,"הַת1ע50" אסצצטממפט בדוגמה זו מכיל הפרמטר חַ50 את הטקסט שיופיע על הלחצן. 9810 הוא הערך הקשור אל הלחצן. הו הערך המוחזר אל התוכנית שלך עם כל לחיצה על הלחצן. הפינה השמאלית-העליונה של הלחצן תמוקם בנקודה +,א, וגודלו של הלחצן יהיה עלל פי ההגדרות בפרמטרים וטו ו- חִפַז. הפרמטר 58/6 קובע את אופיו המדויק של הלחצן. ‏ כדי להגדיר ‏ לחצן ‏ בעל סגנון ברירת מחדל, השתמש במשפט אסדדטפהפטקימס. למשפט וה פרמטרים והים לאלה של הלחצנים הרגילים (רק שהערכים 1885107 וו ו- אסדדט ופט 85 כבר כלולים בו, כך שנחסך הצורך להגדיר את סוג הפקד והפרמטרים שלו). ההוראה האחרונה בבלוק משתמשת במוהה 10031065 כדי ליצור את הלחצן פחסם. בדרך כלל, מציבים את המוהה 1204808 לכל לחצן שאמור לסגור את תיבת הדו-שיח, מבלי לשמור שינויים במקומות אחרים. הגדרת הרכיבים של תיבת הדו-שיח לפני פירוט הגדרות הפקד, תיבת הדו-שיח מגדירה מאפוינים סטנדרטיים משל עצמה. לדוגמה, תיבת הדו-שיח 551018.06ד בקטע הקודם, מתחילה עם חמש השורות הבאות. 6 ,0 ,20 ,20 מממהסההספצס סתגדם ססמתזסלטמט | אסנטפתס ₪5 | מתמנפדט פח | פטקסק פח | מאהתפנהססון ם מתצצם טסוו צ: "03810 6פשע" א10עפגס "56215 פהגם פע" ,8 פאסע פרק 5: היכרות עם תיבות דו-שיח | 105 השורה הראשונה מציינת את תיבת הדו-שיח עם המוהה 1851018.06. בשורה גם מוגדרים המידות של תיבת הדו-שיח. בדוגמה הקודמת, תיבת הדו-שיח מתחילה ב- 20. יחידות 080 למטה (פווח 83560 סָסוצום, יחידת מידה בתיבת דו-שיח להגדרת מיקום. וגודל) ו- 20 יחידות 080 משמאל לשפה השמאלית של שטח הלקוח בחלון הקורא (כלומר, הפינה השמאלית-העליונה של התיבה תהיה בנקודה [20,20] יחסית לשטח הלקוח של החלון). רוחבה של תיבת הדו-שיח הוא 180 יחידות 280 וגובהה - 70 יחידות ַ08. השורה השנייה והמשכה בשורה השלישית, מגדירות את הסגנונות שתיבת הדו-שיח משתמשת בהם כשהיא נוצרת. באפשרותך להשתמש בסגנונות החלון, אלה שמתחילים. ב-05 או 05 כסגנון של תיבת דו-שיח. צריך לכלול תמיד את הסגנון 151815 פ כדר לגרום להצגת תיבת הדו-שיח, ואי אפשר להשתמש בסגנונות 116808 5 אר אהו פאר משתמשים במילת המפתח אס1זק6, כמו שרואים בשורה הרביעית, עם תיבות דו-שיח שכוללות בהגדרת הסגנון שלהן את הסגנון אסזזקא6 5וו. ככלל, צריך לתת כותרת לתיבות הדו-שיח משתי סיבות: ראשית, הכותרת מוכירה למשתמש את מטרת. תיבת הדו-שיח; ושנית, היא מאפשרת למשתמש להזיז את תיבת הדו-שיח בתחום. המסך. הקפד לכתוב את המחרות של כותרת תיבת הדו-שיח בין גרשיים. לבטוף, מילת המפתח זו/0? אינה מגדירה רק את צורת הגופן (6/969קע1) שתיבת. הדו-שיח משתמשת בו, אלא גם את גודל כל פקד בתיבת הדו-שיח ואת תיבת הדו-שיח. עצמה. למילת המפתח זא0: תפקיד חשוב בקביעת גודלן של תיבות הדו-שיח, מכיוון ש-פווסחוו מחשבת את יחידות ה-080 כחלק יחסי מגודל הגופן. עבור רוב תיבותת הדו-שיח, גופן בגודל 8 נקודות, כמו 56 ח53 5א, זו בחירה טובה. חייבים לוודא ששם הגופן שנכתב בתוך הגרשיים זהה לשם הגופן שמוגדר במערכת; אחרת, קוב המשאבים לא יעבור את ההידור כנדרש. הגדרת הפקדים של תיבת דו-שיח (אספצטם ,באספצטם 100 ,"עס880 ש'טסצ 15 מפטע" מסמפאסס 12 ,66 ,45 ,םצאס פא | פסצפמתל פ₪ | אסצלטמאפטק 8 יטפמפטטי וסצטם 100 ,"עסקפא שט'טס 15 מפטק" א 4 שתי ההגדרות מקובלות; אך, כמו שלמדת כבר בדוגמאות הרבות שהיו לך עד כה, עליך לבחור באחת השיטות, או הנוחה לך יותר, ולהתמיד בשימוש בה בקוב המשאבים. עבור הפקדים עם פרמטר הרשות 58//6, הבחירות כוללות את הסגנונות 85707 פא ו-68007 05. הסגנונות 1885107 5 ו-ק680 5/ו שולטים בפעולת ברירת המחדל. של ממשק המקלדת, כמו שמוסבר בסעיף 5.8. צריך להשתמש באופרטור 08 (|) הפועל. על סיביות (9ס 810/86) כדי לשלב בין כל הסגנונות שאתה קובע לפקד. 6 זקא2פחווו ומבוא ל-ספו 6 הצגת תיבת דו-שיח עם המאקרו אספַפָסוגּום למדת שמגדירים בקובץ המשאבים את תבנית תיבת הדו-שיח. בסעיף זה ובמספר סעיפים אחריו, תלמד על שיטות שונות שאפשר להשתמש בהן להצגת תיבות דו-שיח. מבין כל השיטות האפשריות, השיטה הפשוטה ביותר היא באמצעות המאקרו אספסָטּום. מאקרו זה יוצר תיבת דו-שיח מודאלית ממשאב של תבנית תיבת דו-שיח. 1380 אינו מחציר שליטה לתוכנית שקראה לה, עד שפונקציית המשוב המוגדרת. מסיימת את תיבת הדו-שיח המודאלית על ידי קריאה לפונקציה 500 (תלמד יותר על הפונקציה חש בסעיף 5.14). המאקרו אספָסמ משתמש בפונקציה וזה קא80סָסו01, = שדומה לפונקציה 0103160058 המוסברת. בסעיף ‏ 5.12 בפירוט. ההגדרה של המאקרו 13/0980 היא כמו בדוגמה זור 48 110090 =006בםפה1 11685108כמם 60 [4חת //‏ ,ססהבמפחדת ,מסותלפאצת הס אסכ 81810 1000118158 // ,66בנקהסצ1 הצפצסקם 1008 צממאס 0 16הממה // מו שאו 0 אס 414109 60 65סמ1סק // שתנפף01410מ1 800פסנם המאקרו אספָטו/ם מקבל ארבעה פרמטרים, כמפורט בטבלה 5.3. טבלה 5.3: הפרמטרים של הפונקציה אס8 ַסומום. פרמטר תיאור הזה | מצהה את מופע התוכנית שקוב)ץ ההפעלה שלה מכיל את תיבת. הדו-שיח. פוגוקוחטדקו | מוהה את תבנית תיבת הדו-שיח. פרמטר זה יכול להיות המצביע. למחרוזת תווים המסתיימת ב-)טא, שמגדירה את שם תבנית. תיבת הדו-שיח; או שהוא יכול להיות ערך של מספר שלם המנדיר את מוהה המשאב של תבנית תיבת הדו-שיח. כאשר הפרמטר. מגדיר מוהה משאב, מילת הסדר-הגבוה חייבת להיות שווה לאפס, ‏ ומילת הסדר-הנמוך חייבת להכיל את המזהה. באפשרותך. להשתמש במאקרו 351188500865/% כדי ליצור ערך זה. העצה | מהה את חלון האב של תיבת הדו-שלח. 6חטסטווסקן || מצביע לפונקציית החלון של תיבת הדו-שיח. אס הקריאה ל-אס8פָסו0. מסתיימת בהצלחה, הפונקציה מחזירה את הפרמטר )]פסח. ‏ התוכנית תשתמש באופן עקבי בפרמטר 86506 בקריאה לפונקציה 609 שסוגרת את תיבת הדו-שיח. אם הקריאה ל-אספפָס00₪. ינה מצליחה, הפונקציה מחזירה את הערך 1-. פרק 5: היכרות עם תיבות דו-שיח | 107 המאקרו אספסָסוום. משתמש בפונקציה א5אוס6חו/63)9/ כדי ליצור את תיבת הדו-שיח, ‏ ואחר כך היא שולחת למאקרו תיבת הדו-שיח את ההודעה פאז ואצ (והודעה דאס*ד56 אוו, בתנאי שהסגנון. זאסזדפ5 05 הוגדר בתבנית). הפונקציה מציגה את תיבת הדו-שיח (ללא תלות בהגדרה של הסגנון זז 5 בתבנית), מעבירה את חלון האב למצב לא פעיל, ומתחילה בלולאת הודעות משלה לקבלת הודעות וביצוען עבור תיבת הדו-שיח. כאשר פונקציית הטיפול בהודעות של תיבת הדו-שיח קוראת לפונקציה פָטוסטת6, אספִסטבום הורסת את תיבת הדו-שיח, מסיימת את לולאת הודעות, מחזירה את חלון. האב למצב פעיל (אם הועבר למצב לא פעיל קודם לכן), ומחזירה לחלון שקרא לה את. הפרמטר ו/פפח. 7 לולאת ההודעות של תיבת הדו-שיח כשיוצריס תיבות דו-שיח, תיבת הדו-שיח משתמשת בפונקציית הודעות משלה, ולא בפונקציית ההודעות של 06זלחא שחלון האב משתמש בה. ייתכן, שבתוכניותת שתכתוב יהיו פונקציות הודעות שונות, אפילו כמספר תיבות הדו-שיח שיש בתוכנית, פונקציה אחת עבור כל תיבת דו-שיח. באפשרותך לתת כל שם שתבחר לפונקצייתת ההודעות, מכיון שאתה מוסר את כתובת הפונקציה בכל פעם שאתה יוצר תיבת דו-שיח. לדוגמה, בסעיף 5.9 בתוכנית 80%פוס תיבת הדו-שיח נוצרת על ידי הקריאה הבאה של הפונקציה אספחָומום. ; (00עפ1פ9656 (ססתקסתם) ‏ ,8מות "68601810" ,מפהנה) אספטסנגגצם הפרמטר האחרון, המצביע אל פונקציית ההודעות, מורה ל-פאוס0חואו לאן צריך לשלוח. את ההודעות שמיועדות לתיבת הדו-שיח. כפי שניתן לראות בקטע הקוד הבא, פונקציית ההודעות של תיבת הדו-שיח מבצעת טיפול דומה לוה שמבצעת הפונקציה ב ,סאגו עוגנ ,טנסמ מואשג) ססמס4ָנפ+פשע אסתמננתס ענטפמתג (8ש8ע1 עתתהק1 ,ממשבקא עתהתקור ( וט |[ 10 0 96 ספ וס 0 56 ( ב 0 )160 [ + 1008 856 ; ( 190% ,טנס )8100פתט סע 8 ז7א2כחוו ומבוא ל-ספו 100 856 ; ( מפסוות0פ1 ,טנס 8100 פה וצ 1 אפפ ה ( מפתתת )מצמ? 1 במקרה של פונקציית ההודעות של תיבת הדו-שיח שקטע הקוד מפרט, הפונקציה בודקת שתי הודעות בסיסיות: 06אזסדנא1 יו ו-סאוהואואס6 א/ו. כאשר הפונקציה. מקבלת את ההודעה 06 אזסזזו1 !ו, היא לא עושה כרגע כלום. כאשר הפונקציה מקבלת את ההודעה סא(יויו00 %, היא בודקת את הערך של מילת הסדר-הנמוך של הפרמטר וחּזפאו. כידוע לך, מילת הסדר-הנמוך של הפרמטר זאו מכילה את. הקבוע של הפקודה שנבחרה על ידי המשתמש. כשהמשתמש לוחת בעכבר על א0 (ו-חזמזקוו מכיל את הקבוע 1006), הפונקציה מחזירה 100%. עם ואת, כשהמשתמש לוח בעכבר על 63601 (ו-וחזפקאי מכיל את הקבוע 0003%/08, הפונקציה סוגרת את. תיבת הדו-שיח מבלי לשמור את השינויים שהמשתמש עשוי היה לעשות בתיבה. 8 השימוש במקלדת עם תיבות די כבר ראית ש-פוווסטחווצ תומכת במנגנון לוגי מיוחד לטיפול בתיבות דו-שיח, המתבטא בפונקציית תיבת דו-שיח לטיפול בהודעות. תמיכה זו כוללת גם אמצעים לבחירת פריטים בתיבת הדו-שיח על ידי הקשות מקשים כתחליף ללחיצות בעכבר. אפשר לחלק את הלוגיקה שבתוכנית לשימוש במקלדת לשלוש קבוצות: מקשים מהירים (מקשים חמים, 65/5 ₪00), שבעורתם בוחרים פריטים בחלון בשיטת "(אות)+שואי" כתגובה לפעולת הטבלר (80ז), אשר מעביר את המיקוד בין הפקדים, או כתגובה למקשי החיצים שנס הם מעביריס מיקוד בין הפקדים ובתוכס. -שיח הענקת תמיכה בתיבות הדו-שיח לצירוף "(אות)+16י' של המקלדת נעשה באותה דרך. שבה השתמשת עבור פריטי תפריט. בתוך מחרוזת הטקסט של הפקד צריך להכניס את. התו "8" לפני האות שרוצים להשתמש בה בצירוף ההקשה. לדוגמה, ההגדרה הבאה מיועדת עבור הפקד ווסדד055005%80, והיא משתמשת בצירוף ההקשות 6+0א כמקש. קיצור להפעלת הלחצן "הוחו" ,"אספצטמ" ,פאס 100 ,"4081856198" מסתפאס 2 ,48 ,66 ,45 ,סמצאס ₪5 | קסלפטתץ פוף | אסצצטממפטטפמס 8 פרק 5: היכרות עם תיבות דו-שיח | 109 לפעמים המשתמשים ימצאו שהשימוש בפקדי מקלדת נוח יותר מאשר לחצן העכבר. אולם כמו כל שאר האמצעים האחרים שעומדים לרשות המשתמש להפעלת התוכנית. בקלות, צריך להיוהר ולא להגדיר יותר מדי מקשים מהירים, מכיוון שהדבר רק עלולל לבלבל את המשתמש, ולא לעוור לו. כדי לתמוך בפקדי מקלדת בתיבות דו-שיח, חייבים. לקבוע מספר אלמנטים בתבנית תיבת הדו-שיח, ובכלל זה הסגנונות. קסד 5 ו-6₪07 פע הסגנון 148507 5/ מסמן כל פריט שמקבל את מיקוד הקלט כאשר המשתמש מקיש. על 130 או 80ד+0ח5. הסגנון סטסה6 5// מסמן התחלת קבוצה. כל הפריטים הרשומים בשפת תסריט בקובץ המשאבים עד להגדרת הסגנון הבא של 680 5אא, הם חלק מקבוצה אחת. המשתמש יכול להשתמש במקשי החיצים כדי לעבור בין הפריטים בתוך הקבוצה, אך הוא אינו יכול להשתמש במקשי החיצים כדי לעבור מקבוצה אחת לקבוצה אחרת. 9 תוכנית ראשונה ליצירת תיבת דו-שיח נציג את התוכנית השלמה ליצירת תיבת דו-שיח. כאשר התוכנית אס8פום הנמצאת. בתקליטור 6905 מתחילה לפעול, מוצג בשורת התפריט רק התפריט ברמה העליונה. על ידי בחירה באפשרות !60ד, המשתמש גורם להצגת תיבת הדו-שיח. מרגע. שתיבת הדו-שיח מוצגת על המסך, בחירה באחד הלחצנים תגרום לתגובה מתאימה. מסך לדוגמה נראה בתרשים 5.2, 6 1 טר 3 תרשים 5.2: פלט לדוגמה של התוכנית הראשונה ליצירת תיבות דו-שיח. 0 הכפהו ומבוא ל-ספו 1808 1106 ".סמנ" שמ1סה1 (132א) ‏ 4681868 415 מטתץ 32אנון 15 6ת44611 8 מפנתפ 32אצאן 15 440116 3 (0%80000000 > ()ה10פעםע600) (נססם) ₪6 32אצת פד ב 6 (צא 15) !) (001פ)/ 54 32אצא 15 325אנא 15 שה40661 ( (4> () 06606+5108) הסאס )דעס ) 2 15 56 ((25באדא 15)! 66 (עא 18)!) (נססם) ‏ 95אנא 15 שה40661 =סממספת1 מהמעעטם // = קמפחדת מסאתלפאצת ;"אסמטנס" = שהפאסקתפפק1 תפפסק1 "809 19108" 151 98פפספג ( 16 *55הןסטוחן 7פאא00 | 95ת018%0201ה מססם פסאותלפאונ ,ססהבםפהנת מסותצפונא ) ת|בעתגח צתפנמנעת 48 (שסתפ4תסת 186 ,סהנמנתסק1 הל5דק1 (סתם6פתנטםעקת 4 6 זוה | פא 55 תספות .01858 אסהת1א מ1108:10סקב מגגת שת5 שש6פ1מה // ו 8 ;אהתספתט 05 | אתתסטת 08 חא (00הפפוא) = | בסעקבמאתפםב סט = ע6א0188מ6 סט 0 ₪ 1 7 ;( סמגוממת2פם1 ,6סתגםפהדת )18160 0 סה 10 10 ו ; (ב+אמססווצון ה0נסס) (מפטחפה) = בתטספף%ס הפצמה סט קסמגומקת2פמ1 = במגחטהסעפם1 סט קסהגומקת2פק1 = 6הם580%ג2 15201 סט פרק : היכרות עם תיבות דו-שיח 111 2 הלבחו ומבוא ל-ספו פרק 5: היכרות עם תיבות דו-שיח | 113 4 הלבחו ומבוא ל-ספו ,גפ פוא ) וסנת אסממננתס ענטפמתת ה צאט הבטבטור שתפתפוו (198580 שתפתס 1 0156 655896 11 ₪ 56 ; (פטתע) םצע ב | ( (מ8צבפא) פתסא10) מ160פ 190 0886 0 ,בסה ) 40110 207 17 תעגל ; (98185) מעמםשע 1 שים לב למשתנה הגלובלי זצחזח. משתנה זה מקבל עותק של ידית המופע הנוכחיי המועברת לפונקציה ()חוגאחו\. הסיבה לקיומו של משתנה זה היא, שתיבת הדו-שיח. וקוקה לגישה לידית של המופע הנוכחי. תיבת הדו-שיח לא נוצרת במסגרת הפונקציה. ()חומ!וחו/+, אלא בפונקציה ()06זקח/ו, ולכ יש ליצור עותק של פרמטר המופע, כדי שניתן יהיה לגשת אליו גם מחוץ ל-()חוג!/חווו. 0 אתחול נתונים בתיבת דו-שיח בסעיף 5.7 למדת על פונקציית ההודעות של תיבת הדו-שיח, שמטפלת בהודעות. ש-פווסחו/ שולחת לתיבת הדו-שיח. במקרה של התוכנית 0%פ0/, פונקצייתת ההודעות מאתחלת את הפקדים (בערך שנמצא במשתנה הגלובלי), ולפי הקלט שהיא מקבלת מהמשתמש, שומרת את הערך של הפקד, במשתנה הגלובלי המתאים. פונקציית ההודעות משתמשת בפונקציות 504001910 ו-זא5001676. כדי לאתחל את הפקדים של תיבת הדו-שיח, ובפונקציות +ח9001ז6010/1 ו-61 664001007 . - כדי לקבל את ערכי הפקדים. פעמים רבות תשתמש בפונקציות אלו בתוכניות, כדי לאתחל את הפקדים ולקבל את הערכים שהם מכילים. להלן ההגדרות של פונקציות. אלו פרק 5: היכרות עם תיבות דו-שיח | 115 מס1פנפמדה 6ת1 ,מנפת סאאא) 6מ1ת565010156 מססם (519086 008 ,פט1גטגר עעאצט הנפצה 186 ,גתמ סאמוט) %א565010160056 מססם ; (56+188מ1 הצפצסקת מזףנפמדה 6ה1 ,מנפת סאאא) 6ה1ת010166 :00 ; (519066מ .001 ,0818866פלק1* תססם 01015פ1ת 186 שעמ סאמחם) 16 ת0 01016 (סהוסס<אגאה %ה1 ,מַתועמפמ1 הצפצסקם שים לב ששתי פונקציות 561 מחזירות ערך ו800, שמציין את הצלחת הפונקציה או כישלונה; וכך, שתי פונקציות 66 מחצירות ערך דאזט (6ספזה1 פחפפחט). עבור הפונקציה אַדוחפו1/פ601, הערך המוחזר מצייןך את מספר התווים שהפונקציה העתיקה למאגר פָחז5ק!. טבלה 5.4 מפרטת את הפרמטרים עבור ארבעת הפונקציות. ומראה את הפרמטר המתאים לכל אחת מהן. טבלה 5.6: הפרמטרים של הפונקציות זח1ו90ז5640/01, 61 7וח8ז560001, זח1רת0 664001 001 פרמטר פונקציות תיאור סח | 564 | מציין את תיבת הדו-שיח שמכילה את הפקד. ב 0 ביר הזזה | = וחזוחפנזטַו5610 | מגדיר אוה פקד לשנות. :564 | מגדיר את הפקד שצריך לקבל ממנו את הערך. 0 ביר טוט | = 56:01 | מגדיר את הערך של מספר שלס אשר מתייחסים. לספרותיו כמחרוזת טקסט שתוצג בפקד (בקיצור, מציג את המספר שיוצג בפקד). 6פ | 561000015 | מגדיר אם הפרמטר טוט מסומן (5/9096) אר לא מסומן (66ח0פחש). עבור זח660/010611, הוא: מגדיר אס הערך המוחזר מסומן או לא מסומן. אס פרמטר זה הוא 6זד, אז טוט מסומן. אם. פרמטר זה הוא סטזד והערך של טוט קטך מאפס, זח1וח9ז500001 מציבה את הסיימן מינוס. לפני הספרה הראשונה של המספר. אם פרמטר. זה הוא 5/96, טוט לא מסומן. 0 6 זקא2פחוו ומבוא ל-ספו פרמטר פונקציות. תיאור וכו | א דוח6ו5600/01 | עבור 76%6וחט5910/011, ַח50כ! מגדיר את. המחרוזת שצריך להציג בפקד. עבור 007ו6910/1, הוא מגדיר מאגר עבור המחרוות שבה הפונקציה מציבה את הערך. המוחזר מהפקד. (אות ראשונה - 6 | 6100100708 המדק | = +ח1ה100ס6610 | מצביע למשתנה בוליאני שמקבל את הערך שמציין הצלחה (פטזז), או כישלון (9356) של. הפונקציה. פרמטר זה הוא רשות, ויכול לחיות. וטא. כאשר ערכו -וא, הפונקציה אינהה מחצירה מידע על הצלחה או על כישלון. (אות ראשונה -.6) +חט60אמ!אח | זאסדוחסו01ו660 | הפונקציה מגדירה את הגבול של מספר התווים. שתקרא מהפקד למאגר המחרוזת שמוצבע על ידי 3 1 המאקרו 0080601310 בסעיף 5.6 השתמשת במאקרו אספָסוּ כדי ליצור תיבת דו-שיח מודאלית ממשאב של תבנית תיבת דו-שיח. גם למדת שלפעמים צריך ליצור תיבות דו-שיח לא מודאליות, בנוסף לתיבות המודאליות. באפשרותך להשתמש במאקרו 0309000 כדי ליצור תיבות דו-שיח לא מודאליות. המאקרו 09306000 יוצר תיבות דו-שיח לא מודאליות ממשאב של תבנית תיבת דו-שיח. המאקרו פַט6163190%0 משתמש בפונקציה. ,0763001300073‏ שמוסברת בפירוט בסעיף 5.12. את המאקרו 0310800 כותבים על פי ההגדרה שלהלן. ו שסת8ספה1 ה110210קקג 50 ב1החגת // ,פסהבמפחדת ,מסתתצפאצ בתפת 18%6קמסם אסם 812108 1868011168 //‏ ,ש6בנקתסלק1 הצסדס. 108 עשתאס 50 ב1מתמת // 0 חאו סוחו סק אסם 818108 0 עבטת1סק //‏ 6מ0ת100ג1סק1 ססתפםנת לו ניתן לראות, שהמאקרו פָ010390/30 מקבל ארבעה פרמטרים. המאקרו מָט9003ו0/63. משתמש בפונקציה 000/5חו/9%ו63ז0. כדי ליצור את תיבת הדו-שיח. אחר כך, 00ו6/03090/3 שולחת את ההודעה 111018606 ואצ (וגם. את דאסד55 א, א הוגדר בתבנית הסגנון זא5610 05) אל מאקרו תיבת הדו-שיח המאקרו מציג את תיבת הדו-שיח אם הוגדר בתבנית הסגנון 151815 א/+, ולבסוף = 0 מחזיר את ידית החלון של תיבת הדו-שיח. פרק 5: היכרות עם תיבות דו-שיח = 117 לאחר חזרה מהמאקרו חָט9ו6163190, היישום משתמש בפונקציה 00600 להצגת ‏ תיבת הדו-שיח (אם עדיו לא הוצגה). היישום משתמש בפונקציה 6170/0000 כדי להרוס את תיבת הדו-שיח. כדי להבין יותר טוב את הטיפול שמבצע חָ/6163190, התבונן בתוכנית 190 076866 שבתקליטור המצורף לספר זה (בתיקיה 608005). כאשר המשתמש בוחר באפשרות 7690, הפונקציה 06זק0חאצ יוצרת תיבת דו-שיח לא מודאלית פשוטה, כמו בקטע הקוד שלהלן 896 100 855 + (90661695ףנת!) 6+ ,וס "מַ269501810" ,6פהדת)096866018108 = 461658סעפנעת 2( 1656109906 (80800/) (%גסצם כאשר המשתמש בוחר באפשרות !1990, התוכנית פס .676866 בודקת כדי לקבוע אם היא מציגה כרגע את תיבת הדו-שיח הלא מודאלית. אם כן, היא אינה מבצעת עיבוד, אם לא, פַסופו ‏ 66866 משתמשת בפונקציה 003090 כדי להציג את תיבת הדו-שיח הלא מודאלית. 2 הפונקציה ו3ז0708+60131003 בסעיף 5.6 למדת להשתמש במאקרו אספַסְָטמום כדי ליצור תיבות דו-שיח מודאליות, ובסעיף 5.11 למדת להשתמש במאקרו 016390300 כדי ליצור תיבות דו-שיח לא מודאליות. כאשר חייבים ליצור תיבות דו-שיח לא מודאליות, אפשר להשתמש גם בפונקציה וח5ז3(0073ו6/63060. פונקציה זו (שהמאקרו 016319080 קורא לה כחלק. מהעיבוד שהיא מבצעת) יוצרת תיבת דו-שיח לא מודאליות ממשאב תבנית של תיבת. דו-שיח. הפונקציה וַבּזקְסט9ו6163190 מאפשרת גס להעביר ערך שמוגדר על ודל היישוס (פטו8/ 060066-חסוו63ופא), אל מאקרו תיבת הדו-שיח בפרמטר הזלו של ההודעה 06.זסדזא1 א/+. באפשרות היישום להשתמש בערך הפרמטר וחמזגק! כדר לאתחל את פקדי תיבת הדו-שיח. משתמשים בפונקציה ?6763060130 בתוכניותת, כמו בדוגמה הכללית הזר 1 630 עפומו 066גמפה1 ה1108510מתג 50 616הגמ // ,ססהגמפחדת ,מסאתלפאצת 591866 אסכ הַ81810 1000118158 //‏ ,שתבאב6בנקהסצמ1 הצפצסקת 1008 פפתאס 0 18הממת // חאו וחור 6עטססספם אס ח6ַ41810 60 עמת1סק // = סמנתטס1ג1ממ1 ססתפם זת שטנפט 6108ב2ו181ט1ת1 // עבק 1ה1א3 אתתתקם / הפונקציה 6163190030 מקבלת חמישה פרמטרים. הפרמטר וח8ז3קח1 מגדיר את הערך שצריך למסור לפונקציית תיבת הדו-שיח בפרמטר הפקו של ההודעה 06זסדזא1 א 8 הכח ומבוא ל-ספו הפונקציה ו3ז0103190₪/0075. משתמשת בפונקציה 6163160606 כדי ליצור את תיבת הדו-שיח. אחר כך, 6103060107 שולחת אל פונקציית תיבת הדו-שיח את. ההודעה 111018606 א (וגם את זאסד56 שו אם הוגדר בתבנית הסגנון זווסזד56 25). הפונקציה מציגה את תיבת הדו-שיח אם הוגדרה בתבנית הסגנון 5 א/צ. לבסוף, 093000030 מחזירה את ידית החלון של תיבת הדו-שיח אם: הצליחה ליצור את תיבת הדו-שיח. אחרי ש-6:63/90₪/0003738 חוזרת, היישום משתמש בפונקציה 500106006 להצגת. תיבת הדו-שיח (אם עדיין לא הוצגה). היישום משתמש בפונקציה 0050001000 כדר לפרק את תיבת הדו-שיח. כדי להבין יותר טוב את מהלך העיבוד שמבצעת הפונקציה. 616310010/00773, התבונן בתוכנית 018109 076866, שנמצאת בתקליטור המצורף. לספר (בתיקיה 8006559285). כאשר המשתמש בוחר באפשרות 1650, הפונקציה 6 יוצרת תיבת דו-שיח לא מודאאלית פשוטה, כמו שרואים בקטע הקוד שלהלן פפע 10 6486 ( 0861688פנסת! ) 48 ,"2656018108" ,56מ1ה)05686601810028588 = 0461658ע16עת ( משום1 (מעתהתק1) ,506 1ם65%ץ(ססהק0תם) ‏ ,מא 8%שצ התוכנית ַס015. 676866 מגדירה מבנה (6וע60טזו5) מסוג אזא160פ, כדי להחזיק בר את המצב הנוכחי עבור כל לחצן שבתיבת הדו-שיח, כמו בדוגמה זו 665 0 0 מ [ כאשר מתבצע אתחול לתוכנית (כלומר, כאשר הפונקציה 0067706 מקבלת. את ההודעה 685815 או התוכנית מקצה ידית למופע (69חפזפח1) של המבנה. כאשר המשתמש בוחר באפשרות !165, התוכנית מעבירה ידית זו כפרמטר אחרון בפונקציה הק ף .616319013/0‏ הפונקציה 105%0/07106 מקבלת: את הידית בפרמטר וחגזמקו ומשתמשת בערכים, כדי לאתחל את מצב הפקדים בתיבת הדו-שיח. פרק 5: היכרות עם תיבות דו-שיח | 119 3 ברירת המחדל לטיפול בהודעות של תיבת דו-שיח למדת שחובה ליצור בתוכנית פונקציית טיפול בהודעות תיבות הדו-שיח כדי לטפל, ולעבד, את ההודעות ש-פווסחוו שולחת לתיבות הדו-שיח. למדת שפונקציית תיבות. הדו-שיח לטיפול בהודעות מבצעת צעדים דומים לפונקציה 06ז7חאו, שמטפלת בהודעות החלון שבתוכנית שלך. כשלמדת על הפונקציה 6זק0חא, ראית שהתוכניות. צריכות להגדיר תמיד את פונקציית ברירת המחדל של פאוסטחו/. לטיפול בהודעות. (00זקאו00חו//00), במשפט 0356 האחרון של הוראת ח860/א5, כפי שמוצג להלן. 1 ((מ8פבפ1 ,ה8צבקא ,ענ ,ומ סה 3 6ם) הפוסל אס אתה מגדיר מחלקת חלון (0899 אוסטחואו) נפרדת כדי ליצור את חלון תיבת הדו-שיח, עליך גם להגדיר פונקציית ברירת מחדל לטיפול בהודעות של תיבות הדו-שיח, כמו שאתה נוהג בחלון הבסיסי. כדי להגדיר פונקציית ברירת מחדל לטופולל בהודעות עבור תיבות הדו-שיח, עליך להשתמש בתוכנית שלך בפונקציה 6סזקְטָום. הפונקציה 6ְִקַפְָם מבצעת את טיפול ברירת המחדל בהודעות עבור פונקציית חלון. ששייכת למחלקת תיבת דו-שיח שהוגדרה על ידי היישוכ 613 66ח660-חסו3ס!וסם. 5 א00). משתמשים בפונקציה 06/0/9706 בתוכניות, כפי שמוצג בדוגמה הכללית שלהלן. 6פף6901ס ענטפטג אסט 818108 60 16ממת // ,ףנפת פוא 8 צאט +6סשהגעגן 0בַ8פפטת 6פצן? // תפר 666%ח858ם ₪886 560088 // 194988 אתתתסם / הפונקציה 06/0/7106 קובעת את ברירת המחדל של מחלקת החלון שהוגדרה עבור תיבת הדו-שיח. פונקציה זו מספקת טיפול פנימי לתיבת הדו-שיח על ידי משלוח ההודעות לפונקציית תיבת הדו-שיח וטיפול ברירת מחדל לכל הודעה שפונקציית תיבת. הדו-שיח מחזירה כ-56ו3ח. יישומים שיוצרים פונקציות חלון מותאמות אישית עבור תיבות הדו-שיח המותאמות אישית, משתמשים לפעמים בפונקציה 0610/9766 במקום. בפונקציה 0600060106 לצורך טיפול ברירת המחדל בהודעות. יוצריס ביישומים מחלקות תיבות דו-שיח מותאמות אישית, על ידי הצבת מידע מתאים במבנה 01/455סא/ו ועל ידי רישום המחלקה על ידי הפונקציה פ5ספופה. חלק מהיישומים משתמשים בפונקציה 6610/2910 להצבת הערכים במבנה ולקביעת. שם תיבת הדו-שיח שהוגדרה. במקרים כאלה, היישום מגדיר לפחות את האיבר 6ו095581:פק1 לפני שהוא רושם את. המחלקה. בכל המקרים, אתה חייב לקבוע את ערך האיבר 69000603 של המבנה 5 פושו לפחות כ-האזאפ/סא1.601ס, עבור תיבות דו-שיח מותאמות אישית. 0 הכפהו ומבוא ל-ספו אסור לפונקציית תיבת דו-שיח לקרוא לפונקציה 0610706 ; כי הדבר יגרום להפעלה. רקורסיבית (ח₪4000 506זו860). כדי להבין יותר טוב את הפעולה של הפונקציה 6, התבונן בתוכנית אופ61, שנמצאת בתקליטור המצורף לספר וה (בתיקיה 0559285קח0). כאשר מתבוננים בהגדרת הפונקציה 67106חו, צריך לשים לב שההודעה 6855 אא במשפט 50/0608 מאתחלת את מחלקת תיבת הדו- שיח 0955 804 חָסוום).. הגדרת. המשאב עושה את תיבת הדו-שיח למחלקה נפרדת, כפי שמוצג להלן 0 ,0 ,0 מממתסהה50נם הסמגדם 00מת1סצסמל | מאתהקנהססון 5 מ טמפאפצפ פא ספת | תה מו 5 | פטפסק "018108 טשפ" א10פטתס "56215 פח58 פע" ,8 פאסע "פנסשטנם" פפתמס א 000 100 ,".01ש6ה0ם אסם אסשמס" ‏ אספאסטאס 39,, ""מסטטם 4410" 080508 | תטסתם 5א,13,32,37,10,נסצסתת 286",100גע" 'סנסת הת 5 0 ספ 56608",100" | אספעטמ0נסת 68005 116,8,50,14,₪5,מפסמסס0,"שתסס" 7 סט כשמפעילים את התוכנית 619 ובוחרים באפשרות /16%, התוכנית תשתמש במחלקה פָספטו8 כדי ליצור את תיבת הדו-שיח. עבור כל הודעת 5אוס6חוא שתיבת. הדו-שיח אינה מטפלת בה, 97106ו6/0 קוראת לפונקציית ברירת המחדל לטיפולל בתיבת הדו-שיח (במקרה של התוכנית ַפָופ6פ, פונקציית ברירת המחדל היא ב 4 סגירת תיבת הדו-שיח - פַס!001ח5 בסעיפים קודמים למדת ליצור ולהציג סוגים שונים של תיבות דו-שיח. ראית בקודד שהוצג בסעיפים אלה שחייבים להשתמש בפונקציה 5000/8/00 לסגירת תיבת הדו-שיח. המודאלית. הפונקציה טָסוו00ח5 מפרקת את תיבת הדו-שיח המודאלית, והדבר גורם. למערכת לסיים כל טיפול בה. משתמשים בפונקציה פָס0חפ כפי שמוצג להלן 0 אסט 818108 60 16שממת // ,ףנעמ סאא פמ 60 שטבמט // 6 / פרק 5: היכרות עם תיבות דו-שיח | 121 הפרמטר פופו הוא שם תיבת הדו-שיח שהפונקציה פָס60/9ח8 צריכה לפרק. הפרמטר. 6פפח מאפשר לתוכנית להגדיר ערך מוחור מהפונקציה שיצרה את תיבת הדו-שיח אל היושוס הקורא. אתה חייב להשתמש בפונקציה 8060/00 כדי לפרק תיבות. דו-שיח שיצרת על ידי הפונקציות 013/0080%, וחמזהקאספָטומום, ז66זוטחזאסם טסוו אר 0110010737 ח1אס8מָסומו. היישום קורא לפונקציה 8603 מתוך פונקציית תיבת. דו-שיח. אל תשתמש בפונקציה 50% לכל מטרה אחרת. פונקציית תיבת דו-שיח יכולה לקרוא לפונקציה פָט₪00 בכל זמן, אפילו בומן הטיפול בהודעה 06)אזסזזא1 ואוו אם היישום קורא לפונקציה פָטוסח8 בומן הטיפול בהודעה 11101806 !+ פאוסטחו/ו מפרקת את תיבת הדו-שיח לפני שהיא: מצינה אותה, ולפני שהיא מעבירה את מיקוד הקלט (פטסס: זשוסח1) לתיבת הדו-שלח. וח אינה מפרקת את תיבת הדו-שיח מיוד. במקום זה, היא קובעת דגל ומאפשרת לפונקציית תיבת הדו-שיח להחזיר את השליטה למערכת. המערכת בודקת. את הדגל לפני שהיא מנסה לקבל את ההודעה הבאה מהתור של היישום. אם הפונקציה חָסוו60ח6 קבעה כבר את הדגל, המערכת מסיימת את לולאת ההודעות, מפרקת את תיבת הדו-שיח ומשתמשת בערך שנמצא בפרמטר שפסהח כערך מוחזר מהפונקציה שיצרה את תיבת הדו-שיח. 5 כיצד להוסיף תיבת רשימה נמשיך ונבחן את תיבות הדו-שיח על ידי הוספת פקד לתיבת הדו-שיח שהגדרנר בתוכנית הקודמת. אחד הפקדים הנפוצים ביותר, אחרי הלחצנים, הוא תיבות רשימה (80 :15). להלן ההגדרה הכללית של משפט א115180: [16ע56,] תפַגשא ,140 ,צ ,א ,סזם: אספשפנב במקרה זה, פ181 הוא הערך המגדיר את תיבת הרשימה. הפונה השמאלית-העליונה. של התיבה תמוקם בנקודה +,א, וגודל התיבה יהיה על פי ההגדרות של הפרמטר שטוו והפרמטר זחחסא. הפרמטר 58/6 קובע את הסגנון המדויק של התיבה (ערכי 6 המשמשים אותנו פה הס אותס ערכים המופיעים בטבלה 5.1 כדי להוסיף תיבת רשימה, עליך לשנות את ההגדרה של תיבת הדו-שיח בקוב המשאבים | 108180686 = (הקבצים | לפני | השינויים | מופיעים = בתיקיה 0030051:5190715). הוסף תחילה להגדרת תיבת הדו-שיח את תיאור תיבת הרשימה המובא להלן. | פמנאס 5 | צפנצסן 185 ,75,28,96,39 ,11 סז אסמלפזת פסצפמתל ₪5 | ננסספט פא | תפתתסם ₪5 | מנמצפנט פא עתה, הוסף להגדרת תיבת הדו-שיח את הלחצן הבא: ,509 פפד,"ם1געת 01666" וט 2 זקא2חוו ומבוא ל-ספו לאחר שתכניס שינויים אלה, תיראה ההגדרה של תיבת הדו-שיח כך. 6 ,78 ,20 ,20 מממהסהה50צם בסמגדם 00מתזסצסמ אסנעפגס ₪5 | מנמצפנע פ₪ | פטקסק פמ | מאתתפנתססון פם מתצדם טאפופצ5 פא "018108 מע" א10עטתס "86516 5מ8ס פע" ,8 4 פ4",10שת" | אסלצטמאפטפטמם 4 100,"תטם" פמפטפ 0 פמפטפ 4 16",105טעת 861608" 0 פספפפתע פא | מנסהספט 181,75,28,96,39,05 סד 1 ב- לבסוף, עליך להוסיף לקובץ ח.5180%! גם את פקודות המאקרו האלו 12 0 3 55 ספ 906006 1 1 מגדיר את תיבת הרשימה שצוינה בהגדרת תיבת הדו-שיח שבתוך קוב המשאבים. 56181 100 הוא ערך 10 של הלחצן ₪1 56166. עקרונות בסיסיים בהפעלת תיבות רשימה כשאתה משתמש בתיבת רשימה, עליך לבצע שתי פעולות בסיסיות. ראשית, עליךך לאתחל את תיבת הרשימה כאשר תיבת הדו-שיח מוצגת לראשונה. כלומר, לשלות לתיבה את הרשימה שתוצג בה (לפי ברירת המחדל, תיבת הרשימה תוצג כשהיא ריקה). שנית, לאחר שתיבת הרשימה אותחלה, תצטרך התוכנית שלך להגיב בכל פעם: שהמשתמש יבחר בפריט כלשהו מתוך הרשימה. תיבות רשימה מפיקות סוגים שונים של הודעות. הסוג היחיד שישמש אותנו כאן הוא: ההודעה 081618 18%. הודעה כזו נשלחת כאשר המשתמש לוח בעכבר לחיצה כפולה. על אחד הפריטים ברשימה. הודעה זו מוכנסת לתוך (וחפזבקא)סהסא1ה כל פעם. שמופקת עבור תיבת הרשימה הודעת 603 א (חובה לכלול בהגדרת תיבת הרשימה דגל בסגנון צזזדסאז 185, כדי שתוכל להפיק הודעות מסוג 0810 אפ)) לאחר שנבחרה אפשרות מסוימת, עליך לבחון את תיבת הרשימה כדי לגלות איז פריט נבחר. פרק 5: היכרות עם תיבות דו-שיח = 123 שלא כמו הלחצן, תיבת רשימה היא אמצעי בקרה המקבל ומפיק הודעות כאחד. תוכל. לשלוח לתיבת רשימה מספר הודעות שונות, אולם בדוגמה שלנו, נשלח רק את שתי ההודעות שלהלן. שם המאקדו הפעולה 6וזחד5ס סא .18 | מוסיף מחרוזת (בחירה) לתיבת הרשימה 681008586 18 | מבקש את האינדקס של הפריט שנבחר 6 8 היא הודעה המורה לתיבת הרשימה להוסיף לרשימה מחרוות מסוימת. כלומר, המחרוות שצוינה הופכת לפריט נוסף בתיבה. מייד תראה כיצד להשתמש בהודעה זו. ההודעה 651008581 18 גורמת לתיבת הרשימה להחזיר את האינדקס של הפריט שהמשתמש בחר מתוך הרשימה. כל מספרי האינדקס של תיבות. רשימה מתחילים בסיפרה 0 (על כן, הפריט השלישי ברשימה יקבל אינדקט 2). כדי לשלוח הודעה לתיבת הרשימה (או לכל פקד אחר), השתמש בפונקציית זַא בשם. ()5660101000%1695306, שהגדרתה היא 1 ,70 15 ,את וא) 5586ש/ה60 5680101 באס (מ8שג10 מותתתס1 ,מבעבקו עתהתפוו הפונקציה ()000160%/655306ח56 שולחת את ההודעה שמכיל הפרמטר 100 לאותור פקד (בתיבת הדו-שיח), אשר מספר 10 שלו מופיע בפרמטר 15. הידית לתיבת הדו-שיח. נמצאת ב-חאוטח. כל מידע נוסף הדרוש להודעה כלול בפרמטרים וחבּזפק ו- וחזפק המידע הנוסף, אם ישנו, משתנה מהודעה להודעה. אם אין מידע נוסף להעברה לפקד, ערכי הפרמטרים וחפזגלאו ו-וחפזפק! יהיו שניהם אפס (0). הערך שמחזירה הפונקציה. (179553060חט11ה60ח5 מכלל את המידע המיועד לפא כיצד לאתחל את תיבת הרשימה הואיל ולפי ברירת המחדל תיבת רשימה מופיעה כשהיא ריקה, עליך לאתחל אותה כל. פעם שמוצגת תיבת הדו-שיח שאליה היא משתייכת. פעולה וו פשוטה למדי, מכיון שבכל פעם שמופעלת תיבת דו-שיח, נשלחת לפונקציית החלון שלה הודעת 6 פאז ואצ. לכן, עליך להוסיף את משפט 6356 שלהלן, למשפט 50080 החיצונר שבפונקציה () 165007106 ((5000)%105936). אסם 1186 16121:26ת1 // זפ ,1 מז ,נתמ) 01608655896 1 תס ; ("16ססת" (מותתתפת) ,0 ,הצתצפמסת 1 ,1 10 ,1עמ) 010655896 תס ; ("סטהגעס" (מתתתפת) ‏ ,0 ,הצתצפמסת מ ,1 10 ,עמ ) 1655896 תס ("+גספ"(מתתתפ )1‏ ,0 ,6צתצפמסת 1 ,1 1 ,1עמ) 1655896 הס (מנתתת1) ,0 ,6צהצפמסת 1 6 1 (" ב 4 זקא2פחווו ומבוא ל-ספו קטע זה גורם לטעינת תיבת הרשימה במחרוזות "6וסקה", "ססַחז0", "זבסקיי ו- "906ז6". הוספת כל אחת מהמחרוזות לתיבת הרשימה נעשית על ידי קריאה לפונקציה. ,56000/01060/8655306)(‏ אשר נעשית בעורת הודעת 6אזהדפססא, 8 הפרמטר ?| מצביע בכל מקרה על המחרוזת המיועדת להוספה (חובה להעביר את. הסוג אל 88%ק1). במקרה זה, המחרוזות מתווספות לתיבת הרשימה בסדר שבו נשלחו, אולם בהתאם לצורה שבה בנית את תיבת הרשימה, ניתן לגרום להצגת הפריטים בסדר האלף-בית. אם מספר הפריטים ששלחת לתיבת רשימה עולה על מה שניתן להציג בחלון התיבה, יתוספו לה באופן אוטומטי פסי גלילה אנכיים. כיצד לעבד הודעה על בחירת פריט לאחר שאותחלה, תיבת הרשימה מוכנה לשימוש. בעיקרון, קיימות שתי דרכים לבחירת אפשרות מתיבת רשימה. ראשית, המשתמש יכול ללחוץ בעכבר לחיצה כפולה. על אחד הפריטים בתיבה. דבר זה גורם להעברת הודעת סא8/ויו00 זא לפונקציית. החלון של תיבת הדו-שיח. במקרה זה, מכיל הפרמטר (וזגזפסוא)סהס/1.0 את ה-פ1 הקשור בתיבת הרשימה, ואילו הפרמטר (חהּזבקאו)₪1//080/ מכיל את ההודעה א 810 18%. לחיצה כפולה מודיעה לתוכנית מייד על הבחירה של המשתמש. הדרך. השנייה להשתמש בתיבת רשימה היא לסמן את אחד הפריטים. דבר זה איגו גורם. למשלוח הודעה לתוכנית, אך תיבת הרשימה אוכרת את הבחירה, ומחכה עד שהתוכנית. תבקש לדעת מהי. שתי השיטות מודגמות בתוכנית המובאת לפניך. לאחר שפריט מטוים נבחר מתוך תיבת רשימה, עליך לקבוע מיהו הפריט שנבחר על ידי שיגור הודעת 65100858 .15 לתיבת הרשימה. התיבה תחציר את מספר האינדקס של הפריט שנבחר. אם ההודעה נשלחת לפני שנבחר פריט כלשהו, תחויר התיבה ערך (1-)99 18 כדי להדגים את העיבוד של הודעת בחירה מתיבת רשימה, הוסף את משפטי 659 הבאים. למשפט ה-חסאוא5 הפנימיי (((וחזהקא)0ה0/ו000)1.0ו59). בפונקציה. ()106קוופד. כלי פעם שנעשית בחירה באמצעות לחיצה כפולה על פריט כלשהו, תופיע תיבת הודעה ובה. יוצג מספר האינדקס של הפריט שנבחר. אם המשתמש ילח על לחצן "וז 5160" , תדווח תיבת ההודעה גם על הפריט שנבחר. /* אנסתמק אם1 אס 115% ג 58מססעם */ :181 10 886 501000108 ב שבגח עספט 18 566 // תפס == (3 בא ) פתסאצא) 6+ ,1 1 ,סָנסה) 96882101668068986 = 4 א6ת) 666 // 0 ;(01 ,0 ,ממפהטספמם 1 ;(1 ,"% :15 118% 1 אמסתד" ,צ5)86>תעמפ (06 מז ,"206 ה56100:10" ,ע56 ,מַנסג) 08מ5890פשא ספ פרק 5: היכרות עם תיבות דו-שיח | 125 /* 8564תק תססם בת 16טפת 561665 */ בענטהקנם5 סד 450 ,1 10 ,018ת) 80101660658806ת96 = 4 // 65%)‏ נ(01 ,0 ,ממפהטסצם6 מצ (1- < 1501 ;(1 ,"96 :18 1185 ה1 אסאת1" ,ע80):מת1צקם 8 ("86160%60 מבטפת סא" ,1)858מת1צקב (מס ממ ,"סבג 501500108" (עשם ,נסמ) א4580020שות (%גפצם תיבת רשימה - התוכנית השלמה נמצאת בתיקיה 005115%80ַ68. פלט לדוגמה מתוכנית זו מופיע בתרשים 5.3 ו ור חן תרשים 5.3: פלט לדוגמה הכולל תיבת רשימה. 6 כיצד להוסיף תיבת עריכה הפקד האחרון שנציג בפרק זה הוא תיבת העריכה (גס8 80). תיבות עריכה שימושיות. במיוחד, כי הן מאפשרות למשתמש להקליד מחרוזות תווים לבחירתו. לפני שתוכל להשתמש בתיבת עריכה, עליך להנדיר אותה בקוב המשאבים שלך. עבור דוגמה זו, שנה את הקובץ 6ז-86/680% כך (ראה בתיקיה 86080 פ0קּו0) 6 ,178 ,20 ,20 מממתסההספצם הסמגצם ססמתזלטמט | אסצטפתס פא | מתמנפנט מא | פטקסק פא | האתתפנהמסון 8ם מתצצם טאפאפצ פא "018108 מפשע" א10עפאס פחבם פמ" ,8 פאסע 6 זקתכבחווו ומבוא ל-ספו אזסמם 4 4",105שת" ‏ אספצטמאפטפטמם 14, ,פא ס10,"מ66טם" 7 1 "03061" טפ מתסהספאסצטת 80,28,96,39,58,נצדם ספב ציס פוט גירסה זו מוסיפה לתיבה לחצן בשם 06 א/86, שתפקידו להודיע לתוכנית שסיימת את עריכת הטקסט בתיבת העריכה. היא גם מוסיפה לתוכנית את תיבת הרשימה עצמה. סז של תיבת הרשימה הוא 881 -15. הגדרה זו גורמת ליצירת תיבת עריכה תקנית. לפניך ההגדרה הכללית של משפט דאפדדוס> (56/06,] 861986 ,0106 ,+ ,א ,מדסם פאמצצצתם בהגדרה זו, 5010 הוא הערך המוה את תיבת העריכה. הפינה השמאלית-העליונה שלל התיבה תמוקם בנקודה +,א, וגודלה יהיה מכפלת הפרמטר תושו בפרמטר חטשו הפרמטר 58/6 קובע את הסגנון של תיבת הרשימה (הערכים לפרמטר זה הס אותם ערכים המופועים בטבלה 5.1. כעת, הוסיף את הגדרת המאקרו הבאה לקובץ ח.₪8080%. 107 1 10 3467108 תיבות עריכה מכירות הודעות רבות, ואף מסוגלות להפיק כמה סוגי הודעות. למטרות. דוגמה זו אין צורך שהתוכנית תגיב להודעות. כפי שיתברר לך, תיבות עריכה מבצעות. את פונקציית העריכה בעצמן. כדי לערוך טקסט אין צורך בקשר כלשהו עם התוכנית. התוכנית תחליט מתי מתאים לה לקלוט את תכולת תיבת העריכה. כדי לקלוט את התכולה הנוכחית של תיבת עריכה, השתמש בפונקציית 81 בשם (661010100018460, שהגדרתה הכללית היא קנ (אגעת מם1 ,ע56מ1 תלפק ,ה מה1 ,נקת מאשא)6א6לת₪6001016 צונו הפונקציה גורמת לתיבת העריכה להעתיק את התכולה הנוכחית של התיבה אל המחרוזת שהמצביע פק! מצביע עליה. סז מכיל את הידית של תיבת הדו-שיח הפרמטר 1ח מכיל את המספר המוהה של תיבת העריכה. המספר המירבי של תווים. שיש להעתיק מוגדר על ידי הערך אג!/ח. הפונקציה מחזירה את אורך המחרוזת. כדי להוסיף תיבת עריכה לתוכנית שלנו, הוסף את משפט 6356 הבא למשפט 560 של. הפונקציה ()06זק0/פ65ד. כל פע שהמשתמש ילח על הלחצן 06 86%, יופוע עלל המסך חלון הודעה, שיכיל את הטקסט הקיים כרגע בתיבת העריכה. פרק 5: היכרות עם תיבות דו-שיח = 127 4 תסשסטם אס אסם 5815 */ :א0ם1 50גם /* אסם 2616 סתם 05 68הס:ה0 צ18ם419 :(90 ,58 ,81 10 ,נעת)6א5ע191000ס 65 ;(08 א ,"פת1אמהסס אסם 416ם" ,ע86 ,בנממ) א0מ25200בה 1 מפםם, המאקרו 10% חוא ערך מובנה, המוגדר על ידי הכללת הקוב .5אוסחו/ בתוכנית.. בתרשים 5.4 מופיע פלט לדוגמה הנוצר על ידי תיבת העריבה.. שלוו מאיר תרשים 5.4: פלט לדוגמה הכולל טקסט מתוך תיבת העריכה.. 8 הכחא ומבוא ל-ספו פרק ממשק התקן גרפי 1 ממשק ההתקן הגרפי (10+6718060 66וע26 5סוהכְ3ּז6) ממשק ההתקן הגרפי - 601 (097069ה1 06/68 /65וחק3ז6) הוא. שם כולל לקבוצת פונקציות תיקיה, אשר מספקות ליישומי פאוסטחו/ ממשק גרפי עבור מסך ומדפסות, שאינו תלוי בהתקנים. ממשק ההתקן הגרפי הוא שכבת ביניים בין היישום לבון סוגי החומרה השונים. ממשק ההתקן הגרפי משחרר את התוכניתן מעיסוק בכל סוג של התקן בצורה ישירה, בכך שייתפקיד'' זה מוטל על ממשק ההתקן הגרפי, אשר יפותרי" עבוד התכניתן את בעיית ההבדלים בחומרה. יישום אסטחו מתוכנן היטב מתבצע באותה צורה על כל סוגי החומרה הנוכחיים ויפעל כראוי גם בכל חומרה חדשה שתיווצר בעתיד, מכיון שממשק ההתקן הגרפי "יפתור" כל שוני. למותר לציין, שהממשק צריך להתעדכן מעת לעת, כדי לאפשר את הגישור בין יישוס המשתמש לבין. סוגי החומרה החדשים. כל פונקציות ממשק ההתקן הגרפי ב- ּוו משתמשות בערכים בני 32 סיביות עבור קואורדינטות ממשק ההתקן הגרפי; אך ב- 9% פאוסחוו ו- 32חו//, מערכת ההפעלה. מתעלמת ממילת הסדר-הגבוה, דבר שבפועל גורם לקבלת ערך בן 16 סיביות עבור הקואורדינטות. רק ב- דא פאוסטחוו יכולים היישומים להשתמש בערך המלא בן 32 סיביותת 2 כדאיות השימוש בממשק התקן גרפי כפי שאולי דמיינת לעצמך, התוכניות צריכות להשתמש בממשק התקן גרפי כדי לייצר פלט במובן הכוללני, ולא להשתמש בפלט מבוסס טקסט או בפלט שאינו גרפי. יש סיבות רבות לשימוש בממשק התקן גרפי כדי לנהל את תכולת החלון. להלן כמה מהן. פרק 6: ממשק התקן גרפי ‏ 129 %+ אפשר להשתמש באותו הקשר התקן (פוחס6 6%65) עבור ההתקנים רבים. 1% אפשר לפרמט פלט בהקשר ההתקן, לפני שליחתו אל ההתקן. %+ אפשר לנהל גרפוקה ומידע חזותי אחר בחלון על ידי שימוש בהקשר התקן. 5 אפשר לשלוט בצורה שבה נראה (או מופיע) החלון (אחרי גלולה, שונוי גודל, וכדומה) בקלות רבה יותר, על ידי שימוש בהקשר התקן. באפשרות התוכניות לשלוח בקלות אל מדפסת או אל הקשר התקן אחר כל פלט. שמוקס קודם לכן בהקשר התקן של חלון. רבות מהתוכניות אשר הוצגו לפניך בספר וה השתמשו בהקשרי התקן, כדי לנהל נתונים בחלון התוכנית. בסעיפיס הבאים, נתמקד מקרוב ביתרונות ובשימושים של הקשרי ההתקן. 3 להבין יותר טוב את הקשר ההתקן הכלי הבסיסי ש-פווס6חוו משתמשת בו כדי לספק ליישום אי תלות בהתקן, הוא הקשר התתקן (אטוחס6 9%65) ובקצרה - 06. הקשר ההתקן הוא מבנה פנימי, אשר וס חוו. מנצלת להעברת נתונים להתקן פלט. במקום לשלוח פלט ישירות. אל החומרה, היישום שולח את הפלט אל הקשר ההתקן. פווסוחוא, ולא התוכנית שלך, שולחת אחר כך את הפלט אל החומרה. הקשר ההתקן תמיד מכיל עט (חטל) אחד כדי לצייר קווים, מברשת (8/050) אחת כדר למלא שטחים, גופן טחסז) אחד לפלט של תווים, וסדרת ערכים אחרים לשליטה בהתנהגות הקשר ההתקן. אם היישום דורש גופן שונה, על היישום לבחור את הגופן לתוך הקשר ההתקן לפני הצגת הטקסט. בחירת גופן חדש אינה משנה את הטקסט הקיים בשטח הלקוח של החלון. אפשר לדמות את הממשק שמספק הקשר ההתקן, לסכימה שמוצגת בתרשים 6.1 שלהלן. 0 סוה שה \ 99 וו שש 5 לוו (מסאסוש) ל ו (80085) וו ה 0-77 ₪0 ופפ שש תרשים 6.1: המודל הלוגי של הקשר ההתקן. 0 כו ומבוא ל-ספו 4 הקשרי התקן פרטיים בדרך כלל, יישומים משתפים ומקבלים הקשרי התקן מיד לפנ השימוש בהם, ומשחררים אותם מיד אחרי השימוש. ניהול הקשרי התקן לפרקי ומן קצרים הינו טוב ביישומים שאינס משתמשים לעיתים תכופות בהקשר ההתקן. יישום שוקוק לשירותי הקשר ההתקן באופן מתמיד, יכול ליצור חלון עס הקשר ההתקן הפרטי ששייך לו, עלל ידי הגדרת סגנון המחלקה 50/6 855ס) 6סאעס. 65 במחלקת הגדרת החלון. לאחר הגדרת הסגנון 6אצוס. 65, הקשר ההתקן מתקיים למשך החיים של החלון. היישום. ממשיך להשתמש בפונקציה 6606 כדי לקבל ידית להקשר ההתקן, אבל אינו צריךך להשתמש בפונקציה 861685606 לאחר שהוא מסייים את העיבוד בהקשר ההתקן (מכיו. שהקשר ההתקן הינו "פרטייי שלו). כאשר אתה משתמש בהקשר ההתקן הפרטי בתוכניות שמשנות את הערכים המוגדרים בהקשר ההתקן, אתה גורם לשינויים, כמו צבעי טקסט חדשים, עטים, ומברשות. שינויים אלה נשארים בתוקף עד שהתוכנית משנה אותם פעם נוספת. 5 נקודות מוצא ומדידת מרחק יש להקשר ההתקן שני מצבי מיפוי (0/006 פַוקְקָ/). מיוחדים, 16קסהד150 אוו ו-16ק0הד150א8 ו שאינם מוגבלים לגודל קבוע. שני מצבי מיפוי אלה משתמשים. בשני אזורים מלבניים, החלון (ש60חו/ ואזור התצוגה (וזספווסוו), כדי לגזור גורס. דירוג 9000 הָו563). והכוונה (חסטפזחסוזס). החלון מוצג בקואורדינטות לוגיותת (פסהחו00010 0/631)) ואזור התצוגה - בקואורדינטות פיזיות (08165ו6000 |3סופעחק) יחד הם קובעים איך מערכת ההפעלה ממפה יחידות לוגיות (פווח ו109/63) ליחידות. פיזיות (צוחט וגופעחק). הן החלון והן אזור התצוגה מכילים נקודת מוצא (חַפָזס), ערך א טחפואם->) וערך ע 0ח0ואם-+). נקודת המוצא היא נקודה אשר מתארת את אחת. מפינות מלבן התצונה. נקודת המוצא של אזור התצוגה וז זזספווסו) היא היסט 010960, או מרחק יחסי) מנקודת המוצא של החלון 01 אוסמחו/) ; חפַאם-< הוא. המרחק האופקי מנקודת המוצא עד לזווית שממולה; חפפאפ-צ הוא המרחק האנכי מנקודת המוצא עד לוווית שממולה. וסחוו. מגדירה גור דירוג אופקי על ידי חלוקת )חפואס-% של אזור התצוגה ב- 1ח9ז4פ-א של החלון. 0605 מגדירה גורם דירוג אנכי על ידי חלוקת זחסאאם-ץ של אזור התצונה וחפואפ-ץ של החלון. גורמי דירוג אלה מגדירים את מספר היחידות. הלוגיות אשר פאוסחוו ממפה אותס למספר פיקטלים (פאוק). בנוסף לקביעת גורמיי הדירוג, החלון ואזור התצוגה קובעים גם את הכיוון של אובייקט. פרק 6: ממשק התקן גרפי ‏ 131 6 קבלת הקשר התקן אל החלון התוכניות צריכות להשתמש בהקשרי התקן, כדי לבנות תצוגות גרפיקה וטקסט בשני ההתקנים, בהתקן חלון ובהתקן מדפסת. באפשרות התוכניות להשתמש בפונקציה 6 או 661005 כדי להשיג הקשר התקן עבור חלון. הפונקציה 6610054 משיגה את. הידית של הקשר ההתקן לתצוגה (6פ) עבור החלון המוגדר. באפשרות התוכניותת להשתמש בהקשר ההתקן לתצוגה על ידי קריאות עוקבות לפונקציות ממשק התקן גרפי, כדי לצייר בשטח הלקוח. הפונקציה 661065 היא הרחבה לפונקציה 66106 אשר מאפשרת ליישום שליטה רבה יותר על הדרך והזמן לביצוע גזירה (פַק01) בשטח הלקוח. את הפונקציה 61005 כותבים בתוכנית כמו בהגדרה שלהלן )0660 ספ 01 ש1תמת // וו מע פונס 0% 16מתמת // 1 8 מ68610ט0 6אם)מסס-₪108 // פפסאם אס / הפרמטר שח/וח מצהה את החלון שבו יבוצע הציור. הפרמטר פוסְחפָזו מנדיר אזור גזירה חספ הַוקווס) אשר אולי תחבר אותו עם האזור הגראה (חסוּפָפה 0/9006 של. חלון הלקוח. הפרמטר פס מגדיר כיצד היישום יוצר את הקשר ההתקן. הפרמטר 5 יכול להכיל צירוף כלשהו של הערכים שמפורטים בטבלה 6.1> במקרה שהקשר ההתקן לתצוגה אינו שייך למחלקת חלון, היישום חייב לקרוא לפונקציה ₪9/635606 כדי לשחרר את הקשר ההתקן אחרי צביעה. מכיון שרק חמישה. הקשרי התקן משותפים זמינים לתוכניות בכל זמן נתון, כישלון בשחרור הקשר ההתקן יכול למנוע מתוכניות אחרות את הגישה להקשר ההתקן. שתי הפונקציות. 6 ו661200% מחזירות את הקשר ההתקן ששייך למחלקת החלון, אם התוכנית. מגדירה 6145506 65, 6סאטוס 65, או 6סדאפחאק 65 כסגנון במבנה 355 ספאעו כאשר התוכנית רשמה את המחלקה. טבלה 1., + הערכים האפשריים של הפרמטר 55 עוך פירוש צוספאזשו וש | מחזיר את הקשר ההתקן בהתאם למלבן החלון, ולא בהתאם למלבן הלקוח. 6 06% | מחזיר את הקשר ההתקן מהמטמון (0366), ולא מחלון 6פא/ או 61/45506. באופן עקרוני, ערך זה עוקף ודורס (65שוזזאס) את 6פאאעוס. 65 ואת 6 סאק 6% | משתמש באזור הנראה סומח 6ומ/5ו/) של חלו האב. ערך זה מתעלם מסגנונות האב 0110071 5 ההק 05 61005 קובעת את נקודת המוצא של אזור הקשר ההתקן לפינה. העליונה משמאל של החלון המוגדר על ידי חשח. 2 כו ומבוא ל-ספו עוך פירוש 5 א%ס | אינו כולל את האזורים הנראים של כל החלונות. השכנים שמעל לחלון המוגדר על ידי 6חאוח. אפחם 011801 6% | אינו כולל את האזורים הנראים של כל חלונות הבן שמתחת לחלון המוגדר על ידי חח דה דט5פאסא 0% | אינו מאפס את המאפיינים של הקשר התקן זה. למאפייני ברירת המחדל, כאשר התוכנית משחררת. הקשר התקן זה. פד סקטשוסס 1.0061 6% | מאפשר לתוכנית ולמשתמש לצייר בהקשר ההתקן, אפילו אם יש קריאה ל-0306ק00106000 1 אחרת, הדבר יכול לגרום להוצאת חלון זה. משתמשים בערך זה כדי לאפשר לתוכניות לצייר בומן פעולת עקיבה (ח61300ק0 הזד א6אספט סא 06% | אינו כולל את אזור הגזירה שמוגדר על ידי טח מהאזור הנראה של הקשר ההתקן. שמוחזר על ידי א661065. א6חד556המדאן 6% | חיתוך 9900וטוח1) אזור הגזירה שמוגדר על ידי ססות עם האזור הנראה של הקשר ההתקן. שמוחזר על ידי 66:065%. =דאפד ו 90% | כאשר ערך וה מוגדר עם. פזהסקד768550א1 6%פ, הדבר גורם להקשר ההתקן שמוחזר על ידי 661005 להיות זמין בשלמותו. השימוש בפונקציה זאת יחד עם פדהסקטד550 המדא 0% ו-8דאס1ואע 6% והה לשימוש בפונקציה לחומ כדי להבין יותר טוב את פעולת הפונקציה 660005%, התבונן בתוכנית ווסו01 .שומזם, שבתקליטור המצורף לספר זה (בתיקיה 003006). התוכנית משתמשת בפונקציה 661005 כדי להשיג את הקשר ההתקן לשטח הלקוח של החלון, חוץ מאזור מסוים. התוכנית מציירת אחר כך מלבן אפור בשטח הלקוח, ללא האזור הפנימי (הלב. 7 יצירת הקשר התקן למדפסת התוכניות צריכות להשתמש בהקשרי התקן כדי לציור פלט בהתקן. בעוד שיש ל-00%%5חו/ הקשרי התקן מובנים (פרטי או ציבורי, וזה או סוופטפ), להתקני פלט. אחרים אין הקשרים קיימים. על התוכניות להשתמש בפונקציה 67630606 כדי ליצורר הקשר התקן אל ההתקן ושימוש בשם שמוגדר על ידי המתכנת. את הפונקציה 6 כותבים בתוכנית כפי שמוצג להלן. פרק 6: ממשק התקן גרפי = 133 פוט 188 60 צשסמנסק //‏ ,פשט20:1פק1 אעפע0ק1 שחפם 451065 הַמ1ע6615ק5 // 18 60 צשסמנסק //‏ ,152060106 אעפצסק1 שחפם 860106 המ1ע9 01 0ס5 // תפטא %0 865 ;שפט מס 80 //‏ ,סטמסמ20פק1 תצפפסק1 80 שש סמ1סק // פסס0עעשס עפאסס. 854 צששמבפם // הפונקציה 6631906 מקבלת את הפרמטרים שמפורטים בטבלה 4.2 טבלה 6.2: הפרמטרים של הפונקציה 681600ז0. פרמטר | תיאור זשוזסקפקו | *ישומים שנכתבו עבור גרסאות קודמות של פאוסחוו משתמשים. בפרמטר וה, כדי להגדיר את שם הקובץ (בלי סיומת) של מנחל ההתקן. ב- א9 00005חו// ויישומים מבוססי 32חו+, 01031906 . מתעלמת מפרמטר זה, שצריך להיות 1א, עס יוצא מן הכלל: אולר תרצה להשיג הקשר התקן לתצוגה על ידי הגדרת המחרוזת +15%/4ס. המסתיימת ב-+טו1. כאשר פרמטר זה שווה א 01501, כל שאר הפרמטרים חייבים להיות +שא!. בסביבת א 5ו00חו/א, הפרמטר. ז6שוז20פק! מצביע למחרוות תווים המסתיימת ב-1א אשר מגדירה .0159 עבור מנהל תצוגה, או שם מנהל התקן מדפסת, שבדרך כלל. הוא סקאז 0966:פקו | מצביע למחרוות תווים המסתיימת ב-1)א שמגדירה את שם התקן הפלט המסוים שהתוכנית משתמשת בו. מנהל ההדפסה מראה את שם. התקן הפלט, כמו לדוגמה ''80-! חספפם", שהינו שם פנימי שלל 5 ולא בהכרח שס סוג המדפסת. אתה חייב להשתמש. בפרמטר 5206665 סטס2פקן | וסחוי מתעלמת מפרמטר זה. אל תשתמש בו ביושומי לח יישומים מבוססי בוו צריכים להציב בפרמטר זה את הערך +שא, מכיון ש-אופזט20פק! קיים כדי לספק תאימות עם יישומים שנכתבו עבור גרסאות מוקדמות של פס0חוו/. בופאחזקן | מצביע למבנה מסוג פססוא/6ס שמכיל עבור מנהל ההתקן נתונר אתחול ייחודיים להתקן. הפונקציה 665ז6קסזפוחסוחטססם מקבלת. מבנה וה וממלאת אותו בהתאם להתקן המוגדר. הפרמטר ז8פאוחזקו חייב להיות 011)! אם מנהל ההתקן משתמש באתחול ברירת המחדל. (אם ישנה), שמוגדר על ידי המשתמש. 4 הכפהו ומבוא ל-ספו אס הפונקציה 003906 מצליחה, הערך המוחזר הוא ידית להקשר התקן עבור ההתקן המוגדר, אס 61630906 נכשלת, הערך המוחזר הוא 11שא. כמו שראית בטבלה 6.2, הפונקציה 61631906 מצפה בפרמטר האחרון שלה למצביע למבנה מסוג 08005 אשר מכיל עבור מנהל ההתקן את נתוני האתחול הייחודיים. להתקן. 1 32חו מגדירה את המבנה פססוועפפ כפי שמוצג להלן 7 321 0 0 0 --] סח --] ו --] 0 --] ו פפסוום 0 6 סח ספ 0 ספ 0 6 6 ספ ו ספ 0 ספ 0 6 ו ספ ו 6 0 6 ה ספ 0 ספ 2 [32] מ ספת 0 0 --] 0 ] 0 פפסוום 0 פפסוום 81 קפ בח פפסוום 81 סח פפסוום פפסוחופם [ מבנה הנתונים 08/0 מכיל מידע על אתחול ההתקן וסביבת העבודה של המדפסת. פרק 6: ממשק התקן גרפי ‏ 135 טבלה 6.3 מפרטת את האיבריס של מבנה הנתוניס טסו וט. טבלה 6.3: איברי המבנה שססויועטס. איבר תיאור 0006036 | מגדיר את שם ההתקן שמנהל ההתקן תומך בו (לדוגמה,, 13567380 ק4ו/ [סקיי במקרה של "1356726% קוו/ 61ק). מחרוזת זאת היא מיוחדת בין מנהלי ההתקנים. חסופז0/6פק5וח0 | מגדיר את מספר הגירסה של תיאור נתוני האתחול. שמבוסס עליהם מבנה הקשר ההתקן. ח0פזט/ושאוו0וח0 | מגדיר את מספר גרסת מנהל ההתקן של המדפסת, אשר מוגדר על ידי מפתח מנהל ההתקן. ו | מגדיר את הגודל, בבתים, של המבנה 28/08%%0. אם יישוס. מנהל רק את חלק הנתונים העצמאי של מנהל ההתקן, באפשרות היישום להשתמש באיבר זה כדי לקבוע את אורך. המבנה מבלי שיצטרך להתחשב בגרסאות שונות. 3פזסשזסחו | מכיל את מספר הבתים לנתונים פרטיים של מנהל ההתקן. אשר עוקבים למבנה 08/080. אס מנהל ההתקן אינר משתמש במידע ייחודי להתקן, קבע ערך וה לאפט. 5 | מגדיר אוה מהאיברים שנשארו במבנה 88/0 אותחל. כבר. סיבית אפס (מוגדרת כ-א4110דא16ה0. אפ) מתאיימה ל-חסוזחס:ז0ח0; יבית 1 (מוגדרת כ-176פהסקאק אפ), אשר מגדירה את 6ק5זסלוח0, וכך הלאה. מנהל התקן המדפסת תומך רק באיברים שמתאימים לטכנולוגיית המדפסת. !00/6 | בוחר את כיוון הדף. איבר זה יכול להיות ערך אחד משני הערכים הבאים: (1) זז4חדהסק דאפזהסום (לאורך), אר (2) 35675 דאפנהסואטס (לרוחב). לח | בוחר את גודל הדף להדפסה. אפשר לקבוע איבר זה לאפס, אס רוחב הדף ואורכו נקבעים על ידי האיברים. סח וזסקסקוח6 ו-ה:6!/)סקלוחט. אחזרת, באפשרותך. לקבוע את האיבר 0730615426 לאחד מרשימת הערכים. המובנים שמפורטים בטבלה 6.4. ףחס וקקוח | עוקף את אורך הדף שמוגדר על ידי האיבר קלחו עבור גודל דף שמותאם אישית או עבור התקנים, כמו מדפסות סיכות, שיכולות להדפיס על דף שאורכו אינו מוגבל. ערך זה, יחד עם שאר הערכים שבמבנה זה אשר מגדירים אורך פיוי, הס ביחידות של עשירית המילימטר. 6 כו ומבוא ל-ספו איבר ל - ב 0 ו 0 ו ב תיאור עוקף את רוחב הדף שמוגדר על ידי האיבר 506זקפקחח0. מגדיר את הגורס שבו המבנה 09/0610 מדרג (503/5) את הפלט המודפס. איבר זה מדרג את גודל הדף המודפס ביחס. לגודל הפיזי של הדף, ביחס של 60563/6/100. לדוגמה, גודל דף קווארטו (6061-5086) עם ערך 6015636 ששווה ל- 50. מכיל נתונים כמו דף בגודל 17822 אוני (כ- 43856 סי'מ), מפני שפלט הטקסט והגרפיקה יהיו במחצית האורך והרוחב המקוריים שלהם. בוחר את מספר ההעתקים שיודפסו אס ההתקן תומך. בריבוי העתקים. שמור - חייב להיות אפס. מגדיר את הרוולוציה של המדפסת. יש ארבעה ערכים. מובנים שאינס תלויים בהתקן זו ו טושפו פוא דא תס שחו אס איבר זה מכיל ערך חיובי שאינו קבוע טחפזפחס6-חסא!), אז הערך מגדיר את מספר הנקודות לאינץי (1קס = ז6ק פזסם. 6ח]) ולכן הופך לתלוי בהתקן. בחירה בין הדפטה בצבע לבין הדפסה בצבע אחד במדפסות. צבע. הערכים שלהלן הם ערכים אפשריים לפרמטר זה 8 ב בוחר הדפסה דו-צידית אוטומטית (אפוקטפ), או הדפסה. דו-צידית רגילה (5/066 וטטסס, עס הפיכה ידנית של. הנייר), עבור מדפסות שיכולות להדפיס בשיטת אפוטם: הערכים שלהלן אפשריים לפרמטר זה. ואפ קטפואם ו אדאוס?זהסוא .טפוס דט קטסום. מגדיר רזולוציית ציר + (חסטט8690-) של המדפסת. בנקודות לאינץ'. אס המדפסת מאתחלת איבר זה, האיבר עזוובטס!חחקוח6 מגדיר את רזולוציית ציר א (חס00שו8690-). של המדפסת, בנקודות לאנ. פרק 6: ממשק התקן גרפי | 137 איבר ו ] ו ו 3 ו פוסהזם. תיאור מגדיר איך המדפסת צריכה להדפיס גופני "ספץדסחד. איבר ה יכול להכיל אחד מהערכים שלהלן קאויודזם דדויום מדפיס גופני 6קץדטטזד כגרפוקה. צוהר פעולת ברירת המחדל במדפסות סיכות. סאסואעוסם -דדואוס גופני סקדטטזד נטענים כגופניס רכים. (פוחס? 508%). אוהי פעולת ברירת המחדל במדפסות. היולט-פקרד (756316 +661) אשר משתמשות בשפת. הבקרה למדפסת - 1 13 (סשחסם זסוחוזק) 50808 דוס מחליף הגופנים של ההתקן לגופני 6 טזד. ווהי פעולת ברירת המחדל במדפסות. סק מגדיר אס המדפסת צריכה להשתמש באיסוף עותקים,, כאשר מדפיסים עותקים רבים. השימוש. ב-8)56= 0601/16 מאפשר מהירות גבוהה ופלט ועיל. יותר, מכיון שהנתונים נשלחים למדפסת רק פעם אחת. עבור כל דף מודפס, ללא תלות במספר העותקים הנדרש. התוכנית שולחת את הדף למדפסת ומציינת את מספר. הפעמים שדרוש להדפיסו. האאיבר 000/86 יכול להיות. אחד מהערכים שלהלן. פטחד פד/) סאפ - איסוף כאשר מדפיסים העתקים. רבים. 6 פד 1 וססויוס - ללא איסוף, כאשר מודפסים. העתקים רבים. מגדיר את השם של התבנית (וחזס") שצריך להשתמש בה (לדוגמה, מכתב רגיל או מכתב רשמי). אפשר לקבל קבוצה שלמה של שמות באמצעות הפונקציה פוחזס*וזטחט של. ב מיישר את המבנה לגבול מילה כפולה (סהסטום). אינך צריך. להשתמש באיבר זה או לחתייחס אליו. מיקרוסופט שומרת. את השם והשימוש שלו, והדבר עלול להשתנות בגירסואת. עתידיות של פאוסחו/ו. מגדיר בסיביות לפיקסל את רזולוציית הצבע של התקן. התצוגה. לדוגמה, 4 סיביות עבור 16 צבעים, 8 סיביות עבור 6 צבעים, או 16 סיביות עבור 65536 צבעים. מגדיר את הרוחב, בפיקסלים, של משטח ההתקן הנראה. 8 :כו ומבוא ל-ספו איבר תיאור 0 1 תת מגדיר את הגובה, בפיקסלים, של משטח ההתקן הנראה. מגדיר את מצב התצוגה של ההתקן. הערכים שלהלן הם. דגלים תקפים עבור האיבר 905ץ3וקפוסוח. 65086 0 מגדיר שהתצוגה אינה התקן צבעוני. אם. לא קובעים דגל זה, התוכנית מניחה צבע. 050 ודא אס מגדיר מצב תצוגה בדילוג (06118086ח1. אם לא קובעים דגל וה, התוכנית מניחה שמצב התצוגה. הוא תצוגה בסריקה רציפה (9112666ז10. חסא). מגדיר את התדירות, בהר (מחזורים לשנייה), של התקן. התצוגה במצב עבודה מסוים. כמו שמפורט בטבלה 6.3, הפרמטר 603061508 מקבל קבועים מובנים שמתאימים לגודלי נייר נפוצים ובינלאומייס. טבלה 6.4 מפרטת חלק מגודלי הנייר המקובלים. טבלה 6.6: ערכים מקובלים לגודל הנייר. ערך דד | אשקאקוום 56| אפקהקוום. 4 אשקהקוום 08| השקאקוום דודה ד 5‏ השקה קואם. דא .שקה קום סצוסי ‏ מפקאקוום סדחהטס. משקהקוום. 7 שקה קוו 0 שא אסקאקואם 5 וסיאה: .אסקאקואם 69 .161 0 וסיותה= ‏ אסקהקואם גודל הנייר מכתב (601., 1/2 8 א 11 אונש ליגאל (0.6080, 1/2 8 א 14 אונש גיליון 84, 210 % 297 מילימטר א 11 וני הו5, 1/2 5 א 1/2 8 וני 0 1/4 7 א 1/2 10 אונ" פוליו (סווספ), 1/2 8 א 13 אונאי קווארטו (פזו), 215 א 275 מילימטר. גיליון 11 א 17 אנ מעטפות 810, 1/8 4 א 1/2 9 אונש טחמ 50 05, 7/8 18 א 11 אונ" ליגאל גרמני 0סחפ>, 1/2 8 א 13 וני פרק 6: ממשק התקן גרפי 139 הנתונים הפרטיים של מנהל ההתקן עוקבים אחרי האיבר %066ץ9וק8וסוז4. האיבר 3זפזסאוסוח מגדיר את מספר הבתים של נתונים פרטיים. היישומים שנכתבו עבור גרסאות קודמות של פווסשחוו משתמשים בפרמטר זטקט0?פפ! כדי להגדיר שם יציאה, או להדפיס לקובץ. היישומים מבוסטי 32חו אינם צריכים להגדיר שם יציאה היישומים מבוססי חואו יכולים להדפיס לקובץ על ידי קריאה לפונקציה 580006 עם המבנה 0061%%0, אשר הפרמטר 152000 שלו מגדיר את המסלול של שם קוב הפלט. כאשר אינך צריך יותר את הקשר ההתקן, קרא לפונקציה 0660606 למחוק אותו. כדי להבין יותר טוב את פעולת הפונקציה 61630606, התבונן בתוכנית ₪416 -חוז, שבתקליטור המצורף לספר זה (בתיקיה 3006ח8006559285). התוכנית מדפיסה שורה אחת של טקסט במדפסת, כאשר המשתמש בוחר באפשרות !16% מהתפריט. 06 יוצרת את הקשר ההתקן למדפסת. כמו שכתוב בקוד שבתקליטור, שם המדפסת הוא ''55-680 8זספס/א'", אבל באפשרותך לשנות אותו, כדי שיתאים למנהל ההתקן שנמצא במערכת שלך. תוכל להשתמש בפונקציה פוסוחוזוחטחם כדי לקבוע את. שם המדפסת שהתקנת במחשב שלך. הפונקציה 06זק6חא מכילה את הקוד המעשי שמטפל במשימות של התוכנית ₪16 )חוזם. 8 36603606 - יצירת הקשר התקן בזיכרון בסעיפים קודמים למדת שאפשר להשתמש בהקשרי התקן בתוכניות כדי לייצר פלט. לתצוגה ולמדפסות. עם זאת, התוכניות אינן יכולות לצייר ישר לתוך הקשר ההתקן. הפונקציה 0/03166010800/606. יוצרת הקשר התקן בזיכרון אשר מתאים להתקן שצוין. לפני שיישו יכול להשתמש בהקשר התקן בזיכרון לפעולות ציור, אתה חייב לבחור מפת סיביות (קגחשו8) ברוחב ובגובה הנכונים בתוך הקשר ההתקן. אחרי בחירת מפת סיביות, באפשרותך להשתמש בהקשר ההתקן כדי להכין דמויות שתתוכנית תעתיק אל המסך או המדפסת. בכל פעם שהתוכניות עובדות עם מפות. סיביות (אשר תלמד עליהן בסעיפים הבאים), התוכנית ממקמת תחילה את מפת הסיביות בהקשר התקן בזיכרון ואחר כך מעתיקה אותה אל הקשר התקן מסוים. את. הפונקציה 806ו10800ח61080660 כותבים בתוכנית כפי שמוצג להלן (0 1 80 00011600 6 עס ספ הפרמטר 66ו! מוהה את הקשר ההתקן. אס הידית ₪66 שווה -1טו,. הפונקציה 90 יוצרת הקשר התקן בזיכרון שמתאים למסך הנוכחי של היישום. אם הפונקציה 80/606ק0931660 מצליחה, הערך המוחזר הוא ידית להקשר התקן. בזיכרון ; ואס 800/606ק0306000ז6 נכשלת, הערך המוחזר הוא טא אפשר להשתמש בפונקציה 00300/606ח01030600 רק עם התקנים שתומכים בפעולות. רשת 30009ז6ק0 8597). היישום יכול לקבוע אס ההתקן תומך בפעולות רשת על ידי קריאה לפונקציה 661060690305. כאשר אין צורך יותר בהקשר ההתקן שבזיכרון, צריך לקרוא לפונקציה 09/6/06 כדי למחוק אותו. 0 הכפהו ומבוא ל-ספו כדי להביץ יותר טוב את פעולת הפונקציה 369/626ק0163/5600, התבונן בתוכנית. 8וט/8 עשמזם, שבתקליטור המצורף לספר וה (בתיקיה 608006). התוכנית טוענת. מפת סיביות וממקמת אותה בהקשר ההתקן שבניכרון, ואחר כך מעתיקה אותה לשטח הלקוח של החלון. כרגיל, הפונקציה 0060106 מכילה את הקוד המעשי של התוכנית ק8וח/8. ואמזם. 9 אחזור יכולות ההתקן התוכניות משתמשות בהקשר התקן כדי לנהל טקסט וגרפיקה ביישומים שלך לשתי מטרות, לתצוגה על המסך ועבור פלט להתקנים, כמו מדפסות או תוויינים (פזפוסוק). כאשר התוכנית חייבת להפיק פלט למדפסת או תוויין, ייה דרוש לנו מידע על יכולות. ההתקן לפני שנשלח אליו את הפלט. משתמשים בפונקציה 661060/690305 כדי לקבל. את המידע הייחודי אודות ההתקן המוגדר. את הפונקציה 66106/090305 כותבים כמ בהגדרה שלהלן. (א66תתת %ה1 ,46 ספא 050691660828 שג הפרמטר ₪66 מוהה את הקשר ההתקן. הפרמטר א66ח1ח מזהה את הפריט שצריך להחזיר. הפרמטר 06חזח יכול להיות אחד הערכים שמפורטים בטבלה 6.5. טבלה 6.5: ערכים אפשריים של הפרמטר <66ה1ח. אינדקס (או מפתח) | פירוש הפ הפשח | גרסת מנהל ההתקן. +06 אספד | הטכנולוגיה של ההתקן; יכולה להיות כל ערך מהערכים. שמפורטים בטבלה 6.6 25 | רוחב, במילימטרים, של המסך הפווי 8 | גובה, במילימטרים, של המסך הפוגי. 0255 | רוחב, בפיקסלים, של המסך. 5 | גובה, בקווי רשת, של המסך. 815%א10601 | מספר הפיקסלים בכל איינץי לוגי לרוחב המסך. 106010615 | מספר הפיקסלים בכל אינץ' לוגי לגובה המסך. מאזק5דז8 | מספר סיביות הצבעים הסמוכים עבור כל פיקסל. 85 | מספר מישורי הצבע. 5 | מספר המברשות בהתקן המסוים. פאשקויוטו | מספר העטיס בהתקן המסוים. פרק 6: ממשק התקן גרפי ‏ 141 אינדקס (או מפתח) פדס וטו ב קפ קפ קפ בב ב ב ספעהספפמווטא ב 10 פירוש מספר הגופניס בהתקן המסוים. מספר הכניסות בטבלת הצבעים של ההתקן, אס יש להתקן. עומק צבע (ח6901 זסוסס) של לא יותר מ- 8 סיביות לכל. פיקסל. עבור התקנים עם עומק צבע יותר גדול, 0 מחצירה 1-. רוחב יחסי של פיקסל ההתקן, שההתקן משתמש בו לציור קווום. גובה יחסי של פיקסל ההתקן, שההתקן משתמש בו לציור קווים. רוחב האלכסון של פיקסל ההתקן, שההתקן משתמש בו לציור קווים שמור. דגל אשר מציין את יכולות הגזירה של ההתקן. אם ההתקן. יכול לגזור למלבן, ערך הפרמטר הוא 1; אחרת, ערכר לאפס. מספר הכניסות בלוח הצבעים (86006ק) של המערכת. אינדקס זה תקף רק אס מנהל ההתקן מדליק את הסיבית. שדדפ )אק ₪6 באינדקס 851880%05, והוא דמין רק אם מנהל ההתקן תואם את גרסת 9% 605חו/ ומעלה. מספר הכניסות השמורות בלוח הצבעים של המערכת. אינדקס וה תקף רק אאם מנהל ההתקן מדליק את הסיבית. פדד6 אק ₪6 באינדקס 851580305, והוא זמין רק אם: מנהל ההתקן תואם א9 0005חוו ומעלה. רוולוציית הצבע הממשית של ההתקן, בסיביות לפיקסל. אינדקס וה תקף רק אאם מנהל ההתקן מדליק את הסיבית. פדדש אק ₪6 באינדקס 851580305, והוא זמין רק אם: מנהל ההתקן תואס 00%5חו/+ גירסה 9% ומעלה. עבור התקני ההדפסה, זהו רוחב הדף הפיצי, ביחידות. התקן. לדוגמה, למדפסת שהגדרותיה נקבעו להדפסה ב- ופ6000 בדף שגודלו 11 א 8.5 אינץ', יש רוחב פיזי של 0 יחידות התקן. שים לב לכך שהדף הפיוי כמעט תמיד גדול משטח ההדפסה שעל פניו, ולעולם אינו קטן ממנר 2 כו ומבוא ל-ספו אינדקס (או מפתח) 10 ב בב ב ב בי פירוש עבור התקני ההדפסה, והו גובה הדף הפוזי, ביחידות. ההתקן. לדוגמה, מדפסת שהגדרותיה נקבעו להדפסה ב- ופ6000 בדף שגודלו 11 א 8.5 אינץ', יש גובה פיוי של. 0 יחידות התקן. שים לב לכך שהדף הפיזי כמעט תמיד. גדול משטח ההדפסה שעל פניו, ולעולם אינו קטן ממנר עבור התקני ההדפסה, המרחק ביחידות התקן מהשפה. השמאלית של הדף הפוזי עד לשפה השמאלית של שטח. ההדפסה. לדוגמה, מדפסת שהגדרותיה נקבעו להדפסה ב- 60060 בדף שגודלו 11 א 8.5 אינץ', ואשר אינה יכולה. להדפיס במרווח 0.25 האינץ' שבצדו השמאלי ביותר של. הדף, יש היסט 0560, או מרחק יחסי) פיזי אופקי של 150 יחידות התקן. עבור התקני ההדפסה, המרחק ביחידות התקן מהשפה. העליונה של הדף הפיצי עד לשפה העליונה של שטח ההדפסה. לדוגמה, מדפסת שהגדרותיה נקבעו להדפסה ב- 60060 בדף שגודלו 11 א 8.5 אינץ', ואשר אינה יכולה. להדפיס במרווח 0.5 האינץ' העליון של הדף, יש היסט. 80!ו0, או מרחק יחסי) פיי אנכי של 300 יחידות התקן. עבור התקני תצוגה, תחת זא! פאאס0חו/צ, הו קצב הרענון האנכי הנוכחי של ההתקן, במחזורים לשנייה (2ו). קצב רענון אנכי של 0 או 1 מייצג את ברירת המחדל של קצב. רענון ומרת התצוגה (050ז₪61 06106 148760816% עוספום. 6. ערך ברירת מחדל זה נקבע בדרך כלל על ידי מתגים. שעל כרטיס התצוגה או על לוח האם של המחשב, או על ידי תוכנית תצורה, שאינה משתמשת בפונקציות התצוגה של 2, כמ לדוגמה חַו5/בספוְספַח. רוחב, בפיקסלים, של שולחן העבודה הווירטואלי (וגטטזו/. 20900), רק תחת דא %5סחוא. ערך צה יכול להיות גדול. מ-4087885! כאשר ההתקן תומך בשולחן עבודה וירטואלי או בתצוגות מרובות. גובה, בפיקסלים, של שולחן העבודה הווירטואלי וזו ק2690), רק תחת דא 0%5חו. ערך צה יכול להיות גדול. מ-8818585 כאשר ההתקן תומך בשולחן עבודה וירטואלו, או בתצוגות מרובות. פרק 6: ממשק התקן גרפי | 143 אינדקס (או מפתח) ואו דוט בינ בי בוו בי ו בטבלה 6.5 ניתן לראות. פירוש היישור המועדף של ההתקן עבור ציור אופקי, מיוצג על ידי פיקסלים רבים, רק תחת א 60%5חו. עבור ביצועי ציורר טובים, התוכניות צריכות ליישר חלונות אופקית לפ כפולות של ערך זה. ערך אפס מציין שלש ל-60/5ח/ו גישה מואצת להתקן, והקשרי התקן של ההתקן הזה יכולים. להשתמש ביישור כלשהו ערך אשר מציין את יכולות הרשת או הסריקה (זפפה 65טו//03080) של ההתקן, כמו שמפורט בטבלה 6.7. ערך אשר מציין את יכולות העקומה (690801/665 6 של ההתקן, כמו שמפורט בטבלה 6.8. ערך אשר מציין את יכולות הקו (038011065 6חו) של. ההתקן, כמו שמפורט בטבלה 6.9. ערך אשר מציין את יכולות הפוליגון (0801065מ) סוק של ההתקן, כמו שמפורט בטבלה 6.10. ערך אשר מציין את יכולות הטקסט 63 ז6%ד) של. ההתקן, כמו שמפורט בטבלה 6.11. שאם התוכנית דורשת מההתקן את טכנולוגיית מנהל ההתקןן, הקריאה ל-66106/690305 מחזירה אחד מערכי הדגלים שמפורטים בטבלה 6.> טבלה 6.6: ערכי הדגלים המוחזרים עבור סוגים אפשריים של טכנולוגיית מנהלי התקן. עוך סק ד אפ זספאא ד קפ ד 50 ד וס ד ש וזא דט ד קז ד פירוש תוויין ווקטורי (ז6וסופ 600 צג רשת / סריקה (ץוקפוס זפ מדפטת רשת / סריקה (זפוחוזק 5 מצלמת רשת / סריקה (זפוחוזק זפ רצף תווים (5090 ז616זהו0) קובץ-על (161306!, או קובץ 61306 קוב תצוגה (6/₪ וספ 4 זא32חווו ומבוא ל-ספו חשוב לשים לב לכך שאם הפרמטר 706 מוהה את הקשר ההתקן של קובץ-על משופר 161986 6פסחהחחם), טכנולוגיית ההתקן תהיה ו של ההתקן שהתייחסנו אליו קודם. כשנמסר לפונקציה 6386חחפ31פזס. כדי לקבוע אס ההקשר הוא הקשר התקן של קובץ-על משופר, צריך להשתמש בפונקציה 6ק6609/6011. לבסוף, אס התוכנית חייבת לזהות את תכונות הרשת של ההתקן שדנים בו, הקריאה ל-60106/090305 תכלול את הקבוע 8/451886305. כאשר התוכנית דורשת את תכונות. הרשת של התקן, הערך המוחזר של הפונקציה הוא ערך אחד או יותר מאלה המפורטים בטבלה 6.7. טבלה 6.7: הערכים האפשריים המוחזרים עבור הדרישה 5188085 א. יכולת. פירוש 6אזפאאהם ₪6 | דורש תמיכת פס (0זסקקט5 הַו0ח89) דופדזם ₪6 | יכול להעביר מפות סיביותת 4 ₪6 | יכול לתמוך במפות סיביות שגדולות מ- 646 קהואדז ז. ₪6 | יכול לתמוך בפונקציות 56101800 ו-66/018//5. שמססדפנם ₪6 | יכול לתמוך בפונקציה 561018//91006/65 1001 ₪6 | יכול לבצע מילוי צבע לפי אלגוריתס |0008 דטפדטס 60120 ₪6 | יכול לתמוך בעצמים של אפ פאוס0חוצ שדדפ )אק ₪6 | מגדיר לוח צבעים מבוסס התקן 56 86 | יכול לדרג (563106 01 63756 ) םוד הד5 ₪6 | יכול להפעיל את הפונקציה ז/6%08זו5 פטס דפ הד5 ₪6 | יכול להפעיל את הפונקציה זוז חס/ 5 בנוסף למידע הדרוש לתוכניות על יכולת הרישות של ההתקן 63 הַוסה), הן צריכות לעיתים קרובות מידע אודות יכולת ההתקן לצייר ולהפיק פלט בצורת עקומות (פזט0 6ש/וס). באפשרותך לבדוק את יכולת ציור העקומות בעת הצגת הדרישה 008086805. הדרישה 60880805 מחזירה ערך אחד או יותר מהערכים שמפורטים בטבלה 6.8. פרק 6: ממשק התקן גרפי | 145 טבלה 6.8: הערכים המוחזרים כתוצאה מהקריאה ל-65ע0₪. ערך פירוש שאסא 66 | ההתקן אינו תומך בעקומות. 5 06 | ההתקן יכול לצויר מעגלים. פזק 66 | ההתקן יכול לצייר פרוסות עוגה (9065/ 046 000 66 | ההתקן יכול לצייר מקטע אליפטי 86 00086 5 06 | ההתקן יכול לצייר אליפסות שפנו 66 | ההתקן יכול לצייר גבולות רחבים (6615ז80 0006 0 /ד5 06 | ההתקן יכול לצייר גבולות עס סגנון (80766:5 50//66) סםדפםס1/ו. 66 | ההתקן יכול לצייר גבולות רחבים ועם סגנוך 5 660 | ההתקן יכול לצייר פנים (זסוזטוח1. דפהסאטסה 06 | ההתקן יכול לצייר מלבנים מעוגלים (65פַח₪613 666חנוס) להתקן יכולות להיות אפשרויות ציור של עקומות, או שאינו יכול לעשות ואת. למרבית. ההתקנים יש גם יכולות ציור קווים מסוימות. באפשרות התוכניות לבדוק את יכולות. הציור של קווים עם הקריאה 11880405. טבלה 6.9 מפרטת את הערכים האפשריים המוחורים כתוצאה מהדרישה 41886405 טבלה 6.9: הערכים המוחזרים כתוצאה מהקריאה 11886875 ערך פירוש פווסא .16 | ההתקן אינו תומך בציור קוויס 5אז סק 16 | ההתקן יכול לצייר מצולע (פחזוץוסק) האוא 16 | ההתקן יכול לצייר סימן (31861/) אפאה סק 1 | ההתקן יכול לצייר סימנים רבים 1916615 6וטוט1. 8 16 | ההתקן יכול לצייר קווים רחבים. ספ 5 16 | ההתקן יכול לצייר קווים עס סגנון ספ דפפס1/ו 16 | ההתקן יכול לצייר קוויס רחבים ועם סגנון 105 פאז 16 | ההתקן יכול לצייר פגים (זספזח1. בנוסף למידע על יכולת ההתקן לצייר קווים ומעגלים, התוכנית דורשת במקרים רבים. לדעת על יכולת ההתקן לצייר מצולעים (ּחִסְָעו0ק) ובהם מלבנים, טרפזים וכדומה. באפשרותך לבדוק את יכולות ההתקן לעשות זאת, על ידי שימוש ב-00146081.0805, אשר מחזירה ערך אחד או יותר מהערכים שמפורטים בטבלה 6.10 6 כו ומבוא ל-ספו טבלה 6.10: הערכים האפשריים המוחזרים כתוצאה מהקריאה ל-01+608816805. עוך סא 6 סק 6 6 סקאז 6 50 6 סנו 6 פופ סק פ הסנו 6 6 1 פירוש ההתקן אינו תומך במצולעים. ההתקן יכול לצייר מצולעים ממולאים חילופית סוק /ה-318חזס6/). כלומר, 5ו00חו/ו ממלאת רק. את שטחי הפנים שאפשר להגיע אליהם מחוץ לצורה עלל ידי חציית מספר אי-זוגי של גבולות. התבונן בתרשים 6.2. ההתקן יכול לצייר מלבנים. ההתקן יכול לצייר מצולעים שכל שטחי הפנים שלהם. ממולאים סוסל ו/-06ו6ח₪//). התבונן בתרשים 6.2. ההתקן יכול לצייר קוו יחיד מדורג ההתקן יכול לצייר גבולות רחבים. ההתקן יכול לצייר גבולות עם סגנון. ההתקן יכול לצייר גבולות רחבים ועם סגנון ההתקן יכול לצייר פנים (ז00זטוח1. ב ב תרשים 6.2: מילוי הפולוגון לפי 816ח01)/א ולפי הוחו לבסוף, פעמים רבות התוכנית דורשת מידע על יכולות תצוגת הטקסט של ההתקן: באפשרות התוכניות לבדוק את יכולות תצוגת הטקסט של ההתקן על ידי קריאה לפונקציה 6600305 ע הפרמטר 18070805. פרמטר זה מייצג ערך המציין את יכולות תצוגת הטקסט. ראה טבלה 6.11 פרק 6: ממשק התקן גרפי ‏ 147 טבלה 6.11: הערכים האפשריים המוחורים כתוצאה מהקריאה ל-65דאפד. עוך פירוש 1/8 0 ד | יש להתקן יכולת דיוק של פלט תווי (605000זק )קט 730191 ת0). ד קס 6ד | יש להתקן יכולת דיוק של פלט תווי (0ופ0סזק קט 507086 5 0 6ד | יש להתקן יכולת דיוק של גזירה תווית. (חסופו6זק כו 5008 0 6 6ד | ההתקן יכול לסוב את התו ב- 90 מעלות. אאא 68 6ד | ההתקן יכול לסוב כל תור קפסאז א 5 6ד | ההתקן יכול לדרג בצורה נפרדת לאורך ציר + ולאורך ציר ץ. פוטס א5 6ד | להתקן יכולת דירוג של תווים כפולים. דא א5 6ד | ההתקן משתמש בכפולות של מספרים שלמים בלבד. לדורוג תווים. אזדווס6 54 6ד | ההתקן משתמש בכל כפולה שהיא לדירוג מדויק של התו. 5 ₪ סד | ההתקן יכול לצייר תווים בעלי משקל כפולל (הדגשה/עובי). שופ 1 6ד | ההתקן יכול להטות תווים. 5 אנ 6ד | ההתקן יכול לשלב קו תחתון. = 50 6ד | ההתקן יכול לצייר קוויס חוצים. 5 ₪ 6ד | ההתקן יכול לצייר גופני רשת (ח0: 80506 6 אש 6ד | ההתקן יכול לצייר גופני ווקטור (חס: ז600/) 555880 6ד | שמור; חייב להיות אפס. 5680 6ד | ההתקן אינו יכול לגלול על ידי שימוש בהעברת בלוק. סיביות (1305660ד 8-806%). כדי להבין יותר טוב את פעולת הפונקציה 66)009/000905, התבונן בתוכנית 6 66%, שבתקליטור המצורף לספר זה (06ַ0). התוכנית משתמשת בפונקציה. 6 כדי ליצור הקשר מידע למסך. התוכנית 646 666 משתמשת בהקשר שנוצר, כדי למצוא מספר הסיביות לפיקסל ומספר מישורי הצבע עבור הצג. התוכנית. 6 66% משתמשת ב-66106/6000905 כדי לעשות כל החלטה. הקוד שמבצע את העיבוד המעשי, נמצא כמו תמיד בפונקציה 6זקנחאו. 8 71א32חו ומבוא ל-ספו 0 הפונקציה 5%01]167165ץ36+5 לניתוח חלון התוכניות יכולה לנהל כמעט כל מאפיין שיש לחלון, בין אם הוא חלון-אב, חלון-בן, אר חלון פקד. אחת מפעולות הניהול המקובלת והנפוצה ביותר שהתוכניות חייבות לבצע היא עדכון גודל התצוגה הנוכחית, כדי שתתאים לגודל היחסי של צג המחשב. אפשר להשיג מידע זה, בנוסף למידע אחר על ההגדרות שנמצאות במערכת המחשב שלך, עלל ידי שימוש בפונקציה 665/50006065. פונקציה זו מקבלת קשת רחבה של מידות מערכת 160165 וח5/519) שונות ותצורת מערכת (חסטְבּזטטַחס6 5518₪). מידות. מערכת הן המימדים (רוחב וגובה) של האלמנטים שמוצגים על ידי 5אוס0חו/. כלל המימדים שמקבלת הפונקציה :606ו665/906. הס בפיקסלים. את הפונקציה כותבים כמו בהגדרה שלהלן. (1 ה 15 500 ע0059 פתג הפרמטר א06ת1ח מגדיר ‏ את מידת המערכת או את הגדרת התצורה ש-6015/50611005. צריכה לקבל. כל ערכי *6% 5% ה מידות רוחב. כל ערכי *+) 5% הס מידות גובה. 5 5ו0חו/ו מגדיר את הערכים המפורטים בטבלה 6.12> טבלה 6.11: מידות המערכת שניתן לאחזר על ידי הפונקציה 6645/516₪060765. ערך פירוש 5% | דגלים שמגדירים איך המערכת מסדרת חלונות. ממוזערים (כלומר מוקטנים לסמל). דסא 5% | ערך אשר מגדיר איך המשתמש איתחל את המערכת. שלושת הערכים האפשריים הס 0 - אתחול רגיל. טספ והחזסח), 1 - אתחול אל- כשל (811-59ה), ו- 2 - אתחול אל- כשל עם אתחול רשת (ושואו 51-5816 0% 6006א). אתחול אל-כשל (נקרא גם אתחול בטוח, ז5319800) עוקף את קבצי האתחול של. המשתמש. 0005590105 5% | מספר הלחצנים בעכבר; או אפס, אם לא מותקן עכבר. 6480808 5% | הרוחב של גבול החלון, בפיקסלים. ערך וה שקול לערך 8 8% לחלונות שיש להס מראה תלת מימדי 0 3-0 0+ 5% | הגובה של גבול החלון, בפיקסלים. ערך זה שקול לערך. 8 5% לחלונות שיש להס מראה תלת מימדי 0 3-0 פרק 6: ממשק התקן גרפי ‏ 149 עוך 10 0 מ 6 ואס 5% ב 0 5 6 6 ב ב קא32חו/ו ומבוא ל-0פו פירוש רוחב הסמן, בפיקסלים. אלה הס מימדי הטמן שנתמכים על ידי מנהל התצוגה הנוכחי. המערכת. אינה יכולה ליצור סמנים בגדלים אחרים. גובה הסמן, בפיקסלים. אלה הס מימדי הסמ שנתמכים על ידי מנהל התצוגה הנוכחי. המערכת. אינה יכולה ליצור סמנים בגדלים אחרים. כמו שווה 6 5%. כמו פוא פאז 5%. רוחב בפיקסלים, של המלבן סביב מיקום הלחיצה הראשונה בסדרת לחיצה כפולה. הלחיצה השנייה חייבת להתרחש בתוך מלבן וה, כדי שהמערכת. תקבל את שתי הלחיצות כלחיצה כפולה (שתי הלחיצות חייבות גם כן להתרחש בפרק זמן מוגדר). גובה בפיקסלים, של המלבן סביב מיקום הלחיצה. הראשונה בסדרת לחיצה כפולה. הלחיצה השנייהה חייבת להתרחש בתוך מלבן וה כדי שהמערכת תקבל. את שתי הלחיצות כלחיצה כפולה (שתי הלחיצות. חייבות גם כן להתרחש בפרק זמן מוגדר). רוחב בפיקסלים, של מלבן אשר ממורכו סביב נקודת הגרירה, כדי להרשות תנועה מוגבלת למצביע העכבר לפני שמתחילה פעולת גרירה. דבר זה. מאפשר למשתמש ללחוץ ולשחרר את לחצן העכבר בקלות, מבלי להתחיל בפעולת גרירה. גובה בפיקסלים, של מלבן אשר ממורכז סביב נקודת הגרירה אשר מאפשרת למשתמש להציו את מצביע. העכבר למרחק מוגבל לפני שמתחילה פעולת גרירה. מלבן כזה מאפשר למשתמש ללחו ולשחרר את לחצן העכבר בקלות מבלי להתחיל בפעולת גרירה. רוחב בפיקסלים, של גבול תלת-מימדי. 065068 5% הוא המקביל התלת-מימדי של 64808058 5%. גובה, בפיקסלים, של גבול תלת-ממדי. 065068 5% הוא המקביל התלת-מימדי של 61808058 5%%. עוך פירוש שות3הז50א1?א6 50% | עובי בפיקסלים, של המסגרת סביב היקף החלון שיש לו כותרת (חס6900), אך אי אפשר לשנות את גודלו. שוואהס5א01 58% הוא רוחב הגבולל האופקי. כמו 698/46 00 506. שות3הק50א1/) 50% | עובי בפיקסלים, של המסגרת סביב היקף החלון שיש לו כותרת (0ס6900), אך אי אפשר לשנות את גודלו. 0118508006 50% הוא גובה הגבול האנבי. כמו 68/6 60 .5 וא 54 | כמו 65128788 5%. 0/6 54 | כמו 6451287805 5%. 51508554 5% | רוחב שטח הלקוח עבור חלון במסך מלא. כדי לקבל. את הקואורדינטות של חלק המסך שהסריקה אינה. מכסה, קרא לפונקציה 0/ח61951ח3ז 55/0 עם. הערך שמחזירה 6019/519006065. 56885 1 ט) 5% | גובה שטח הלקוח עבור חלון במסך מלא. כדי לקבל. את הקואורדינטות של חלק המסך שהסריקה אינה מכסה אותו, קרא לפונקציה 6)1510/0וחזם 590 עם הערך 651/05 501 50 5% | רוחב בפיקסלים, של מפת הסיביות של הח שבפס. הגלילה האופקי. 050804 5% | גובה, בפיקסלים, של פס גלילה אופקי. 8 5% | רוחב בפיקסלים, של תיבת הגררה בפס גלילה. אופקי. 100% 5 | רוחב ברירת המחדל של סמל, בפיקסלים. ערך זה הוא בדרך כלל 3232, אבל יכול להשתנות כתלות. בתצוגת החומרה המותקנת. הפונקציה 10361600 יכולה לטעון רק סמלים במימדים אלה. א0ס1/ 59% | גובה ברירת המחדל של סמל, בפיקסלים. ערך זה הוא בדרך כלל 3232, אבל יכול להשתנות כתלות. בתצוגת החומרה המותקנת. הפונקציה 10361600 יכולה לטעון רק סמלים במימדים אלה. פרק 6: ממשק התקן גרפי ‏ 151 עוך 12 6 6 0 0% 0 ו ו ו ב ב ב הפחי ומבוא ל-0פו פירוש מימד א, בפיקסלים, של תאי שריג (66) עבור פריטים בתצוגת סמלים גדולים. כל פריט מתאים. למלבן בגודל זה כאשר מסדרים אותס. ערכים אלה תמיד גדולים מ-א06160 5% ומ-א0/100 5%%, אד שווים להם. מימד צ, בפיקסלים, של תאי שריג עבור פריטים. בתצוגת סמלים גדולים. כל פריט מתאים למלבן בגודל זה כאשר מסדרים אותם. ערכים אלה תמיד גדולים מ-4ז00160 5 ומ-6160 5%, או שווים. להם. ערך ברירת המחדל של מימד א, בפיקסלים, של חלון בגודל מקסימלי שאין לו אבב ערך ברירת המחדל של מימד +, בפיקסלים, של חלון בגודל מקסימלי שאין לו אבב ערך ברירת המחדל לרוחב המקסימלי, בפיקסלים,, של חלון שיש לו כותרת וגבולות שאפשר לשנות את. גודלם. המשתמש אינו יכול לגרור את מסגרת החלון לגודל שמעבר לרוחב צה. החלון יכול לטפל בהודעה 0אאזאהואאזוד66 וו כדי לעקוף ערכים אלה. ערך ברירת המחדל לגובה המקסימלי, בפיקסלים,, לחלון שיש לו כותרת וגבולות שאפשר לשנות את. גודלם. המשתמש אינו יכול לגרור את מסגרת החלון לגודל שמעבר לגובה זה. החלון יכול לטפל בהודעה 0אאזאאואאזוד66 וו כדי לעקוף ערכים אלה. רוחב, בפיקסלים, של הגדרת ברירת המחדל למפת. הסיביות שמשמשת לסימון פריט בתפריט. גובה, בפיקסלים, של הגדרת ברירת המחדל למפת. הסיביות שמשמשת לסימון פריט בתפריט. רוחב, בפיקסלים, של לחצני שורת התפריט, כמור סגירת בן במסמכים מרובים (זסוו). גובה, בפיקסלים, של לחצני שורת התפריט, כמור סגירת בן במסמכים מרובים (זסוו). רוחב מינימלי, בפיקסלים, של חלון. עוך או 5 בב 0קזזאזו ו 50% 6 6 0 ו 0 ב ב ב ב ב פירוש גובה מינימלי, בפיקסלים, של חלו רוחב, בפיקסלים, של חלון נורמלי מוקטן לסמל 6 ו גובה, בפיקסלים, של חלון נורמלי מוקטן לסמל וח רוחב, בפיקסלים, של תא שריג 691 61₪6) עבור חלון מוקטן לסמל. כל החלונות המוקטנים לסמל. (ממוצערים) מתאימיס למלבן בגודל וה כשמסדרים. אותם. ערכים אלה תמיד גדולים או שווים. ל-11250א61 59% ול-260זוזאזואי ‏ 50%. גובה, בפיקסלים, של תא שריג 691 616) עבור חלוך מוקטן לסמל. כלהחלונות המוקטנים לסמל (ממוזערים) מתאימים למלבן בגודל זה כשמסדרים. אותס. ערכים אלה תמיד גדולים או שווים ל-1280ו01119 54 ול-250נואזאזות ו 5%. רוחב עקיבה מינימלי של חלון, בפיקסלים. המשתמש אינו יכול לגרור את מסגרת החלון לגודל. שקטן מערך זה. החלון יכול לטפל בהודעה 0אזאאואאזוד66 וו כדי לעקוף ערכים אלה גובה עקיבה מינימלי של חלון, בפיקסלים. המשתמש. אינו יכול לגרור את מסגרת החלון לגודל שקטן מערך זה. החלון יכול לטפל בהודעה. 0אאזאהואאזוד66 וו כדי לעקוף ערכים אלה רוחב המסך, בפיקסלים. גובה המסך, בפיקסלים. רוחב, בפיקסלים, של לחצן בכותרת החלון. (חס0זק63 5'%ו00חס//), או בשורת הכותרת (88 טטוד, גובה, בפיקסלים, של לחצן בכותרת החלון. (חסווקם6 5'וסמחס/ו), או בשורת הכותרת (זבם 06. עובי, בפיקסלים, של הגבול שאפשר לשנות את גודלו מסביב להיקף החלון שהמשתמש יכול לשנות את. גודלו. 045126786 5%% הוא הרוחב של הגבול. האופקי. כמו 00-86 5%. פרק 6: ממשק התקן גרפי | 153 עוך ב 5 5 סז 5 ב ב 0 0 סקס 5 0 טאפותצס 5 05 5% 8 50 86508 50 6 64 3271חו/ו ומבוא ל-ספו פירוש עובי, בפיקסלים, של הגבול שאפשר לשנות את גודלו מסביב להיקף החלון שהמשתמש יכול לשנות את. גודלו. 051267806 5%% הוא הגובה של הגבול. האנכי. כמו 0/8 5% רוחב מומל של הסמל הקטן, בפיקסלים. סמלים. קטנים מופיעים בדרך כלל בכותרת החלון ובתצוגת. סמל קטן. גובה מומלץ של הסמל הקטן, בפיקסלים. סמלים. קטנים מופיעים בדרך כלל בכותרת החלון ובתצוגת. סמל קטן. רוחב של לחצני כיתוב קטנים, בפיקסלים. גובה של לחצני כיתוב קטנים, בפיקסלים. רוחב של מפת סיביות הח בפס גלילה אונכי, בפיקסלים. גובה של מפת סיביות הח בפס גלילה אנכי, בפיקסלים. גובה האזור הנורמלי לכיתוב, בפיקסלים. עבור גרסאות פווסשחו/ו התומכות במערך תווים של. בתים כפולים (2865, או זפוטזהת6 18ץ6-8וסנוסם. 6% והו הגובה של החלון בתחתית המסך,, בפיקסלים. גובה, בפיקסלים, של שורת תפריט אחת. גובה של כותרת קטנה (חסטקה6 !131ח5) , בפיקסלים. גובה של תתיבת הגררה (א80 פוחטחז) בפס גלילה. אנכי, בפיקסלים. ערך פטזד או שאינו אפס, אם מותקנת גרסת מערך. התווים של בתים כפוליס (0805) של 568.5 אחרת - 59/56, או אפס. ערך סטזד או שאינו אפס, אם מותקנת גרסת מנפה. השגיאות (50ז/ חַוְפַָ0ס) של .568 ; אחרת - 5556, או אפס. ערך פירוש דאםואא16)קסהסטאפוי 5% | ערך פטזד או שאינו אפס, אם התפריטים הנשלפים. כלפי מטה (פטחט!% חווסס-קסזק) מיושרים ימונה, יחסית לפריט התפריט המתאים; ואם הם מיושרים. שמאלה - 5356, אל אפט. כ )8 האמד65פזוי! 5 | ערך פטזד אם המערכת מותאמת לשפות. עברית/ערבית. 5695 טסו 5% | ערך פטזד או שאינו אפס, אם מותקן עכבר; אחרת = 56 או אפס. דו6פפהק פפו?ץ55 10 50 | רק תחת זא פאוסנחוא, ערך סטזד אר שאינו אפס,, אם מותקן עכבר עם גלגל; אחרת - 5556, או אפס. אדפ 5% | הפונקציה מחזירה ערך, שבו הסיבית הפחות. משמעותית נקבעת אס עובדים ברשת; אחרת, הפונקציה מחזירה ערך שבו הסיבית הפחות. משמעותית אינה נקבעת (כבויה או נקייה). סו שומרת את שאר הסיביות לשימוש עתידיי 5וססאזצואפק 5% | ערך פטזד או שאינו אפס, אם מותקנות ההרחבות. של מחשב העט של סח ; אחרת - 56ו5, אר אפס. 550085 5% | ערך סטזד אם תכונת האבטחה מופעלת ; אחרת - 6 5פאטס5עוסוז5 5 | ערך סוד או שאינו אפס, אס המשתמש מבקש מהיישום להציג מידע בצורה ויזואלית במקרים. שהמידע היה מוצג בפורמט קולי (וחזס: פומוא) ; אחרת - 556, או אפס. פוזוזסאוזאוס.51 5% | ערך סטד אם יש למחשב מעבד איטי (56-א00 אחרת - 56ו=. אסדדטפק אע 5% | ערך סטזד או שאינו אפס, אם הפונקציונליות של. לחצני העכבר מוחלפת; אחרת - 5", או אפס. אם הפונקציה מצליחה, הערך המוחזר הוא הערך של המערכת או הגדרת התצורה שביקשנו לדעת; אם הפונקציה נכשלת, הערך המוחזר הוא אפט. יכול להיות שמידות המערכת ישתנו מתצוגה אחת לאחרת. הקבוע ש6אתח₪/ 5 מגדיר איך המערכת מסדרת חלונות מוקטנים לסמל, ומורכב ממקום התחלה וכיוון מקום ההתחלה יכול להיות אחד הערכים שמפורטים בטבלה 6.13 פרק 6: ממשק התקן גרפי | 155 טבלה 6.13: ערכי נקודות ההתחלה. ערך פירוש = וויוסדד80 שו | מתחיל מפינה שמאלית תחתונה במסך (ברירת המחדל). זוז16ווסדד80 עה | מתחיל מפינה ימנית תחתונה במסך. שקול ל-ד16 ד 5 וחה. שפנו א | מסתיר חלונות מוקטנים לסמל, על ידי העברתם מהשטח. הנראה של המסך. דפ ק0ד א | מתחיל מפינה שמאלית עליונה במסך. שקול. ל-קסדדה 5 חה. זוו6נהקסד אאה. | מתחיל מפינה ימנית עליונה במסך. שקול לדה הד גח | קסדדההד5 /ווחה. הכיוון אשר המערכת מסדרת בו חלונות מוקטנים לסמל, יכול להיות אחד מהערכים. שמפורטים בטבלה 6.14. טבלה 6.14: ערכי הסדר האפשריים של סמלי חלונות. ערך פירוש אעוסס וא | סדר אנכי, מלמעלה למטה. דפ א | סדר אופקי, משמאל לימין דוז16ה הא | סדר אופקי, מימין לשמאל. קט שא | סדר אנכי, מלמטה למעלה. הסעיף הבא מפרט איך התוכניות יכולות להשתמש במידות מערכת 160/05 5540 בומן העיבוד שלהן. 1 הפונקציה 5+0₪11!1617165ץ06+5 בסעיף קודס למדת שבאפשרות התוכניות להשתמש בפונקציה 669/500006065 כדר להשיג מידע על המידות הנוכחיות של פאוסוחוו בכל מחשב נתון. ככל שהתוכניותת הופכות להיות יותר ויותר מורכבות, וככל שתבנה יישומים שיופעלו על מחשבים שונים, בדיקות מידות המערכת הופכת להיות חשובה לפני כל קביעת תצוגת מסכים, כי הדבר יכול להבטיח שתצוגת המסך תתאים גם למסכי 6404480 וגם. למסכ 8. לדוגמה, התוכנית וחפץ5 66%, שבתקליטור המצורף לספר זה (6%006), משתמשת ב-:60/0/ו6615/5197 כדי לבחון את המצב הנוכחי של גודל החלון, גודלל המסך ומידע אחר. כאשר המשתמש בוחר באפשרות !765 מהתפריט, התוכנית מציגה. את המידע בחלון. 6 3271חו ומבוא ל-ספו 2 קבלת הקשר התקן עבור החלון כולו התוכניות יפעלו בדרך כלל עם הקשר התקן אל שטח הלקוח של החלון, אך לפעמים. נדרש הקשר התקן עבור החלון כולו. כדי להשיג הקשר התקן לחלון כולו, באפשרות. התוכנית להשתמש בפונקציה 000006חו/661. פונקציה זו מקבלת את הקשר ההתקן (0פ) של החלון בשלמותו, כולל שורת כותרת, תפריטים ופסי גלילה. הקשר התקן לחלון מאפשר ציור בכל מקום בחלון, מפני שנקודת המוצא של הקשר ההתקן היא הפינה השמאלית העליונה של החלון, ולא הפינה השמאלית העליונה של שטח הלקוח. 69/0000 מציבה מאפייני ברירת המחדל אל הקשר ההתקן של החלון בכל פעם: שהיא מקבלת את הקשר ההתקן. מכיון ש-6006חוו%/66 מציבה מאפייני ברירת. מחדל להקשר ההתקן של החלון, מאבדים את המאפיינים שהיו קודם. את הפונקציה. %6ס6חו/660 כותבים כמו בהגדרה שלהלן (מ פצו) 66100 ספ הפרמטר שחצח מזהה את החלון עם הקשר התקן אשר 66001606 עומדת לקבל. אס הפונקציה מצליחה, הערך המוחור הוא ידית של הקשר התקן לחלון המוגדר; אם. הפונקציה נכשלת, הערך המוחזר הוא +וטאז, שמציין שניאה או פרמטר חח שאינר תקף השימוש ב-00800ח0614 מיועד לספק אפקטי צביעה מיוחדים בשטח החלון שאינר שטח הלקוח. הצביעה בכל שטח שאינו שטח הלקוח בחלון אזנה מומלצת. באפשרותך. להשתמש בפונקציה 60065ח6615/519 כדי לקבל את המימדים לחלקים שונים של השטח שאינו שטח הלקוח, כמו שורת הכותרת, תפריט ופסי גלילה. לאחר סיום: הצביעה, התוכנית חייבת לקרוא לפונקציה 86163500 כדי לשחרר את הקשר ההתקן. אי שחרור הקשר ההתקן של החלון יכול להשפיע באופן חמור על בקשות צביעה עוקבות של היושום. כדי להבין יותר טוב את פעולת הפונקציה 0000006ו/ ,661‏ התבונן בתוכניתת 6פחוו66%, שבתקליטור המצורף לספר זה (בתיקיה 00806). התוכנית משתמשת. בפונקציה 6סוס0חו//₪6 כדי לקבל הקשר התקן עבור החלון כולו. אחר כך היא משתמשת ב-6065א0ח5/6ץ6615 כדי לקבוע את מידות הגבולות והכותרת. לבסוף, התוכנית משתמשת בהקשר ההתקן של החלון כולו כדי לצבוע תבנית בשורת הכותרת. של החלון. הקוד המעשי מתרחש בתוך הפונקציה 6זקנחעו. פרק 6: ממשק התקן גרפי | 157 3 שחרור הקשר התקן שחרור אובייקט לאחר שהתוכנית מסיימת את הטיפול שלה באובייקט, הוא חלק חשוב בתכנות בשפת ++6. ניהול הקשרי התקן אינו יוצא מן הכלל. הפונקציה 06 משחררת הקשר התקן (06), כך שיישומים אחרים יכולים להשתמש בו. פעולת הפונקציה 86635606 תלויה בסוג הקשר ההתקן. היא משחררת רק הקשרי התקן משותפים והקשרי התקן לחלונות. אין לה שוס השפעה על הקשרי התקן מסוגג 5 (מחלקה) או פ)פאזק (פרטי). את הפונקציה 89635606 כותבים בתוכנית כמו. בהגדרה שלהלן. (ספג! 30 ,הזו פוא 635000 נשת שג הפרמטר 6ח//ח מוהה את החלון אשר הפונקציה 861635606 עומדת לשחרר את הקשר ההתקן שלו. הפרמטר 06 מוהה את הקשר ההתקן אשר הפונקצייה 861635606 עומדת. לשחרר. הערך המוחזר מגדיר אם 86695606 הצליחה לשחרר את הקשר ההתקן. אם: 0 מצליחה לשחרר את הקשר ההתקן, היא מחזירה 1; אס 861089906 אינה. מצליחה לשחרר את הקשר ההתקן, היא מחזירה אפס. היושוס חייב לקרוא לפונקציה 86/635606 עבור כל קריאה לפונקציה 66001060006. ועבור כל קריאה לפונקציה 66/96 אשר מקבלת הקשר התקן משותף. היישום אינר יכול להשתמש בפונקציה ₪6/635606 כדי לשחרר הקשר התקן אשר נוצר באמצעות. הפונקציה 61030606. במקרה האחרון, היישום חייב להשתמש בפונקציה 661806ם. 4 קבלת ידית חלון מהקשר ההתקן התוכניות עשויות לבצע פעולות כלליות בכל הקשר התקן נתון. אך לעיתים ברצונך. להימנע מביצוע עיבוד כלשהו בהקשר התקן שקשור עס חלון מסוים. עם הפונקציה 6פוחסזתאוסחז/ו, יכולה התוכנית להמיר את הקשר ההתקן לידית חלון. הפונקציה 6סו/וסחו מחזירה את ידית החלון שקשור עם הקשר התקן התצוגה הנתון פונקציות פלט אשר משתמשות בהקשר ההתקן מציירות בחלון אשר הידית שלו הוחזרה על ידי 6סוחסז"אוסטחוו. את הפונקציה 6סוחסזפאוסטחו\ כותבים בתוכנית כמו בהגדרה שלהלן. (פ ג 86 סה גו פוחו הפרמטר 20 מזהה את הקשר ההתקן אשר הפונקציה 6סוחסזזאוסנחוא עומדת לקבל. הידית שלו עבור החלון שקשור להקשר ההתקן. כאשר הפונקציה מצליחה, הערך המוחזר הוא ידית לחלון שקשור להקשר ההתקן לתצוגה; אם הפונקציה נכשלת, הערך המוחזר הוא א. 8 5271חו ומבוא ל-ספו > אזהרה: סיכוני השימוש ב--08606יו601 למדת שהתוכניות ישתמשו לעיתים תכופות בפונקציה 61631906 כדי להשיג הקשר התקן עבור המדפסת. עם זאת, התוכניות יכולות להשתמש ג ב-61631906 כדי להשיג הקשר התקן אל מסך הצג (מסך החומרה, לא שטח לקוח של חלון בודד, או אפילו שטח שולחן העבודה). כאשר משתמשים ב-6/63/900 כדי להשיג הקשר התקן אל המסך, התוכניות יכולות למעשה לצייר בכל מקום על פני המסך, ולא רק בתוך גבולות. שטח התוכנית. בנוסף לתוצאות הפוטנציאליות שאי אפשר לצפות להן, טיפול כזה אזינר מתאים לתקן של 1000068 כאשר מנסים להשיג הקשר התקן אל חלון במסך, עלל התוכניות שלך להשתמש תמיד בפונקציה 66:06, או בפונקציה לחומ ולא בפונקציה 0103606. פרק 6: ממשק התקן גרפי ‏ 159 פרק 1 מפות סיביות, קבצי-על וסמלים (805ום, 6181!65/! ו-5ח0ס6!) 1 מפות סיביות שתלויות בהתקן מפות סיביות הן בלוקים של נתונים אשר התוכניות יכולות להוציא ישירות כפלט אל התקן, כמו צג למשל. אפשר לחשוב על מפות סיביות כדרך לאחסון המידע של הפיקסל. ישירות מהמסך אל מאגר זיכרון. צביעת מפות סיביות על המסך היא יותר מהירה. מהשימוש בפונקציות ממשק ההתקן הגרפי כמו 86636 ו-610ח/1. החיסרון של מפות סיביות הוא בכך שהן צריכות כמות גדולה של זיכרון ומקום בדיסק, ואי אפשר לדרג אותן (56366) בצורה טובה, במיוחד אם הן מכילות טקסט. כאשר מדרגים מפת סיביות, היא מאבדת מהאיכות, וגורמת לעיוות הטקסט. פוסטחו. מספקת שתי סוגים של מפות סיביות: מפות סיביות שתלויות התקן (פ טופ "הסשהסקסס-00ם) ומפות = סיביות = שאינן = תלויות = התקן (פקפוחזום 1ח06ח00ס6ח209/00-1). מפות סיביות תלויות התקן הן תבנית ישנה, וכפר שמשתמע מהשם שלהן, הן פחות גמישות מאשר מפות סיביות שאינן תלויות התקן. כל. היישומים של לוו שתכתוב צריכות להשתמש במפות סיביות שאינן תלויות התקן. עם ואת, 00005חו/ מספקת את מרבית פונקציות ו שעוסקות במפות סיביותת תלויות התקן, כדי לאפשר ליישומי פווסחווו קודמים, בעלי 16 סיביות, לפעול. ככלל, יוצרים מפות סיביות באמצעות תוכנית ציור כמו הצייר של מיקרוסופט טחוגק 0508ז6/), אד עס עורך מפות סיביות, שנמצא בדרך כלל כמרכיב בסביבת פיתוח מוכללת (כמו 5.02 ++6 חפוזספ, או 5.0 ++6 וגטפו/). אחר כך מאחסנים את מפת הסיביות בדיסק עס סיומת שם קובץ 8%7. סו שומרת את מפת הסיביות. כמפת סיביות שאינה תלויית התקן, וממירה אותה למפת סיביות תלויית התקן כאשר התוכנית קוראות ל-ק003ו10309. אפשר להציב את מילת המפתח 811/07 לפני שם' קובץ מפת הסיביות, כדי שתוכל להוסיף מפות סיביות לקובץ המשאבים, כפי שמוצג בדוגמה הבאה פמט השק פמעצנם הש 0 321חווו ומבוא ל-ספו כדי להבין יותר טוב את התוכנית לניהול מפות סיביות, התבונן בתוכנית 801 ח56, שבתקליטור המצורף לספר וה (בתיקיה 00307). התוכנית טוענת את מפת הסיביות. חשק, ממקמת אותה בהקשר התקן שבויכרון, ואחר כך מציירת אותה בהקשר התקן התצוגה. קטע הקוד שלהלן מהקובץ 80 חק מציג את חלק העיבוד המעשי של התוכנית ות פהאפ זט ספת ספ 0 ספ עפסמפה ספה1 קממז1ע שמן 148 // ;( "חפם" ,6פתזת ) מםת:08001ם = קפהונפה// ;( "נסהאתנם" ,ףפתזג )קמהז104881 = ממתסגמם 88ע50 שת: השת: 8תם סקתשמ שהף ספת קמהזגם שמן מהגגת ‏ // ; ( תא )08500 = ספת (ספג! ) 521600 0568560088 = ספחפוע ( 18 ספהשאה | 01506001665 ;( 580008 ,0 ,0 (ססתשאמ ,60 ,60 ,10 ,10 ,ספת )15פ6גם ( עה )165600 ( ג מ 180 ( ש8מפ1פה )1060001665 תבנית מפת סיביות תלויית התקן פועלת כראוי בהעתקת חלקים של המסך לזיכרוך והדבקת חלקים אלה חורה למקומות אחרים במסך. עם ואת, כאשר היישום חיוב לשמור נתונים בקובץ בדיסק ואחר כך להציג אותו בהתקן אחר, תבנית מפת סיביותת תלויית התקן אינה טובה עוד. התבנית של מפת סיביות תלויית התקן מניחה שאתה מתכוון תמיד להציג את מפת הסיביות בהתקן שדומה להתקן המקורי שהמפה נוצרה. בו, והצבעים בהתקן האחר והים לאלה שבהתקן המקורי. לרוע המול, כאשר מציגים. את מפת הסיביות בהתקן אחר, הצבעים עלולים להיות שונים. מפת סיביות שאינהה תלויית התקן אינה גורמת לבעיות שמתעוררות בשימוש של תבנית מפת סיביות תלויית התקן. 2 מפות סיביות שאינן תלויות התקן לתבנית (פורמט) של מפת סיביות תלויית התקן יש מספר מגבלות, אך תבנית מפת. סיביות שאינה תלויית התקן מתגברת על מגבלות אלו. ההבדל המשמעותי ביותר בין מפת סיביות תלויית התקן לבין מפת סיביות שאינה תלויית התקן הוא בכך, שמפת. סיביות שאינה תלויית התקן מכילה טבלת צבעיס שמפת הסיביות משתמשת בהם. פרק ל: מפות סיביות, קבצי-על וסמלום | 161 הכותר (763060) של מפת הסיביות גם כן יותר מורכב בתבנית מפת סיביות שאינה תלויית התקן. מפת סיביות שאינה תלויית התקן, לעומת מפת סיביות תלויית התקן, אינה אובייקט גרפי; כלומר - היא מבנה נתונים. היישום אינו יכול לקבוע מפת סיביותת שאינה תלויית התקן אל הקשר ההתקן. התבנית של מפת סיביות שאינה תלויית התקן מורכבת משלושה חלקי נתונים נפרדים. החלק הראשון של קובץ מפת הסיביות שאינה תלויית התקן הוא המבנה 08 6וזס:אזקה/יוד81, אשר מוגדר ב- 1 32ּחו/ו כמו שרואים להלן | המהפאסטאונקתועד1מ 680 8סטצ50 6465מעט פפסאם אנ | 10 1 | באב 650ת19פ1ם | פפסא :מ | פתסף 6881080:קמסס1ט סתסום 1512018860 פפסום 159 אנ | בא10 159 פצ1ע | בא10 פפסאם ה68פסקה:12ס1מ פתסאם הט סוד תענה [ המבנה הפסטווס=א1ק/817 מכיל את האיברים שמפורטיס בטבלה 7.1 טבלה 7.1: איברים המבנה ה הפוס אזקהוד1ם. שם האיבר תיאור ופ | מספר הבתים שהמבנה צריך. זווא | רוחב מפת הסיביות, בפיקסלים. | גובה מפת הסיביות, בפיקסלים. אם ערכו של פוט חיובי, מפת הסיביות אינה תלוייית התקן בכיוון למעלה (פ-ח0זו80), ונקודת המוצא שלה היא הפינה השמאלית התחתונה. אם ערכר של וסוס שלילי, מפת הסיביות אינה תלויית התקן בכיווך למטה (חאוסס-קסז) ונקודת המוצא שלה היא הפינה השמאלית. העליונה. 808065 | מספר המישורים עבור התקן המטרה. ערך זה חייב לחיות 1 חט0סא/9ופ | מספר הסיביות לכל פיקסל. ערך זה חייב להיות 1, 4, 8, 16, 24 או ?3 2 זקא2חווו ומבוא ל-ספו שם האיבר סקסו 6 0 0 מ 0 תיאור סוג הדחיסה עבור מפת טיביות דחוסה מלמטה למעלה. סו אינה דוחסת מפת סיביות שאינה תלויית התקן. מלמעלה למטה). ערך זה יכול להיות אחד מאלה שמפורטים. בטבלה 7.2 מגדיר את הגודל של התמונה, בבתים. אפשר לקבוע את ערכו של איבר וה לאפס עבור מפות סיביות ₪68 81 הרזולוציה האופקית, בפיקסלים לכל יחידת מידה, של התקן המטרה עבור מפת הסיביות. היישום יכול להשתמש בערך זה כדי לבחור מפת סיביות מקבוצת משאבים אשר תואמת בצורה. הטובה ביותר את תכונות ההתקן הנוכחי. הרוולוציה האנכית, בפיקסלים לכל יחידת מידה, של התקן המטרה עבור מפת הסיביות. מספר הצבעים בטבלת הצבעים שמפת הסיביות משתמשת בהם. בפועל. אם ערך וה הוא אפס, מפת הסיביות משתמשת במספר. הצבעים המקסימלי, בהתאם לערך האיבר זחטס0א/8וט עבור מצב הדחיסה שמוגדר על ידי ח6550זקוחססוט. אס 51070566 אינו אפס והאיבר וחטססאפופ קטן מ- 16, אצ האיבר 54010566 מגדיר את המספר הממשי של צבעים שמנוע. הגרפיקה או מנהל ההתקן ניגשים אליהס. אס חט800וט שווה ל- 16 או יותר גדול, אז האיבר 510110566 מגדיר את גודל טבלת. הצבע שמפת הסיביות שאינה תלויית התקן משתמשת בה, כדי לבצע אופטימיזציה ללוחות הצבעים של פוסְחו/. אם זחטססטופוט שווה ל- 16 או 32, לוח הצבעים האופטימלי מתחיל מיד אחרי שלוש המסכות של המילים הכפולות (6זחדד 855 016סופנוסם). אסו מפת הסיביות היא מפת סיביות. ארוזה (ספותזום 286696), מפת סייביות שבה מערך מפת הסיביות נמצא מיד אחרי הכותר סַ15ז811%, ואשר. מתייחסים אליו על ידי מצביע יחיד), האיבר 910110560 חייב. להיות אפס או הגודל הממשי של טבלת הצבעים. מספר אינדקסי הצבעים, אשר הגדרת מפת הסיביות שאינה. תלויית התקן מציינת אותם כחשובים לתצוגת מפת הסיביות. אם ערך ה שווה לאפס, כל הצבעים חשובים. כמו שניתן לראות בטבלה 7.1 אפשר ליצור מפות סיביות מטה-מעלה דחוסות. כאשר התוכנית טוענת מפת סיביות דחוסה, היא צריכה לבדוק את ערך האיבר 09500זקח100פ כדי לקבוע את סוג הדחיסה. טבלה 7.2 מפרטת את הערכים האפשריים. של האייבר ח950זקוחססום. פרק ל: מפות סיביות, קבצי-על וסמלום | 163 טבלת 7.2: הערכי האפשריים עבור האיבר ח65510זקוח100ט. ערך תיאור 8 81 | פורמט שאינו דחוס. 8 81 | פורמט דחיסה קיידוד רצף (15ה, 560690 הפס |-חטה) עבור מפות סיביות עם 8 סיביות לכל פיקסל. פורמט הדחיסה הוא: פורמט של שני בתים שמורכבים מבית אחד שמשמש כמונה ואחריו בית שכולל את אינדקס הצבע. 4 81 | פורמט דחיסה קידוד רצף (8.5, 8060066 5090 1-חטוה) עברר. מפות סיביות עם 4 סיביות לכל פיקסל. פורמט הדחיסה הוא: פורמט של שני בתים שמורכב ממונה בתים ואחריו שתי מילים. לאינדקסי צבע. 5 81 | ציון שמפת הסיביות אינה דחוסה וטבלת הצבעים מורכבת. משלוש מסכות צבע של מילים כפולות, אשר מגדירות את. האלמנטים אדוס, ירוק, וכחול בהתאמה, לכל פיקסל. הערך 5 81 תקף עבור התוכניות הפועלות עס מפות סיביותת של 16 או 32 סיביות לפיקסל. המבנה 817%/871850 מחבר את המבנה ה08א18:0716קא11ד81 ואת טבלת הצבעים, כדיי לספק הגדרה שלמה של המימדים והצבעים של מפת הסיביות שאינה תלויית התקן היישוס צריך להשתמש במידע שמכיל האיבר 506וט כדי לאתר את טבלת הצבעים. במבנה סַַא8111801, כמו שרואים להלן. + 01156 (10899) ) ; ( (15126מ. 868062 1ח<-50 תדקפה 1פק) (סהסוו) 05 תומכת בפורמטים לדחיסת מפות סיביות שמגדירות את הצבעים שלהן עם 8 או 4 סיביות לפיקסל. הדחיסה מצמצמת את נפח האחסון בדיסק ובזיכרון אשר דרוש. עבור מפת הסיביות. בטבלה 7.2 למדת על כך ש-00005חו/ תומכת בשלוש תבניות (פורמטים) לדחיסה. כאשר ערך האיבר חסופפסזקוחססוט הוא ₪58 /81, התוכנית היוצרת דוחסת במקור את מפת הסיביות בפורמט קידוד רצף (815) עבור מפת סיביות בעלת 8 סיביות לפוקסל. התוכנית היוצרת יכולה להשתמש בפורמט קידוד רצף, כדי לדחוס במצב מקודד (060666) או במצב מוחלט (9וטו050א). שני מצבי העבודה יכולים להתרחש בכל מקום. באותה מפת סיביות. מצב העבודה המקודד (11006 5060666) מורכב משני בתים. הבית הראשון מגדיר את. מספר הפיקסלים העוקבים שצריכה פאוסשחו/ו לצייר על ידי השימוש באינדקס הצבע שמוכל בבית השני. בנוסף לכך, התוכנית אשר יצרה את מפת הסיביות יכולה לקבוע את הבית הראשון מווג בתים אלה לאפס, כדי לציין חילוף (856306) אשר מציין סוף שורה, סוף מפת סיביות, או דלתה (גו/6פ, כלומר, שינוי). הפירוש של החילוף תלוי בערך הבית השני של זוג הבתים, אשר יכול להיות אחד מאלה שמפורטים בטבלה 7.3 4 32371חווו ומבוא ל-ספו טבלה 7.3: הערכים האפשריים של הבית השני בווג הבתים. ערך | פירוש 0 | סוף שורה 1 | סוף מפת סיביותת 2 | דלתה. שני הבתים שבאים אחרי החילוף מכילים ערכים לא מסומנים. (פסטו3/ 60ַחופחט), אשר מציינים את ההיסט האופקי ואת ההיסט האנכר של הפיקסל הבא בתור, החל מהמקוס הנוכחי. מצד שני, במצב העבודה המוחלט (1060! 18טו050), הבית הראשון שווה לאפס והבית. השני הוא ערך בתחום 03 עד 851. הבית השני מייצג את מספר הבתים הבאים בתור, שכל אחד מהם מכיל את אינדקס הצבע של פיקסל בודד. כאשר הבית השני שווה ל- 2 או פחות, לחילוף יש פירוש דומה לוה של מצב העבודה המקודד. במצב העבודה המוחלט, התוכנית היוצרת חייבת להסב כל הפעלה במפת סיביות שאינה תלוייתת התקן על גבול מילה (0/016. אחרי המבנה אססאפְאּסאזקה/ד81, מפת הסיביות שאינה תלויית התקן מכילה את טבלת הצבעים. טבלת הצבעים היא קבוצה של מבנים מסוג 8690000 אשר מחזיקים. את צבע ה-₪68 לכל צבע שמשמש את מפת הסיביות. המבנה 868000 מתאר צבע שמורכב מהעוצמות היחסיות של הצבעים אדום, ירוק, וכחול. מספר המבנים מסוג 8680 הוא כמספר הצבעים של מפת הסיביות. 71 פשוסטחו מגדירה את המבנה. 868000 כמו שרואים להלן 58 56506 6465מע מ 06 0 0 המבנה 86800 מורכב מהאיברים שמפורטים בטבלה 7.4 טבלה 7.6: איברי המבנה 868008 איבר תיאור 6 | עוצמת הצבע הכחול. טָאה | עוצמת הצבע הירוק. 6 | עוצמת הצבע האדום. טָאה | איבר שמור של 05ו00חו/; חייב להיות אפס. פרק ל: מפות סיביות, קבצי-על וסמלום | 165 החלק האחרון של קובץ מפת הסיביות שאינה תלויית התקן מכיל את נתוני הפיקסלים הממשיים עבור מפת הסיביות. תלמד יותר על יצירה והצגה של מפת. סיביות תלויית התקן ועל מפת סיביות שאינה תלויית התקן בסעיפים הבאים. 3 יצירת מפות סיביות קובץ מפת סיביות הוא אחד משלושת הסוגים של קבצי מקור גרפיים של פאוסשחוא חא באפשרותך ליצור בתוכניות שלך מפות סיביות באמצעות הפונקציה 016318080 ולהציג אותן בחלון. פונקציה זו יוצרת מפת טיביות עס הרוחב, הגובהה ותבנית הצבע (מישורי צבע וסיביות לכל פיקסל) שמוגדרים על ידך. את הפונקציה 0703008080 כותבים כמו בהגדרה זר |) 0263608100 פתמע נמ 1 ,1060 סבהצגט // 1 6+ ג 18 ,תפמ סבחצגע // שה 6+ 16 עמ 4ספט פסתנק ע10סם 05 עשמחטת // ותפש צאט ץ015ת100 50 001268: 5ם1ם 05 עסממטה //‏ ,81:5002561ש פאצט ]/ 010 8ה1מ21והסם צפעצם 50 עבפתנסק //‏ 5:גמעק1* נסט עפאסס 010% ]1 / כאשר התוכניות קוראות לפונקציה קטחטופפוגטוס, פונקציה זר מצפה שיסופקו לה הפרמטרים שמפורטים בטבלה 7.5 טבלה 7.5: הפרמטרים של הפונקציה 87וח/168168. פרמטר תיאור הזוח | רוחב מפת הסיביות בפיקסלים. וזו | גובה מפת הסיביות בפיקסלים. 69805 | מספר מישורי הצבע שמשתמש בהם ההתקן. 080506961 | מספר הסייביות שדורש ההתקן כדי לוהות צבע של פיקסל אחד. 185 | מצביע למערך של נתוני צבע שההתקן משתמש בהם, כדי לקבוע את הצבעים במלבן של פיקסלים. אתה חייב ליישר כל קו סריקה שבמלבן לפי גבול מילה (עליך להשלים באפס קווי סריקה שאינם. מיושרים לפי מילה). אס פרמטר זה הוא 04ו, מפת הסיביות. החדשה לא תהיה מוגדרת. אס הפונקציה 80וחוו98ז03ז6 מצליחה, הערך המוחזר הוא ידית למפת הסיביות; אם הפונקציה נכשלת, הערך המוחצר הוא -11א. 6 71א32חווו ומבוא ל-ספו לאחר שיוצרים מפת סיביות, באפשרותך לקרוא לפונקציה 56/660066 כדי לבחורר במפת הסיביות לתוך הקשר התקן. התוכניות יכולות להשתמש בפונקציה 0163198090 כדי ליצור מפות סיביות בעלות צבע, בגלל סיבות ביצוע, חיישומים צריכים להשתמש בפונקציה 80ו/03008ז0 כדי ליצור מפות סיביות בצבע אחד (פקפוחזום סוחסזהסטהסוא), ולהשתמש בפונקציה 68₪085/פ/031ח01631960. כדי ליצורר מפות סיביות בצבע מלא. כאשר התוכנית בוחרת במפת סיביות בצבע שהוחזרה קודם. מ-ק08ש/99ו0163. לתוך הקשר התקן, 00005 חייבת לוודא שמפת הסיביות הזר מתאימה לפורמט של הקשר ההתקן שמקבל אותה. מכיון ש- 03010168 מקבלת הקשר התקן, היא מחזירה מפת סיביות שיש לה פורמט כמו זה של הקשר ההתקן המוגדר. לכן, קריאות עוקבות ל-:566/09(60 יותר מהירות. מאשר מפות סיביות בצבע שהפונקציה 0103008080 מחזירה. אס מפת הסיביות היא בעלת צבע אחד, צבע הקיידמה (ז0ו60 חטסזפָסזס") מיוצג על וידר סיביות "אפס" וצבע הרקע (זסו60 ַחְטסְזָ830) מיוצג על ידי סיביות "אחדי", עבור הקשר ההתקן של היעד. אם היישום קובע את הפרמטרים הזשוח ו-וחטח לאפס,, 6163/9980 מחזירה את הידית של פיקסל בגודל 1 על 1, במפת סיביות בעלת צבע אחד. כאשר אינך צריך יותר את מפת הסיביות, עליך לקרוא לפונקציה 0661609(66. כדי למחוק אותה. כדי להבין יותר טוב את פעולת הפונקציה 80ו/003008, התבונן בתוכנית ק8וחט/ 8‏ 676866, שבתקליטור המצורף לספר זה. התוכנית יוצרת מפת סיביות בעלת. צבע אחד כאשר המשתמש בוחר באפשרות !1690 מהתפריט. אחר כך היא מעבירה את. מפת הסיביות לתוך הקשר התקן שבזיכרון ומציירת מלבן ואליפסה במפת הסיביות. לבסוף, התוכנית מצינה את מפת הסיביות שמתקבלת. התוכנית מבצעת את העיבודד העיקרי שלה בפונקציה 6זקטחאו. 4 הצגת מפות סיביות התוכנית חייבת יילדחוףיי את מפת הסיביות לתוך הקשר התקן התצוגה, כדי שניתן יהיה להציג אותה. בתוכנית ק8וחא/8 .676366 יצרנו תחילה את מפת הסיביות, ואחר כך הוספנו אותה להקשר ההתקן כדי להציגה. כרגיל, התוכניות משתמשות בפונקציה. וו להצגת מפת סיביות. פונקציה זו מעבירה בלוק סיביות של נתוני הצבע המתייחסים למלבן של פיקסלים, מהקשר התקן המקור שאתה מגדיר אל הקשר התקן. היעד. עליך להעביר תחילה את מפת הטיביות אל הקשר התקן בויכרון (אשר אתה יוצר עס 309606קו9007ו0/63). אחר כך, עליך לקרוא לפונקציה 809 כדי להעתיק. את מפת הסיביות להקשר ההתקן הממשי. מפני שנוחל ההעתקה הממשי של 85% משתמש בפעולות רשת (פחס3זסק0 ז3516ה), אתה צריך לבדוק את ה-5ק6א₪516 של ההתקן לפני שמפעילים את ו/8/9 כנגד ההתקן. פרק ל: מפות סיביות, קבצי-על וסמלום | 167 את הפונקציה 89 כותבים כמו בהגדרה זו 005 11) 4601086 4650186108 60 416מגת // ,400686 סט 8695108610 08 868מ00541-< //‏ ,6פשעאמ 486 עפתעסס 5-1856בקט פ'816ת0:2ם, // ]5 // 0 ,6פשפלת 486 עסתעסם 5-1856סקט פ'816ת0:2ם? // 6 מ4610ה06461 05 91660 //‏ ,מ186אמ ממ4 מס61פה06501 05 361006 //‏ ,%מ10שת 46 46106 008 60 340616 // ,46856 סע 60080016'8: 50066 05 0005618856-א //‏ ,סטפאת 486 פפתפסס 1656-פשספט // 60080016'8: 50006 05 606810856-ץ //‏ (סטפלת 46 פפמפסס 1656-פשספט // 6 ח58610שקס 588565 //‏ מסאאם סאסאם / הפונקציה ז/8/9 מקבלת את הפרמטרים שמפורטים בטבלה 7.6 טבלה 7.6: הפרמטרים של הפונקציה +/8/:8. פרמטר 0 סא ה שוח ה ה 6 6 ו תיאור מוהה את הקשר התקן היעד. מגדיר את הקואורדינטה הלוגית א (00076/0319- ו63וס)) של הפינה. השמאלית העליונה של מלבן היעד. מגדיר את הקואורדינטה הלוגית ץ (00076/0319-צ 094631 של הפינה. השמאלית העליונה של מלבן היעדד מגדיר את הרוחב הלוגי של מלבן המקור ושל מלבן היעד. מגדיר את הגובה הלוגי של מלבן המקור ושל מלבן היעד. מוהה את הקשר התקן המקור. מגדיר את הקואורדינטה הלוגית א (031ו00076-א 604/61 של חפינה. השמאלית העליונה של מלבן המקור. מגדיר את הקואורדינטה הלוגית + (6007600319-+ 6/1631 של הפונה. השמאלית העליונה של מלבן המקור. מוהה את קוד פעולות הרשת (חסז3זפק0 ז56). קודים אלה מגדירים. איך הפונקציה צריכה לשלב את נתוני הצבע של מלבן המקור עם נתוני הצבע של מלבן היעד, כדי ליצור את הצבע הסופי הרצוי. טבלה 7.7 מפרטת חלק מקודי הרשת הנפוצים. 8 3271 ומבוא ל-ספו למדת שהתוכניות מבצעות פעולות רשת על מפות הסיביות כאשר ממקמים אותן בתוך. הקשר התקן. טבלה 7.7 מציגה חלק מקודי הרשת הנפוצים, אשר משמשים את התוכניות כאשר ממקמים מפות הסיביות בהקשר התקן. טבלה 7.7: פעולות רשת (חסוז5ז6ק0 זפ5ה) נפוצות אשר יבוצעו על ידי התוכניות בעבודה. עם מפות סיביות. עוך ב דפ 1 1 ונ דסא ד אק קד מו 0 ב 5 5 ב תיאור משתמש בצבע הקשור עם אינדקס אפס שבלוח הצבעים הפיוי , כדי למלא את מלבן היעד (צבע זה הוא שחור עבור ברירת. המחדל של לוח הצבעים). הופך את מלבן היעד. משתמש באופרטור הבוליאני פא כדי למזג את הצבעים של מלבן המקןר עם התבנית המוגדרת (חזפצהק 5060066) משתמש באופרטור הבוליאני 08 כדי למזג את הצבעים של מלבן המקור שעבר היפוך (866130/6 50166 666זשח1) עם. הצבעים של מלבן היעד. מעתיק אל היעד את מלבן המקור שעבר היפוך. משתמש באופרטור הבוליאני 08 כדי לשלב את הצבעים של מלבני המקור והיעד, ואחר כך הופך את הצבע שמתקבל. מעתיק את התבנית המוגדרת למפת סיביות היעד. משתמש באופרטור הבוליאני 08 כדי לחבר את הצבעים של התבנית המוגדרת עס הצבעים של מלבן היעד. משתמש באופרטור הבוליאני 08, כדי לשלב את צבעי התבנית. עם הצבעים של מלבן המקור שעבר היפוך. באפשרותך להשתמש באופרטור הבוליאני 08 כדי לשלב את תוצאת פעולה זו עס צבעי מלבן היעד. משתמש באופרטור הבוליאני סא כדי לשלב את הצבעים של מלבני המקור והיעדד מעתיק את מלבן המקור ישירות למלבן היעד משתמש באופרטור הבוליאני סא כדי לשלב את צבעי מלבן היעד שעברו היפוך עס הצבעים של מלבן המקור. משתמש באופרטור הבוליאני 08א כדי לשלב את הצבעים של מלבני המקור והיעד. משתמש באופרטור הבוליאני 08 כדי לחבר את הצבעים של מלבני המקור והיעד. משתמש בצבע הקשור עם אינדקס 1 שבלוח הצבעים הפיזי כדי למלא את מלבן היעד (צבע זה הוא לבן עבור ברירת המחדל של לוח הצבעים). פרק ל: מפות סיביות, קבצי-על וסמלום | 169 אם טרנספורמציות סיבוב או גוירה (0ג56, טרנספורמציה אשר משנה את האורך והכיוון הנראים של קוויס אנכיים או אופקיים באובייקט) נמצאת בפעולה בהקשר ההתקן של המקור, 89 מחזירה ציון שגיאה. אם יש טרנספורמציות אחרות בהקשר התקן המקור (והטרנספורמציה המתאימה אינה מופעלת בהקשר ההתקן של היעד), הפונקציה 809 מותחת, דוחסת, או מסובבת את המלבן שבהקשר ההתקן של היעדד כפו שדרוש. אם תבניות הצבע של הקשר התקן המקור ושל הקשר התקן היעד אינן תואמות, הפונקציה 89/6 מתאימה את תבנית צבע המקור לזו של תבנית היעד. כאשר ַו9ו8₪₪ כותבת קובץ-על משופר (%6130/6 6סחחחש), עלולה להייות שגיאה אס הקשר ההתקן של המקור מוהה הקשר התקן של קובץ-על משופר. 89/6 מחצירה שגיאה אם הקשרי ההתקן של המקור והיעד מייצגים התקנים שונים (כלומר צריך תמיד ליצור את הקשר המקור עס הפונקציה 800/906ק0163160070). כדי להבין יותר טוב כיצד הפונקציה 89 פועלת כחלק מתוכנית, התבונן בתוכניתת 5 עפ שבתקליטור המצורף לספר זה (בתיקיה 00007). התוכנית טוענת. מפת סיביות לזיכרון, ואחר כך מעבירה אותה אל שטח הלקוח של החלון. החלק. הפעיל של התוכנית נמצא בפונקציה סזקטְחע 5 יצירת מפות סיביות תלויות התקן (518) סח תומכת במפות סיביות תלויות התקן ובמפות סיביות שאינן תלויות התקן. בסעיף קודם יצרנו מפת סיביות תלויית התקן והצגנו אותה על המסך. הצגת מפות. סיביות שאינן תלויות התקן נעשית בדרך דומה. חובה להפוך כל מפת סיביות שאינה תלויית התקן למפת סיביות תלויית התקן, כדי שנוכל להציג אותה בהקשר התקן. משתמשים בפונקציה 85וחא9018ו0103 כדי ליצור מפת סיביות תלויית התקן מתוך מפת סיביות שאינה תלויית התקן, ואפשר ג לקבוע את הסיביות של מפת הסיביות. את הפונקציה 80וז/016319018 כותבים כמו כמו בהגדרה שלהלן 0568060 ענמ 0 460106 0 שנשממת // ספ פגחטוע 0 עשמה1סם //‏ ,מגתמםב* תמתתפאסקגנקתעפזם צפאסס. 105046 804 186פ // 6 מ101811246:0ה1 // סו 80 18161411286108 60 פ6מתנסם //‏ ,ו1ה1ממ1* נסט עפאסס מפחט1ט 50 עסטת1סק // ,נמעמ1* סעאצקתעפזם צפאסס. 8 886ש08-50ב00 // 01 צאט / 0 ה2פחווו ומבוא ל-ספו הפונקציה ק9וזו61636018 מקבלת את הפרמטרים שמפורטים בטבלה 7.8 טבלה 7.8 : הפרמטרים של הפונקציה 80וח01618018/0. פרמטר | תיאור 6 | מזהה את הקשר ההתקן. חווחמקן | מצביע למבנה מסוג ה06הפוסאזקהוידום. אם זוחזו! שווה לערך דזוו1 68%, הפונקציה תשתמש במבנה. אשסהשהוס<שוזקוד81 כדי להשיג את הרוחב והגובה הרצויים של מפת. הסיביות ומידע אחר. שים לב שערך חיובי עבור הגובה מציין מפת. סיביות שאינה תלויית התקן מלמטה-למעלה, וערך שלילי עבור הגובה. מציין מפת סיביות שאינה תלויית התקן מלמעלה-למטה. תסריט זה תואס את הפונקציה פ8וזא019ט01031. אחזוט! | קבוצה של דגלי סיביות אשר מגדירים כיצד מערכת ההפעלה מאתחלת. את סיביות מפת הסיביות. התוכנית יכולה להגדיר קבוע אחד בלבד לפרמטר וה. ערך הפרמטר חייב להיות ד1א1 08% או אפט. אם דגל זה נקבע, מערכת ההפעלה משתמשת בנתונים שהפרמטרים. אחזפקו ו- ווחסטו מצביעים עליהם, כדי לאתחל את סיביות מפת. הסיביות. אם דגל זה אינו נקבע, הפונקציה אינה משתמשת בנתונים. שמוצבעים על ידי פרמטרים אלה. אם זוח1ו80 שווה לאפס, מערכת. ההפעלה אינה מאתחלת את סיביות מפת הסיביות. אחזסקו | מצביע למערך של בתים, שמכיל את נתוני האתחול של מפת הסיביות. הפורמט של הנתונים תלוי ביבר זחטססטו8וט של המבנה סאזקא/ד1 אשר הפרמטר וחזפפ! מצביע עליו. ווחטקו | מצביע למבנה מסוג סַאזקאווד81 אשר מתאר את המימדים ותבנית. הצבע של המערך, אשר הפרמטר אוחזפם! מצביע עליור 6 | מגדיר אם התוכנית אשר ייצרה את מפת הסיביות גם מאתחלת את. האיבר 5ז0ו00זט של המבנה 81101850 ; וא כן, האס 5זסו00/וחם. מכיל ערכים מפורשים של אדום, ירוק וכחול (%68), או אינדקסים של לוח צבעים. הפרמטר ססַ05ש! חייב להכיל ערך אחד או יותר מהערכים. שמפורטים בטבלה 7.9 הפרמטר 6ף009 מקבל ערך קבוע אחד מתוך שני ערכים אפשריים. טבלה 7.9 מפרטת. את ערכי הקבועים האפשריים של הפרמטר סמַ51053. פרק 7: מפות סיביות, קבצי-על וסמלום ‏ 171 טבלה 7.9 הערכים האפשריים של הפרמטר 1005896. עוך פירוש 5 אק 08 | קובץ מפת הסיביות מספק טבלת צבעים שמורכבת ממערך של אינדקסים בני 16 סיביות בלוח הצבעיס הלוגי של הקשר ההתקן, אשר התוכנית מציבה לתוכו את מפת הסיביות. 605 ₪68 8זם | קוב מפת הסיביות מספק טבלת צבעים ומכיל ערכי ₪68 אם הפונקציה מצליחה, הערך המוחור הוא ידית למפת הסיביות, אם הפונקציה נכשלת, הערך המוחזר הוא וט כדי להבין יותר טוב את פעולת הפונקציה ק09ש/6/63)0018, התבונן בתוכנית קבוחטו 8‏ 018 076806 שבתקליטור המצורף לספר זה (בתיקיה 07קָ618). התוכנית. טוענת מפת סיביות שאינה תלויית התקן, מציירת את מפת הסיביות בהקשר התקן בויכרון, ואחר כך מתרגמת את הקשר ההתקן שבויכרון להקשר ההתקן של המסך (חלון ‏ התוכנית). ‏ כרגיל, ‏ קוד התוכנית שבפונקציה 06זקח/ של התוכנית קהוחז/ 8‏ 018 016866 מבצע את העיבוד המעשי. 6 מילוי מלבן בתבנית תוכניות משתמשות במפות סיביות, כדי להוסיף גרפיקה לתצוגת החלון. בנוסף לכך, תוכניות יכולות להשתמש בעטים ובהקשרי התקן בציכרון, כדי לצייר בחלון צורותת פשוטות או מורכבות. לדוגמה, התוכניות יכולות להשתמש בפונקציה 309 כדי לציירר מלבנים בהקשר התקן. הפונקציה 819% מציירת את המלבן הנתון לתוך הקשר ההתקן באמצעות המברשת הנוכחית, וו שנבחרה לאחרונה. הפונקציה 8 משתמשת בפעולת הרשת (חסוזזפק0 ז85506) הנתונה כדי לשלב את צבע המברשת ואת. צבע המשטח. את הפונקציה ז/0319 כותבים כמו בהגדרה שלהלן. 005 1) 00065 460106 50 ב1התמת // 6 ספ 5 פשהפסם 181%-צסקמט 05 .0028-% // 6 5 0 .06 // 5 ששהצסם 18%%-צסקמט 0% .0098-ץ // 6 5 90 .0 // 4 5 50 616ה6002: 05 ת106ט // שת 46 4 > 60 2500806616 08 תתפצמת // ,פופה 46 עטק צ4560 // 90 טסוו 2 זקא2חווו ומבוא ל-ספו הפונקציה 319 מקבלת את הפרמטרים שמפורטים בטבלה 7.10 טבלה 7.10: הפרמטרים של הפונקציה מק פרמטר תיאור 6 | מזהה את הקשר ההתקן. | מגדיר ביחידות לוגיות את קואורדינטת א של הפינה השמאלית. העליונה של המלבן אשר הפונקציה עומדת למלא. | מגדיר ביחידות לוגיות את קואורדינטת + של הפינה השמאלית. העליונה של המלבן אשר הפונקציה עומדת למלא. שוח | מגדיר ביחידות לוגיות את רוחב המלבן. וזח | מגדיר ביחידות לוגיות את גובה המלבן. קסאוו | מגדיר את קוד פעולת הרשת (6006 חסטזסק0 זסופה). קוד זה. יכול להיות אחד הערכים שמפורטים בטבלה 77.11 כמו שראית בטבלה וו, הפרמטר ₪80 מקבל מספר שונה של קודי פעולות רשת. טבלה 7.11 מפרטת את קודי פעולות הרשת השונים, אשר התוכנית תשתמש בהם. טבלה 7.11: הערכים האפשריים של קודי רשת. ערך תיאור +קססזאק | מעתיק אל מפת סיביות היעד את התבנית המוגדרת. דחפשזדאק | משתמש באופרטור הבוליאני 08 כדי לשלב את צבעי התבנית. המוגדרת ואת צבעי מלבן היעד דהפשא1ד5ם | הופך את מלבן היעד. 5 | משתמש בצבע הקשור עס אינדקס אפס שבלוח הצבעיס הפוני, כדי למלא את מלבן היעד (צבע זה הוא שחור עבור ברירת המחדל של לוח הצבעים) 55פאשדזוו | משתמש בצבע הקשור עם האינדקס 1 שבלוח הצבעים הפווי, כדי למלא את מלבן היעד (צבע זה הוא לבן עבור ברירת המחדל של. לוח הצבעים) ערכי הפרמטר קסחוו של הפונקציה 039 הם תת-קבוצה מוגבלת מהקוד המלא של 6 הפעולות המתייחסות לרשת תלת-מימדית (835191 /ְזַחז1); במיוחד, אינך יכול. להשתמש בקוד פעולה אשר מתייחס למלבן מקור. לעיון ברשימה המלאה של קודי הפעולות עבור רשת תלת-מימדית פנה אל העורה המקוונת של המהדר שלך. דע, שלא כל ההתקנים תומכים בפונקציה 919/0. צריך להשתמש בפונקציה 661099/690305 כדר לבדוק את תאימות ד81181 ₪6 של ההתקן, לפני שאתה קורא לפונקציה 03196 עבור ההתקן. פרק ל: מפות סיביות, קבצי-על וסמלום = 173 כדי להבין יותר טוב את פעולת הפונקציה 6ו9ו73, התבונן בתוכנית ₪661 זחוט שבתקליטור המצורף לספר וה (בתיקיה 07קח6). התוכנית מציירת בחלון התוכנית. תיבה אפורה עם גבול תלת-מימדי. התוכנית 866% 081 משתמשת בשלוש מברשות. סטנדרטיות כדי לצייר את המלבן שמרכיב את הגבול התלת-ממדי של התיבה הפונקציה 06ז00ח//ו של התוכנית ₪66 .₪81 מבצעת את העיבוד המעשי. 7 שימוש ב-56+018/15 ככל שהתוכניות הופכות ליותר מורכבות, ייתכן לעיתים צורך לשנות את ערכת הצבעים של מפת הסיביות (6וח0ה50 ז0ו0) 5'בוח8). למדת שמפות סיביות שאינך תלויות התקן מחציקות את מידע הצבע בכותר מפת הסיביות (863000! ₪085 באפשרותך להשתמש בצבעים שהתוכנית היוצרת אחסנה קודם לכן בכותר מפת הסיביות שאינה תלויית התקן, כדי לשנות את הצבעים של מפת סיביות נתונהה הפונקציה 56018405 משתמשת בנתוני הצבע שהיא מוצאת במפת הסיביות המוגדרת. שאינה תלויית התקן, כדי לקבוע את הפיקסלים במפת הסיביות. את הפונקציה 85 כותביס בתוכניות כמו בהגדרה שלהלן 46 0 450106 50 מנמחמת // 6 ספ 00 05 שנבתגמ // ופחמת פהאענמט 1186 5088 הַתנמ8689 // 56450 פאצט 8 508 05 טשמחמת // 50 פאנט חפוס 08 עבששב // ,טי סנס עפאסס 10% שפטססטפםפ 08 8442685 //‏ |נממ1* סעאנסתעזט צפאסס טג 1 00105 05 שסצט // 0016 פאצט / הפונקציה 5601816 מקבלת את הפרמטרים שמפורטיס בטבלה 7.12 טבלה 7.12: הפרמטרים של הפונקציה 56%018185. פרמטר תיאור 6 | מזהה את הקשר התקן. קוחטו | מוהה את מפת הסיביות אשר הפונקציה 561018185 עומדת לשנות על. ידי שימוש בנתוני הצבע ממפת הסיביות שאינה תלויית התקן. 5030903 | מגדיר את קו הסריקה ההתחלתי עבור נתוני הצבע שאינו תלוי התקן במערך שמוצבע על ידי הפרמטר 85אקן. 5 | מגדיר את מספר קווי הסריקה שמצאה הפונקציה במערך שמכיל. נתוני צבע שאינם תלויים בהתקן. 4 זקא2פחווו ומבוא ל-ספו פרמטר תיאור פוופצמן | מצביע לנתוני הצבע של מפת הסיביות שאינה תלויית התקן, אשר הפונקציה מאחסנת כמערך בתים. התבנית של ערכי מפת הסיביות. תלויה באיבר זחטססאו8ום של המבנה סַאַקאואד81 שמוצבע על ידי הפרמטר ווחטט ווחטקו | מצביע למבנה הנתונים 81171850 שמכיל מידע על מפת הסיביות. שאינה תלויית התקך 06 | מגדיר אם הגדרת מפת הסיביות מכילה את האיבר 015ו60ווחט של. המבנה 81171850 ; ואם כן, האם 015ו00וחט מכיל ערכים. מפורשים של אדום, ירוק, כחול (868), או אינדקסי צבע של לוח. צבעים. הפרמטר 00101056 חייב להיות אחד הערכים שמפורטים. בטבלה 7.13 בתוך טבלה 7.12 אפשר ללמוד שהפרמטר 1000/0058 מקבל מספר ערכים קבועים. מובנים. טבלה 7.13 מפרטת את הערכים שמקבל הפרמטר 07055ו00. טבלה 7.13: הערכים האפשריים של הפרמטר 1000107056. ערך פירוש 6005 4 18 | טבלת הצבעים מורכבת ממערך של אינדקסים בני 16 סיביות בלוח הצבעים הלוגי של הקשר ההתקן שמזוהה על. ידי הפרמטר 06 5 868 018 | מפת הסיביות מספקת טבלת צבעים שמכילה במפורש ערכי 8 אם הפונקציה מצליחה, הערך המוחזר הוא מספר קווי הסריקה אשר הפונקציה 5 העתיקה בהצלחה; אם הפונקציה נכשלת, הערך המוחור הוא אפס. וסחו משיגה מהירות אופטימלית בציור מפת סיביות כאשר הסיביות של מפת הסיביות הם אינדקסים בלוח הצבעים של המערכת. יישום יכול לקרוא לפונקציה 0000500065ו3וח0615/500 כדי לקבל את צבעי לוח הצבעים של המערכת ושל האינדקסים. לאחר שהיישוס מקבל את הצבעים והאינדקסים, הוא יכול ליצור את מפת הסיביות שאינה תלויית התקן. הפונקציה משתמשת בהקשר ההתקן שמווהה על ידי הפרמטר ₪66 רק אס אתה מציב את הקבוע 5 ואל 018 עבור הפרמטר 056ז0ו0סט!; אחרת, הפונקצייה מתעלמת מהפרמטר 6 לתוכנית שלך או לתוכנית אחרת אסור לבחור את מפת הסיביות שמזוחה על ודי הפרמטר פוחפה לתוך הקשר ההתקן, בשעה שהיישום קורא לפונקציה 065ח7/6010וח6619/50. נקודת המוצא של מפות סיביות שאינן תלויות התקן מלמטה-למעלה היא הפינה השמאלית התחתונה של מפת הסיביות; נקודת המוצא של מפות סיביות שאינן תלויות התקן מלמעלה-למטה היא הפינה השמאלית העליונה של מפת הסיביות. פרק ל: מפות סיביות, קבצי-על וסמלום | 175 כדי להבין יותר טוב את פעולת הפונקציה 5601805, התבונן בתוכנית פזסוסס. 6896 שנמצאת התקליטור המצורף (בתיקיה 07קָח6). תוכנית זו מציירת. מפת סיביות שאינה תלויית התקן בשטח הלקוח של החלון. בתחילה, התוכנית צובעת. את מפת הסיביות בצבעי שחור ולבן. כאשר המשתמש בוחר באפשרות שפד מהתפריט, התוכנית משנה את נתוני מפת הסיביות, כך שכל שני פיקסלים שחורים. עוקבים מחזירים את הצירוף של פיקסל כחול-שחור. הפונקציה 66זח מכילה את. הקוד המעשי של התוכנית. 8 פלט של מפת סיביות להתקן נתון באמצעות 000166 56+0181151 למדת שבאפשרות התוכניות להשתמש בפונקציה 510181 כדי לקבוע את סיביותת הצבע של מפת סיביות, בהתאם לערכים שמכיל הכותר של מפת הסיביות שאינה תלויית התקן. פעמים רבות, התוכניות חייבות לצמצם את מספר הצבעים של מפת סיביות שאינה תלויית התקן בשעה שהן מפיקות פלט אל התקן מסוים. לדוגמה, 605 חו חייבת למפות מפת סיביות של 256 צבעים למפת סיביות של 20 צבעים כאשר צריך להוציא את מפת הסיביות כפלט אל צג א6/. הפונקציה 501018010060/65 מציירת מפת סיביות שאינה תלויית התקן בהתקן שקשור עם הקשר ההתקן הנתון. בנוסף לכך, הפונקציה משתמשת בנתוני הצבע של מפת הסיביות שאינה תלויית התקן המקורית, כדי לקבוע את הפיקסלים במפת הסיביות המצוירת. את הפונקציה 56101851006/66 כותבים בתוכניות כמו בהגדרה שלהלן. 46 30018155 6אפפתסם 000108 05 שנההגם // הי 186-פבמקט 05 866ת00281-א // א 46 .9606 .068% 05 8שתט0ש // קט 05 שממת0201סס-ץ // 4 .006ע ,008% 05 צשתעמם // 01880 560880916 10506 // סו 06406 560880016 שפמ0. // 6 ספסוום 05 002010886ס-6 // 46 605ץ מסעוסט 01 פשתצמם // 05 9010866 600-ץ // 46 0פט50 05 שמשמש ]/ ץפצפג 3 1106 מבסם 5%צ91 // 5 פאצט 11868 5088 05 פשמממם // 650 עאצט 168 מ1ם מ16א ע8שטב 05 484:658 // ,פ6!מטם1* מנסט עפאסס 10 שפטוסטע%פ 0% 55סע800 //,1מעמ1* סקצקתעפזם צפאסס. טג // הנק עם המת // 00 אנט / 6 זקא2פחווו ומבוא ל-ספו הפונקציה 56101805100666 מקבלת את הפרמטרים שמפורטים בטבלה 7.14 טבלה 7.14: הפרמטרים של הפונקציה 008/66ד51018/05. פרמטר 66 סא פצ ו ו 6 6 ה בו הפו ב ב תיאור מוהה את הקשר ההתקן. מגדיר ביחידות לוגיות את קואורדינטת א (4-00016/0819) של הפונה. השמאלית העליונה של מלבן היעד. מגדיר ביחידות לוגיות את קואורדינטת + (60016/089-+) של הפינה. השמאלית העליונה של מלבן הועד. מגדיר ביחידות לוגיות את הרוחב של מפת הסיביות שאינה תלויית. התקן מגדיר ביחידות לוגיות את הגובה של מפת הסיביות שאינה תלוייתת התקן. מגדיר ביחידות לוגיות את קואורדינטת א של הפינה השמאלית. התחתונה של מפת הסיביות שאינה תלוייית התקן. מגדיר ביחידות לוגיות את קואורדינטת ץ של הפינה השמאלית. התחתונה של מפת הסיביות שאינה תלוייית התקן. מגדיר את קו הסריקה ההתחלתי במפת הסיביות שאינה תלויית. התקן מגדיר את מספר קווי הסריקה במפת הסיביות שאינה תלויית. התקן, במערך שמוצבע על ידי הפרמטר פזוצן. מצביע לנתוני הצבע של מפת הסיביות שאינה תלויית התקן, אשר התוכנית היוצרת של מפת הסיביות אחסנה אותם קוד לכן כמערך. בתים. מצביע למבנה הנתונים 81 שמכיל מידע על מפת הסיביותת שאינה תלויית התקן. מגדיר אס האיבר 5ז0ו00ווח של המבנה 1850ק8171%/4 מכיל ערכים. מפורשים של אדום, ירוק, כחול (868), או אינדקסי צבע של לוח. צבעים. הפרמטר 00101056 חייב להיות אחד הערכים שמפורטים. בטבלה 7.13 ניתן לראות, שהפרמטר 100000056 מקבל אחד משני ערכים מובנים. טבלה 7.13 מפרטת את הערכים שמקבל הפרמטר 0/0105 עם הפונקציה 561018//1006/65. פרק ל: מפות סיביות, קבצי-על וסמלום = 177 הפונקציה משיגה מהירות אופטימלית בציור מפת טיביות כאשר הסיביות של מפת הסיביות הס אינדקסים בלוח הצבעים של המערכת. היישום יכול לקרוא לפונקציה 065ח10ו6/קוח0פ/6619 כדי לקבל את צבעי לוח הצבעים של המערכת ואת האינדקסים. לאחר שהיישום מקבל את הצבעים והאינדקסים, הוא יכול ליצור את מפת הסיביות שאינה תלויית התקן. נקודת המוצא של מפות סיביות שאינן תלויות התקן מלמטה-למעלה היא הפינהה השמאלית התחתונה של מפת הסיביות; נקודת המוצא של מפות סיביות שאינן תלויות. התקן מלמעלה-למטה היא הפינה השמאלית העליונה של מפת הסיביות. על התוכנית. לצמצם את כמות האיכרון שדרושה לקביעת סיביות במשטח ההתקן מתוך מפת סיביות גדולה שאינה תלויית התקן. לשם כך, היא יכולה. לחזור. ולקרוא ל- 560018/070060/68 כדי לחלק את הפלט, פעולה שמציבה כל פעם חלקים שונים. ממפת הסיביות אל תוך המערך פופפו. ערכי הפרמטרים 0115600ופט ו- 650302065 מוהים את החלק של מפת הסיביות שמכיל המערך >אפוק|. הפונקציה 5101810066 מחזירה שגיאה אם תהליך אשר מופעל ברקע (6חטסזף836%) קורא. לה בומן שמסך 15-205/ מלא מופעל בקידמה (10006ףסזס=). כדי להבין יותר טוב את פעולת הפונקציה 6/ש561018/81008, התבונן בתוכניתת 05 2 אופזם שבתקליטור המצורף לספר וה (בתיקיה 07ק5ח6). התוכנית. משתמשת במפת סיביות שאינה תלויית התקן ובלוח צבעים מותאם אישית. התוכנית. מציירת את מפת הסיביות שאינה תלויית התקן בגודלה הנורמלי, ומשתמשת לצורך. זה בפונקציה 081006/65ו560019 ואחר כך משתמשת בפונקציה 5001000188 כדי להציג את מפת הסיביות ב- 200 אחוו מגודלה המקורי. העיבוד המעשי של התוכנית. 5 2 שופזם נעשה בפונקציות הטיפול בהודעות 685476 אש ו- זאזאק ואר שבפונקציה סזלטחעצ. 9 קבצי-על (16+81!65]) בסעיפים קודמים למדת על מפות סיביות. גם למדת ש- פווסחוו תומכת בשלושה סוגי גרפיקה בסיסיים. הסוג השני ידוע כ- קובץ-על (6186/6א). קבצי-על מכילים למעשה קריאות מקודדות לפונקציות של ממשק ההתקן הגרפי 06069 6100006 0060 635 חסווסחט 066ווטזח1). כאשר תוכנית מפעילה (ץ8וק) קובץ-על, התוצאה זהה, כאילו התוכנית הייתה משתמשת ישירות בפונקציות ממשק ההתקן הגרפי. למעשה, תוכל לראות קובץ-על כמאקרו גרפי יעיל. באפשרותך לאחסן קבצי-על בויכרון (אר כקובץ בדיסק), באפשרותך לטעון מחדש את קובץ-העל, וגס תוכל להריץ את קובץ-העל במספר כלשהו של יישומים שונים. בנוסף לכך, קבצי-על הם אינם תלויר התקן יותר מאשר מפות סיביות, מכיון שהמחשב (וההתקן) מפרשים את פונקציות. ממשק ההתקן הגרפי בהתבסס על הקשר התקן הפלט. א9 פאוסחו/ ו- דא פווסטחווו תומכות בקבצי-העל של 9% פאוסטחוו. עס זאת, שתר מערכות ההפעלה של 2חו תומכות גם כן בסוג החדש של קובץ-על משופר (696חהחחם. 6, וכך גם התוכניות שלך, צריכות להשתמש בקבצי-על משופרים. ההבדל העיקרי בין קובץ-על של אפ פווסחו לבין קובץ-על משופר הוא בכך שקבצי-על משופרים באמת אינם תלויים בהתקן וגם תומכים בפונקציות החדשות של ממשק ההתקן הגרפי של זקא 32חואו (זקא 601 32חוו/. 8 הככו ומבוא ל-ספו חשוב להבין שממשק 471 לבחו תומך באופן מלא בקבצי-העל של 16חוו. למעשה, זחא 32חו מכיל שתי קבוצות של פונקציות המיועדות לקבצי-על - קבוצה אחת עבור זחא 16חוו וקבוצה שנייה עבור 71 32ח/. לדוגמה, התוכניות יכולה לקרוא לפונקציה 7 כדי להריץ קובץ-על בן 16 סיביות. בדרך דומה, התוכניותת יכולה לקרוא לפונקציה 6!גופויוחחפַעמוק כדי להריץ קובץ-על בן 32 סיביות. ההסברים. שנציג בספר וה מתמקדים בקבצי-על משופרים, ולא בקבצי-על של 16ְחוו. 0 יצירה והצגה של קבצי-על (16%361165]) למדת שקובץ-על הוא סדרת הוראות של ממשק התקן גרפי שהתוכנית היוצרת אחסנה. קודם לכן במבנה כלשהו. השתמש בפונקציות של ממשק ההתקן הגרפי בהקשר התקן של קובץ-על, כדי ליצור קבצי-על. השתמש בהקשר התקן מיוחט (060/09 6010006 0) כבסיס עבור קובץ-העל שבו תחזיק מימדי תמונה עבור התקני פלט שונים. ההתקן המיוחס מתאים להתקן שבו מוצגת התמונה לראשונה. משתמשים בפונקציה 1600016 כדי ליצור קבצי-על. פונקציה זו יוצרת הקשר התקן עבור מבנה, או פורמט, משופר של קובץ-על. באפשרותך להשתמש בהקשר ההתקן הנוצר כדי לאחסן תמונה שאינה תלויית התקן. את הפונקציה 10300000%6135/6. כותבים. בתוכנית, כמו שניתן לראות בהגדרה שלהלן מע ספ 6%%פתסם 40010 08ה5020ם: 60 ב1מתמת // 95 ספ 50108 11002 8 50 עבמה1סק //‏ ,שממהש11תק1 תלפפסק1 פתנשתטסם 4 0: ששמהנסם //‏ ,םסבהמ1* צסמת צפאסס 1מסוסקס תג 50 עבטהנסק // מס1סם1ע0פממק1 תעפפסק1 שת1ע80 מ10סס1ע50 // הפונקציה 016130/6ח6163195 מקבלת את הפרמטרים שמפורטים בטבלה 7.15 טבלה 7.15: הפרמטרים של הפונקציה 8650/6030/6סז). פרמטר | | תיאור 6 | מזהה הקשר התקן מיוחס עבור קובץ-על המשופר. פוחפחטווק! | מצביע לשם הקובץ של קובץ-על משופר שהפונקציה צריכה ליצור. אס פרמטר זה הוא -1, קובץ-העל המשופר היה מבוסס איכרון והתוכן שלו יאבד כאשר משתמשים בפונקציה 1/61306חפסו6וט, כדי למחוק אותו. ו | מצביע למבנה מסוג 8567 אשר מגדיר את מימדי התמונה (ביחידות. של 0.01 מילימטר) שהתוכנית תאחסן בסופו של דבר בקוב-העל. המשופר. פרק ל: מפות סיביות, קבצי-על וסמלום = 179 פרמטר תיאור חסטקוז0פטסמן | מצביע למחרוזת אשר מגדירה את שם היישום, אשר יצר את. התמונה ובכלל וה גם כותרת התמונה. המחרוזת שמצביע עליהה הפרמטר חסטו0950ק! חייבת להכיל תו )וט בין שם היישום לבין שם התמונה וחייבת להסתיים בשני תווי.4וא. לדוגמה המחרוות. *יס5516 6078316ו86 פסוחקפז6 צאיי, שבה 0 מסמן את הת וטא!. א חסטקו650ספ! הוא -0א, אין כניסה מתאימה בכותר של קובץ-העל המשופר. סח משתמשת בהתקן המיוחסי שמזוהה על ידי הפרמטר 66861 כדי לרשום את הרוולוציה ואת היחידות של ההתקן שבו מוצגת התמונה במקור. אם הפרמטר 0686 הוא 611א, 5סחוו משתמשת בהתקן התצוגה הנוכחי לצורך ייחוס. האיברים 16 ו-67ד של המבנה ₪861 שמוצבעים על ידי הפרמטר :1860 חייבים: להיות קטנים מהאיברים זִַפָ ו-וזסזוסם, בהתאמה. הנקודות לאורך צלעות המלבן נכללות בתמונה. אם הפרמטר :2860 הוא 01 ממשק ההתקן הגרפי מחשב את המימדים של המלבן הקטן ביותר שמקיף את התמונה שצויירה על ידי היישום. התוכניות צריכה לספק את הפרמטר 86| כל שהדבר אפשרי. יישומים משתמשים בהקשר ההתקן שנוצר על ידי הפונקציה 0/6138/6ח95ו63ז) כדר לאחסן תמונה גרפית בקובץ-על משופר. התוכניות יכולה למסור את הידית אשר מזהה. את הקשר ההתקן הזה לכל פונקציה של ממשק התקן גרפ. לאחר שיישום מאחסן תמונה בקובץ-על משופר, הוא יכול לקרוא לפונקציה 6וזזסוחחסַהוק כדי להציג את התמונה בהתקן פלט כלשהו. כדי להציג את התמונה, פוסחוו. משתמשת במלבן שמוצבע על ידי הפרמטר 89₪ק1 ובנתוני הרוולוציה מההתקן המיוחס כדי למקם ולדרג את התמונה. הקשר ההתקן שמחצירה הפונקציה. 66 החם/פוק מכיל את אותם ערכי ברירת המחדל שקשורים עס כל הקשר התקן חדש כלשהו. יישומים חייבים להשתמש בפונקציה 6028/6815/%חו//660 כדי להמיר קובץ-על משופר לפורמט 5ס0חוו הישן של קובץ-על. שם הקוב של קובץ-על משופר צריך להשתמש בסיומת *וו8. כדי להבין יותר טוב את פעולת הפונקציה 1603(6חח63195ז6, התבונן בתוכניתת 80% ח06מ9פסז) שנמצאת בתקליטור המצורף לספר וה (בתיקיה 07ק6). התוכנית. יוצרת קובץ-על משופר של מלבן שממולא במברשת מסוג 01055-1/800066 (מללו על וידר תבנית רשת) בעת האתחול. התוכנית מריצה אחר כך את קובץ-העל מתוך הפונקציה. לטיפול בהודעות. דא1ק א//.. התוכנית מדרגת את קוב-העל בהתבסס על שטח הלקוח של החלון, ומשמעות הדבר שגודל המלבן משתנה ככל שמשנים את גודל החלון. פונקציות הטיפול בהודעות 685416 עו ו- דאזאק ו מבצעות את העיבודד המעשי בתוכנית זור 0 321חווו ומבוא ל-ספו 1 רשימה מפורטת של קבצי-על משופרים (6ד פחוזבּזוסוהטח" 5 6006ה ה חהם) התוכניות יכולות להפעיל קבצי-על לצורך שימוש חוזר בהוראות מאוחסנות של ממשק. ההתקן הגרפי. למעשה, באפשרותך לאחסן קבוצות רבות של הוראות בקובץ-על נתון כל קבוצת הוראות היא רשומה (86006) בקובץ-העל. יותר מאוחר, יתכן שתרצה לגשת ולהשתמש בקבוצת הוראות מסוימת מתוך קובץ-העל, או רק לבדוק אילו הוראות יש בור כדי לעשות ואת, תוכל להשתמש בפונקציה 6ו₪גז6אחחפוחטת= כדי להכין רשימה מפורטת (ס)גזשחוטח5) של כל הרשומות שבקובץ-העל. הפונקציה 16126/חחסוחטחם. מקבלת כל רשומה בקובץ, ומעבירה אותה לפונקציית המשוב (חסו6חט 031186 שאתה מגדיר, כדי להכין רשימה מפורטת של הרשומות שבמבנה קובץ-העל המשופר. פונקציית המשוב שמסופקת על ידי היישום מטפלת בכל רשומה כנדרש. הרישום נמשך. עד שפונקציית המשוב שמסופקת על ידי היישום מגיעה לרשומה האחרונה, או כאשר הפונקציה מחזירה אפס. את הפונקציה 85/6ז6אחחפוחטח= כותבים בתוכניות כמו בהגדרה שלהלן. 16016 תפות 008 60 16חמת // 6 6 שסמפמחם 60 ש1המאת // המופ 6 וק הממ 1 קספו 04110466 0ף ש%6ת01ם // 854 הס1וסהנ5 80%מ0811 0 ש6ת1סם // ,ף8ספ1 פדסטק1 506816 פַת81תוסם ס שששמ1סם // 1%* פספא עפאסס. 3 הפונקציה 161356 חשחווחם מקבלת את הפרמטרים שמפורטים בטבלה 7.16 טבלה 7.16: הפרמטרים של הפונקציה 1636 חח וחנות=. פרמטר תיאור 6 | מזהה הקשר התקן. התוכניות חייבות למסור ידית זו לפונקציית המשוב. זוחפח | מזהה קובץ-על משופר. 6חנגס6ואחחסק 1 | מצביע לפונקציית המשוב שמסופקת על ידי היישום. בוסק | מצביע לנתוני רשות של פונקציית המשוב. | מצביע למבנה מסוג 850 אשר מגדיר את הקואורדינטות של הפינה השמאלית העליונה ואת הפינה הימנית התחתונה של. התמונה. מבנה זה מגדיר את מימדי המלבן ביחידות לוגיות. פרק ל: מפות סיביות, קבצי-על וסמלום | 181 פונקציית הרישום של 81 (חססחט: חסטגזפוחטח6 1קא) משתמשת בפונקציית משוב, כדי לעבד את המידע שפונקציית הרישום מחזירה. הפונקציה 6125!6!/חחסוחטחם משתמשת בפונקציית משוב עם התבנית הכללית של הפונקציה 25/60106ז6/חחם. הפונקציה 67106ו/16138וחח= מעבדת את התבנית המשופרת של קוב-העל. את הפונקציה 16137/60106ח= כותבים בתוכנית כמו בהגדרה שלהלן | 160206 1ת8:סעתהם אסתםננתס 18 00 469406 50 16ממת // ,ספת ספ 16ממגה 6541116 50 עשמהצסק // ,16מבצאק1* התא םנהתדםנקוות מ // 8 64118סה 50 עשמתגסם // ,תתאמםנ* התע סהססמהמתמוקותם 001668 05 ממטסם // ,פס 46 [בחס1סקס > צספמגסק // ףגסט1 ותהת1 הפונקציה 2/60106ז6אחחש מקבלת את הפרמטרים שמפורטים בטבלה 7.17 טבלה 7.17: הפרמטרים של הפונקציה 161376706 חחם. פרמטר | תיאור 6 | מוהה את הקשר ההתקו שהתוכנית מוסרת לפונקציה ו ודו | מצביע לטבלה של ידיות הקשורות עם האובייקטים הגרפיים (עטים, מברשות, וכדומה) בקובץ-העל. הכניסה הראשונה מכילה את ידיתת קוב-העל המשופר. ואפ | מצביע לאחת הרשומות בקובץ-העל. התוכניות אינן צריכות לשנות. רשומה או (אם יש צורך בשינוי, התוכנית צריכה לבצע אותו על העתק. הרשומה). סח | מגדיר את מספר האובייקטים עם חידיות הקשורות בטבלת הידיות. בוספו | מצביע לנתונים כלשהס שמסופקים על ידי היושום. היישוס חייב למסור לפונקציה 86ו6אחחפוחטח= את כתובת פונקציית המשוב, כדי שתוכל לרשוס אותה. כמו עם שאר פונקציות המשוב שלמדת עליהן בסעיפים קודמים, השם 603560706אחחש שומר מקום לשס פונקציית המשוב שמסופקת על ידי התוכנית. התמונה מכילה נקודות לאורך צלע המלבן שמוצבע על ידי הפרמטר 66חםו. אם הפרמטר סח הוא -011א, 5וס6חוו מתעלמת מ-890ק!. אס פונקציית המשוב קוראת. לפונקציה %613/866086חחפעפוק, סח חייב לוהות הקשר התקן תקף. טחוש משתמשת בטרנספורמציות של הקשר ההתקן ושל מצב המיפוי, כדי לבצע את הטרנספורמציה על התמונה שמציגה הפונקציה 26866076ז6/וחחש/פוק. באפשרותך. להשתמש בפונקציה 86ז6אחחפוחטח5 כדי לשלב קובץ-על אחד עס קובץ אחר. 2 כו ומבוא ל-ספו כדי להבין יותר טוב את פעולת הפונקציה 2!6ז6ווחחסוחטחם, התבונן בתוכניתת 5 אומזם שבתקליטור המצורף לספר וה (בתיקיה 6₪8007). התוכנית טוענת. קובץ-על משופר ומציגה אותו בשטח הלקוח של החלון. כאשר המשתמש בוחר באפשרות /6ד, התוכנית מריצה שוב את קובץ-העל, אך הפעם היא משתמשת בפונקציה 3!6ווחחפוחטחם. ‏ פונקציית המשוב לוכדת את רשומת קובץ-העל דספהזסאזז5 המדאה .58 ומחליפה אותה במברשת בצבע אפור בחיר. העיבוד המעשי של התוכנית נעשה בפונקציות 06וק6ח/ ו-6ופשחפל. כאשר מהדרים ומפעילים את התוכנית 5035 אופזם, התוכנית מציירת תחילה את התמונות עם רשת ₪808 01055), ואחר כך מציירת אותן שוב באפור מלא. 2 הפונקציה 1!68165-]101/16%3/+30 תוכניות 32חו צריכות להשתמש במבנה קובץ-על משופר. ככל שרוצים שאותה תוכנית תפעל בפלטפורמות רבות, יהיו מקרים שבהס התוכניות תהיינה חייבות להמיר קובץ-על משופר לסגנון קובץ-על של 9% 006חוו. הפונקציה 061685 ממירה פורמט של רשומות קובץ-על משופר לפורמט רשומות קובץ-על של 60065חוו, ומאחסנת את הרשומות המומרות בחוצ המצוין בפרמטר המתאים. את הפונקציה כותבים בתוכניות כמו בהגדרה שלהלן. 1 6 60806664 שג 50 16שממת // ,הסה ממנטתדסאאאט 8 56₪פמט // ,55 עאצט פטס 60 צשסמ1סק // ,5565טממק1 מצצמק1 6 פַבמסה // א 6אשפתסם 060106 261696806 05 שנשממת // 6 הפונקציה ופפו613/חו//661 מקבלת את הפרמטרים שמפורטים בטבלה 7.18 אס הפונקציה 6035/6885/חו661 מצליחה והמצביע למאגר הוא 1ט', הערך המוחזר. הוא מספר הבתים שהפונקציה צריכה כדי לאחסן את הרשומות המומרות. אס הפונקציה מצליחה והמצביע למאגר הוא מצביע תקף, הערך המוחזר הוא גודל הנתונים של קובץ-העל, בבתיים; אם הפונקציה נכשלת, הערך המוחזר הוא אפס. הפונקציה. 613₪/6805חו// 660‏ ממירה ‏ קובץ-על משופר לפורמט קובץ-על של 05 כך שיישום אשר מכיר את הפורמט חישן בלבד יוכל להציג את קוב-העל. סח משתמשת בהקשר ההתקן המיוחס (040חס6 06466 66160096ה) כדי לקבוע. את הרזולוציה של קובץ-העל המומר. הפונקציה 06125/6815ו//660 אינה מבטלת את. תקפות הידית של קובץ-העל המשופר. היישום צריך לקרוא לפונקציה 61016066 כדי לשחרר את הידית כאשר היישום אינו צריך אותה עוד. פרק ל: מפות סיביות, קבצי-על וסמלום = 183 טבלה 7.18: הפרמטרים של הפונקציה 5ז%6127/681/חו//660. פרמטר | | תיאור זוחס! | מזהה את קובץ-העל המשופר. 608/01 | מגדיר את הגודל, בבתים, של החוצץ שהפונקציה. 601 מעתיקה לתוכו את הרשומות המומרות. !סק | מצביע לחוצ שהפונקציה 16815 60111615 מעתיקה לתוכו את הרשומות המומרות. אם 81| הוא 11א', 16169005/הו//. מחזירה את מספר הבתים שהפונקציה וקוקה להם, כדי לאחסן את רשומות קוב-העל המומרות. 6 | מגדיר את מצב המיפוי שהתוכנית צריכה להשתמש בו עס קוב-העל המומר. 61 | מזהה את הקשר ההתקן המיוחס. בגלל ההגבלות לפורמט קובץ-העל של פווסטחו/+, חלק מהמידע יכול ללכת לאיבודד מתוך קובץ-העל המתקבל. לדוגמה, הפונקציה יכולה אולי להמיר קריאה לפונקציה 00/8026 שנמצאת במקור בקובץ-העל המשופר, בקריאה לפונקציה פחוץו0ק שתהיה. בקובץ-העל של פווסחוו, מפני שאין פונקציה שקולה ל-86261/ו0ק בתבנית של קובץ. ו כדי להבין יותר טוב את פעולת הפונקציה 885ַפח660, התבונן בתוכניתת וא 885 %וסצחס6 שבתקליטור המצורף לספר זה (בתיקיה 083007). התוכנית. ממירה קובץ-על משופר נתון (במקרה זה, 6.6ק53) לקובץ-על סטנדרטי של א9 0005ח/. התוכנית שומרת אחר כך את קובץ-העל המומר כ- זוחאו.06קו530. העיבוד. המעשי של התוכנית נעשה, כרגיל, בפונקציה סזקטחע 3 סמלים (160₪5) פוסטחו\. תומכת בשלושה סוגים בטיסיים של קבציס גרפיים. למדת שבאפשרות התוכניות להשתמש במפת סיביות וקובץ-על כדי לנהל גרפיקה גדולה או קטנה בשטח הלקוח של החלון, ואפילו בחלון עצמו. סמלים (5חס0!) הס למעשה תת-מחלקה (0899-ט5) של מפות הסיביות. עם ואת, קבוצת הפעולות אשר תבצע באמצעות. סמלים קטנה ומוגבלת, ולכן פווסטחו\ מתייחסת לסמלים כסוג נפרד של קוב גרפי. סמלים הס מפות סיביות קטנות אשר פווסשחו/ו משתמשת בהם כמייצגים חזותיים של. אובייקטים, כמו יישומים, קבצים ותיקיות. ב- 9% פווסשחואו תראה סמלים רבים ושונים בממשק המשתמש. בגרסאות מוקדמות של פאוסטחוש או דא פאוסטחו, פגשנר בסמלים בעיקר במנהל היישומים (זטָח3/ ִבזפָסזק) 4 כו ומבוא ל-ספו יישום טיפוסי של אפ פאוס6חוו או דא פאוסחו/ו מכיל לפחות שני סמלים : סמל גדולל (32 א 32) וסמל קטן (16 א 16). פווסטחוא מציגה את הסמל הקטן בפינה השמאלית. העליונה של חלון היישום בשעה שהיישום מוקטן לסמל (66טחוחו/, אד ממוזער). 05 משתמשת בסמל הגדול עבור סמלי שולחן העבודה ועבור תצוגות סמל גדול. בדרך כלל יוצרים סמלים עם עורך התמונות (ז5/00 ססָבח1) של ערכת פיתוח התוכנה 500 6 זחסוחקסופטסם 876מ50) של א9 5אוס6חוא אד עסו עורך אחר, כמו למשל עורך. הסמלים של ++6 /3פו/. אחר כך משתמשים בהוראה 100% כדי להוסיף את הטמלים. אל קובץ המשאבים של היישום. דוגמה טיפוסית לשימוש בסמלים היא הרישום של מחלקת החלון הראשי. כמו שראית בתוכניות השונות שלמדת עד כה, התוכניות סמל בשעה שהן רושמות את מחלקת החלון (0259 69%חו על ידי קריאה לפונקציהה פפּסספוָה, כמו שרואיים להלן: ,968 םהה מסאותעפאתה) ת1בעתגא צהפונמנעת 45 ,06מ68פה1ש6פקן מסתתעפאצ (שסהפבתסה 18% ,שת1מבמסק1 אעפעקם 4 חור טטור .01858 918606 מ1108610מקה הצממ ש(ף צב155חָטת // ;אתהספחט 05 | אתתספתם פס 8 0 (00הפסאא) = | ססעקבמאתפ1 סט 01 0 0 0 ררה 1 שמפאמקתפפש1 ,08ה68פת1מ)ת1088100 = 0 וספת 100 ,8011) 106002805 9 ; (+אססווצון ה0.מסס) (מפטחפ8) = בתטסעף80%פעמת סט קסהפומקת52מ1 = במגחטהס2פם1 סט פומקת2פמ1 = 886א8201455ם1 סש ((666) 601586501458ת1) 18 פס ₪008 שצסון // כמו שניתן לראות, קטע הקוד הקודם רושם סמל עם השם שמכיל המצביע למחרוזת. וטק הפקו כסמל של החלון הראשי. בסעיפים שיבואו בהמשך, תלמד יותר כוצד להצמיד סמל לתוכנית. פרק ל: מפות סיביות, קבצי-על וסמלום | 185 4 יצירת סמלים כמו עם מפות סיביות וקבצי-על, פווסחו מאפשרת לך ליצור ולשנות סמלים בומן ריצה. התוכניות ישתמשו בדרך כלל בפונקציה 0163191600 כדי ליצור סמל בזמן ריצה. הפונקציה 6163161600 מאפשרת לתוכניות ליצור סמלים ממערכים בינריים, נתוניס שלל מפות סיביות, ומפות סיביות שאינן תלויות התקן. הפונקציה ח616318165 יוצרת סמל בגודל המוגדר, בצבעים המוגדרים ובתכניות סיביות מוגדרות. את הפונקציה 0103001000 כותבים בתוכניות כמו בהגדרה שלהלן )068661608 אאם: 6 1108010תקג 50 416מאמ // ,6סמ4םפהנמ פסאהלפאנט 100 ]/ 6 00 // ,תפות 46 10085%מ 308 18 משמג1ם 05 פממחמם // ,168 מצצם 408 מ1 61א1ק ששם 168 05 פשמממם // ,161 מצצם טג // עגעעג אפגחט1ע סאג סט עםממנסק // ,58צמסאתממ1* מפצם צפאסס עגעעג אפגחטנע תסא 60 צבפהנסק // ,58 צמתסאממ1* מפץם צפאסס / הפונקציה 6163161600 מקבלת את הפרמטרים שמפורטים בטבלה 7.19 הפרמטרים חו6ווח וזח חייבים להגדיר רוחב וגובה אשר נתמכים על ידי מנהל. ההתקן של התצוגה הנוכחית, מפני שהמערכת אינה יכולה ליצור סמלים בעלי גדלים. אחרים. כדי לדעת את הרוחב והגובה של הסמלים שנתמכים על ידי מנהל ההתקן של התצוגה, צריך להשתמש בפונקציה 6609/50070060065, כאשר מגדירים את הערך 0 5% או 100 59% טבלה 7.19: הפרמטרים של הפונקציה חס01081616. פרמטר תיאור 6סחספחזת | מוהה את מופע המודול שיצר את הסמל שוח | מגדיר את רוחב הסמל, בפוקסלים. סח | מגדיר את גובה הסמל, בפיקסלים. פשחמוק6 | מגדיר את מספר המישורים במסיכת סיביות 808 (854חטופ 008 של הסמל. ופאוקזו6 | מגדיר את מספר הסיביות לכל פיקסל במסיכת סיביות 08א של הסמל. אפסו טמן | מצביע למערך בתים שמכילים את ערכי הסיביות עבור מסיכת. סיביות 0 8/0854 סא3) של הסמל. מסיכה זו מתארת מפת. סיביות בעלת צבע אחד (קהותזום שוחסזה6סחסוו א 5וומ8ס4פקו | מצביע למערך של בתים שמכילים את ערכי הסיביות עבור מסיכת. סיביות 08א של הסמל. מסיכה זו מתארת מפת סיביות בעלת צבע. אחד, או מפת סיביות תלויית התקן בצבע מלא. 6 321חו/ו ומבוא ל-ספו הפונקציה. ח0/0300160 יוצרת את הסמל משתי מפות סיביות (אשר הפונקציה משתמשת בהן כמסיכות סיביות); האחת היא מסיכת סיביות סוז8 והשניוה - מסיכת. סיביות 08א. מסיכת סיביות סא היא תמיד מפת סיביות מונוכרומטית (בעלת צבע אחד), עם סיבית אחת לכל פוקסל. 6/03191600 מייחסת טבלת אמת עבור מסיכות. הסיביות הנפרדות ל-פוה ול-08א. תוצאות פעולה זו מוצגת בטבלה 7.20 טבלה 7.20: טבלת האמת של הפונקציה ח0103)0160 עבור מסיכות הטיביות אא ו-סא. (תצוגה) עְהוקפום ו סא וטוט ואה (שחור) 886% 0 0 (לבן) סשוח 1 0 (מסך) 507000 0 1 (מסך נגטיבי) 50600 50זססה. 1 1 כדי להבין יותר טוב את פעולת הפונקציה ח616306160, התבונן בתוכנית 160 .016846. שבתקליטור המצורף לספר זה (בתיקיה 6%8007). התוכנית מגדירה את ערכי הסיבית. של שתי המסיכות, מסיכת סא ומסיכת ה%0 של הסמל, כדי ליצור סמל בעל צבע יחיד. (1600 שוחסזה6סחסוא). כאשר הפונקציה 06זקחא מקבלת את ההודעה 085415 וואא, התוכנית יוצרת את הסמל; כאשר הפונקציה 0060/06 מקבלת את ההודעה זאזאק !, התוכנית צובעת את הסמל שבתצוגה. 5 יצירת סמלים ממשאב תוכניות יכולות ליצור סמלים במספר דרכים שונות. בדרך כלל הן אינן יוצרות שתי מפות טיביות ושתי מטיכות סיביות בזיכרון, כמו שעשתה התוכנית ח160 01686 שהוצגה קודס. כמו עס טבלאות מחרוזות (פפוט3ד הָו5) ומידע אחר המיועדים. לשימוש חוזר, אפשר לטעון את מרכיב הסיביות של הסמל מתוך קובץ משאבים ולהפוך את הסיביות לסמל ממשי. כדי לבצע עיבוד כוה, התוכניות משתמשות בפונקציה 65/ט08990ח0ז5ח076319160. פונקציה זו יוצרת סמל או סמן (00050) מסיביות משאב אשר מתארות את הסמל. את הפונקצה 66 כותבים בתוכניות כמו בהגדרה שלהלן. 200 610 5 פ0פפטס 05 1008 60 צשסמ1סם // מצצם 8866טט 046 18 668עם 05 ששמחמה // 086551 סאסוום 11984 פספטנם 05 160 // ,100 סט הט 09085? פאסת1 ו // 5 80סום פרק 7: מפות סיביות, קבצי-על וסמלום | 187 הפונקציה 65065הוח0ז'ח616319160 מקבלת את הפרמטרים שמפורטים בטבלה 7.21 טבלה 7.21: הפרמטרים של הפונקציה 7010500100 03/0160 0. פרמטר תיאור 5פפז | מצביע למאגר, אשר מכיל את משאב הסיביות של הסמל או הסמן. קריאה לפונקציות /0160001וח0ז107חסס1קטאסס 1 (ב- 9% 00%%5חו/, באפשרותך גס כן לקרוא לפונקציה 0760108 00ז10ח160 600 ו-1086865060 טוענת לרוב את. הסיביות האלו. 6 | מגדיר את הגודל, בבתיס, של קבוצת הסיביות שמוצבעת על ידי הפרמטר 65055זק. ח100] | מגדיר אס הפונקציה צריכה ליצור סמל או סמן. אס פרמטר זה הוא סטזד, הפונקציה יוצרת סמל; ואס הוא 5386, הפונקציה. יוצרת סמן. 06% | מגדיר את מספר הגירסה של תבנית הסמל או הסמן עבור משאב הסיביות שמוצבע על ידי הפרמטר 5זופפסזק. הפרמטר ז6//ו6 יכול לקבל את אחד הערכים שמפורטים בטבלה 7.22 טבלה 7.22: ערכי הפרמטר 69//61. פורמט ו 2.8 6005 | 000020000. 3.8 6005חז/ | 000030000. כל יושומי מיקרוסופט מבוססי 32 משתמשים בתבנית של א9 05סחוא עבור סמלים | וסמנים. ‏ הפונקצי ות 16901606 ו 1 ו- 0600 הוסז10ה160קטאסס. = 930 פוס0חוו, | מאפשרת ג לקרוא לפונקציות 8050095 וחסז 019101600 ו-600/5זוומסז187ח0ס1קט1.008). מאפשרות. ליישומי מסגרת ודפדפני סמלים לבחון ולהשתמש במשאבים דרך המערכת. כדי להבין יותר טוב את פעולת הפונקציה 68זט650הוחסז"חסס6768001, התבונן בתוכנית. 1600 ₪65 ע18ק5ום שבתקליטור המצורף לספר וה (בתיקיה 688007). התוכנית. 1600 ₪65 ע1ק5ם משתמשת באוסף של פונקציות לניהול משאבים כדי לאתר סמל בקובץ המשאבים, למצוא את המקום שלו בדיסק ולטעון את הסמל לציכרון. התוכנית. מציגה אחר כך את הסמל בשטח הלקוח של החלון. הטיפול המעשי קורה לאחר שהמשתמש בוחר באפשרות /76%. הקוד שמבצע טיפול זה נמצא בפונקציה סזק0חע 8 5271 ומבוא ל-ספו 6 הפונקציה 66%ו68%616071061ז60 התוכניות יודעות ליצור סמלים ממפות טיביות או ממוהה משאב. באפשרותן גם ליצור סמלים מערך של מבנה. משתמשיס בפונקציה :66/ו0108101600100 כדי ליצור סמלים: ממרכיבים שאינך מגדיר אותם בתוכנית, או בקובץ משאבים. הפונקציה יוצרת סמל או סמן ממבנה מסוג 1001850. את הפונקציה 66/ו6163)61600106 כותבים בתוכניות. כמו בהגדרה שלהלן ; (16001850 0עאםאס0ס1ק) 608ע81ת1ת6860100עס אססנט המצביע סזחוחססו מצבוע למבנה מסוג 16081850 שהפונקציה משתמשת בו כדי ליצור את הסמל או את הסמן. אס הפונקציה מצליחה, הערך המוחזר הוא ידית הסמל או הסמן שיצרה הפונקציה. המערכת מעתיקה את מפות הסיביות שבמבנה סא1א160 לפני יצירת הסמל או הסמן. היישום חייב להמשיך לנהל את מפות הסיביות המקוריות. ולמחוק אותן כאשר אין עוד צורך בהן. המבנה 1008150 מכיל מידע על סמל או סמן. 801 פאוסטחזו מגדיר את המבנה 100180 כמו שרואיס בדוגמה זו [ 1001 565006 6465מעף 10 | מס 0 | סאסמם 0 | ספסמם אדנמ אדנמ [ טבלה 7.23 מפרטת את איברי המבנה סא1ַו1001. טבלה 7.23: איברי המבנה 1600180 פרמטר | תיאור ח160 | מגדיר אם מבנה זה מגדיר סמל או סמן. ערך פטזד מגדיר סמל; ₪96 - מגדיר סמן. %ק5וסוזא | מגדיר את קואורדינטת א (0306ו0זס0ס->) של נקודת המגע 0סק5 00 של הסמן. אאם מבנה זה מגדיר סמל, נקודת המנע תמיד נמצאת. במרכז הסמל, והפונקציות אשר משתמשות במבנה 16081850 מתעלמות מהאיבר זסקפוסוזא. זסקפוסוזץ | מגדיר את קואורדינטת + (0/03ז600-+) של נקודת המגע 0סק5 00 של הסמן. אאם מבנה זה מגדיר סמל, נקודת המנע תמיד נמצאת. במרכז הסמל, והפונקציות אשר משתמשות במבנה 1601180 מתעלמות מהאיבר זסקוסוזן. פרק ל: מפות סיביות, קבצי-על וסמלום | 189 פרמטר | תיאור א55אוחסח | מגדיר את מסיכת סיביות מפת הסיביות של הסמל. אם המבנה מגדיר סמל שחור לבן, מסיכה זו מפורמטת, כך שהחצי העליון הוא מסיכת. הסיביות סא של הסמל והחצי התחתון הוא מסיכת הסיביות הס של הסמל. על פי תנאי זה, הגובה צריך להיות זוגי בכפולות של. שתיים. אס מבנה זה מגדיר סמל צבעוני, מסיכה זו מגדירה רק את מסיכת סיביות סאה של הסמל. זסו0סוחפח [ מוהה את צבע מפת הסיביות של הסמל. איבר וה יכול להיות רשות. אס המבנה מגדיר סמל שחור לבן. +01766ה61631816001 מספקת את. מסיכת סיביות סואה של %056וחפח עם הדגל 580 של הועד. באופן עקבי, ז06/ו0163101600106 משתמשת בדגל 58010005 כדי לספק את. מפת הסיביות הצבעונית (על ידי השימוש ב- 08א) ליעד. בקיצור, המבנה 100180 מגדיר את מפת הסיביות המונוכרומטית ומפת הסיביות הצבעונית, והפונקציה 106/6%ח0ס0163/01 מחברת את מפות הסיביות בהתבסס על הערכים שבמבנה 1850ו1601. כדי להבין יותר טוב את פעולת הפונקציה 0163181600106060, התבונן בתוכניתת 5 סאד שבתקליטור המצורף לספר זה (בתיקיה 00807). התוכנית 16005 סאד מחברת שתי מפות סיביות למפת סיביות שלישית ויוצרת סמל. כרגיל, העיבוד המעש של התוכנית נמצא בפונקציה 6זקטחאו. 7 הפונקציה 1030160 בסעיפים הקודמים למדת שאפשר להשתמש בתוכניות במספר שיטות שונות כדי ליצור סמלים בומן ריצה. כמו שראית בתוכניות אחרות, הן משתמשות על פי רוב בפונקציה. 301000 כדי לטעון לתוכנית סמל מקובץ המשאבים שלה. למדת שהפונקציה 1030100 מספקת לתוכניות דרך נוחה ויעילה לטעינת סמלים שכבר נוצרו. הפונקציה. 109301000 טוענת. את משאב הסמל המוגדר מקובץ ההפעלה (8%5.) שקשור למופע התוכנית. את הפונקציה ח1036160 כותבים בתוכניות כמו בהגדרה שלהלן ק (שהבהמ60נש1 ת190959 ,ַסתבםפהנמ מסותלפאעה) מ1080160 אססצט הפרמטר 65ח8זח1ח מוהה את מופע המודול אשר קוב ההפעלה שלו מכיל את הסמל שהפונקציה 10861600 צריכה לטעון. הפרמטר 65ח5זפוזח חייב להיות. 4ש כאשר הפונקציה. 10361600 צריכה לטעון סמל סטנדרטי (1600 5₪80080). הפרמטר 36ח160ק מצביע למחרוות המסתיימת ב-011 אשר מכילה את שם משאב הסמל שהפונקציה 10861600 צריכה לטעון. לחילופין, הפרמטר פוח9אחס16ק! יכול להכיל את. מוהה המשאב במלת הסדר-הנמוך ואפס במילת הסדר-הגבוהה. צריך להשתמש. במאקרו 818188500805א3ו% כדי ליצור ערך מוהה למשאב. כדי להשתמש באחד הסמלים המובנים של פאוסחו/, צריך להציב את הערך ₪01 לפרמטר 66חמזפחזה ולפרמטר 6ו%8ח0פ1ק! - את אחד הערכים שמפורטים בטבלה 7.24. 0 321חווו ומבוא ל-ספו 10301000 טוענת את המשאב רק אם התוכנית לא טענה קודם את משאב הסמל; אחרת, 10301600 מקבלת ידית למשאב הקיים. הפונקציה מחפשת את משאב הסמל שמתאים ביותר לתצוגה הנוכחית. משאב הסמל יכול להיות מפת סיביות צבעונית או מונוכרומטית. ח1036160 יכולה לטעון רק סמל אשר הגודל שלו מתאים לערכי מידותת המערכת 000% 514 ו- א₪1160 5%%. השתמש בפונקציה 1036100906 כדי לטעוך סמלים בעלי גודל אחר. טבלה 7.26: הסמלים המובנים ב-פאוסחו. ערך תיאור אסנזאס1קקא. 101 | סמל ברירת המחדל של היישום. 515815 101 | סמל כוכבית (451056, שימושי בהודעות מידע. אסנדהוא 50 101 | סמל סימן קריאה (זחוסק חסטופוחהאם, שימושי בהודעות. אזחרה) סאוו 101 | סמל תמרור "עצור" (ח160 ש6פַַח5-חפא, שימושי בהודעות. אזהרת רציניות) אסנדפטט0 101 | סמל סימן שאלה (816! חסופפטס, שימושי בהודעות אישור). ואוו 101 | הלוגר של פאוס0חואו. 8 הפונקציה 108011346 טוענת סוגים גרפיים רבים למדת שתוכניות יכולות להשתמש בפונקציה 10861600 כדי לטעון סמל מקוב המשאביס שלהן. התוכניות גם יכולות להשתמש בפונקציות ק10808(008 ו-ז0/50 1030 כדי לטעון מפות סיביות וסמנים, בהתאמה, מקובץ המשאבים של התוכנית. לחילופון, באפשרות התוכניות להשתמש בפונקציה ססָ1036109, אשר טוענת סמל, סמן, או מפת. סיביות. את הפונקציה 5סַ9וח0861) כותבים בתוכניות כמו בהגדרה שלהלן. 0 מנסואתה 6 156466 006 05 ש1שהגת // הפאנ 6 6מ) 0006818 // 6 05 1060615166 08 שמהם // הפאפפק1 8ע5ע10 6 05 שפצ // ,שטצצט פאצט 0 // 681568 6496 681568 // ו 8 6 / 8 אנט פרק ל: מפות סיביות, קבצי-על וסמלום | 191 הפונקציה פסָ9ח10901 מקבלת את הפרמטרים שמפורטים בטבלה 7.25 טבלה 7.25: הפרמטרים של הפונקציה 08011896 1 פרמטר | תיאור שחו | מזהה מופע של המודול, אשר מכיל את התמונה (טָחז1) שהפונקציה. 6 צריכה לטעון. צריך להציב ערך אפס לפרמטר זה כדי לטעון תמונת ו06%. חקו | מה את התמונה שהפונקציה 103610306 צריכה לטעון. אם. הפרמטר זפחוח אינו ₪014 והפרמטר 01080 איינו מכיל את ואס הס ה1, אז פופו הוא מצביע למחרוות המסתיימת ב-1ש)! ואשר מכילה את שם משאב התמונה שבמודול זפחוח. עם זאאת,, אם הערך של זפחוח הוא .₪011 ואינך מגדיר את הקבוע. יסאס 1, אז מילת הסדר-הנמוך של פרמטר זה חייבת להיות המוהה של תמונת 08% שהפונקציה 10361306 צריכה לטעון. קובץ הכותר ח.זספטחו/ו מגדיר את מזהי תמונת 081 (סָ0ח1 ואפס. 100005), שיש להכ קידומות (6659זק, תחיליות) שמפורטות. בטבלה 7.26 תחת א פווס0חו/+, אס הפרמטר 1086 מכיל את הערך וס הס 1, אד פופו הוא שם הקוב שמכיל את. התמונה. זא 0005ח/ אינה תומכת ב- 10001 .1 עד | מגדיר את סוג התמונה שהפונקציה טְ09ז10361 צריכה לטעון. פרמטר זה יכול להיות אחד הערכים שמפורטים בטבלה 7.27 6 | מגדיר בפיקסלים את רוחב הסמל או הסמן. אם פרמטר זה שווה. לאפס והפרמטר 6030 שווה ל- 06315176 .1, הפונקציה משתמשת בערכי מידות המערכת 60160 50% או 6008508 5% כדר לקבוע את הרוחב. אס פרמטר זה שווה לאפס והקריאה לפונקציה. אינה משתמשת ב- 2650115126 1, הפונקציה משתמשת ברוחב המשאב הממשי. סע | מגדיר בפיקסלים את גובה הסמל או הסמן. אם פרמטר זה שווה. לאפס והפרמטר 6030 שווה ל- 0615176 .1, הפונקציה משתמשת בערכי מידות המערכת 6/160% 59% או 0/008508 5% כדר לקבוע את הגובה. אס פרמטר זה שווה לאפס והקריאה לפונקציה אינה משתמשת ב- 6580115126 18, הפונקצייה משתמשת בגובה. המשאב הממשי. 6 | קובע איך הפונקציה טוענת את התמונה. מגדיר צירוף של הקבועים. שמפורטים בטבלה 7.28 2 לכו ומבוא ל-ספו כמו שניתן לראות בטבלה 7.25 התוכניות יכולה לטעון תמונות ו06%. במקריס כאלה, היא גס יכולה להגדיר אחד ממזהי התמונות שמפורטים בטבלה 7.26 טבלה 7.26: מוחי התמונות 106011065 הזו קידומת 8 6 0 פירוש מפות סיביות 05% (קפוחזום 081 סמלי 05% (5ח0 ואפ0) סמני 05% (5זספזנ6 %1פס). למדת שבאפשרות התוכניות לטעון באמצעות הפונקציה 1086100906 תמונה כלשחיי מתוך מספר סוגי תמונות. הפרמטר טסקעט מגדיר את סוג התמונה, והוא יכול להיות. אחד מהערכים שמפורטים בטבלה 7.27 טבלה 7.27 סוגי התמונה האפשר. עוך קוודום 66 ויד וד 100 66אווד באפשרותך לטעון את קוב או פירוש טוען מפת סיביות (קפוזוום 3 0805 טוען סמן (1501 8 0865 טוען סמל (ח60) 80 10865 התמונה עם מספר אפשרויות עבור תצוגת הקובץ. הפרמטר 1086 חייב להיות אחד או יותר מהערכיס שמפורטיס בטבלה 7.28 טבלה 7.28: אפשרויות הטעינה עבור קוב התמונה. עוך טס 1 0 א פירוש דגל ברירת המחדל, פירושו יילא ב באשר הפרמטר פקץדו מגדיר קאוד81. 1866, הוא: גורם לפונקציה להחזיר חלק 018 של מפת סיביות. במקום מפת טיביות תואמת 805 30016חסס) דגל זה שימושי לטעינת מפת סיביות מבלי למפות אותה לצבעי התקן התצוגה. פרק 7: מפות סיביות, קבצי-על וסמלום = 193 עוך בו ב ב קדס 1 1 ב 1 5 4 זא2פחווו ומבוא ל-ספו פירוש משתמש עבור סמנים או סמלים ברוחב או בגובה. שמוגדרים על ידי מידות המערכת, אם הקריאה. לפונקציה קובעת את הערכים 0400566 אד 6 לאפס. אם דגל זה אינו מוגדר והקריאה. לפונקציה קובעת את הערכים של 0/069/666. ו- 6/009%66 לאפס, הפונקציה משתמשת בגודלל המשאב הממשי. אם המשאב מכול מספר תמונות, הפונקציה משתמשת בגודל של התמונה הראשונה. טוען את התמונה מהקובץ שמוגדר על ידי הפרמטר. 96א2פקן. אם דגל זה אינו מוגדר, 6כ)!פכ| הוא: שם המשאב. מחפש בטבלת הצבעים עבור התמונה ומחליף את. הצללים (58065) של האפור בצבע התלת-מימדי המתאיס, כמו שרואים בטבלה 7.29. מקבל את ערך הצבע של הפיקסל הראשון שבתמונה ומחליף את הכניסה המתאימה שבטבלת הצבעים. בצבע ברירת המחדל של החלון (וססאז/ .00.08 כל הפיקסלים בתמונה אשר משתמשים בכניסה זאת. הופכים להיות בצבע ברירת המחדל של החלון. ערך. זה תקף רק לתמונות שיש להן טבלת צבעים מתאימה. אס 61086 מכיל שני הערכים. 10 1 ו-085 00130001 1 .1, א קפוא 0/0 .18 מקבל את העדיפות. עם ואת, הפונקציה 10301806 מחליפה במקרה זה. את הכניסה בטבלת הצבעים, וקובעת. 5 6010 במקום /וספאזווי 601.08. טוען את התמונה בשחור ולבן משתף את ידית התמונה, אם תוכנית אחת או יותר טוענות את התמונה פעמים רבות בו-ומנית. אס אינך קובע את 5/4850 1 קריאה שנייה לפונקציה 916 עבור אותו משאב טוענת את התמונה. שוב ומחזירה ידית שונה. אל תשתמש ב- 57085 .18 עם תמונות שאין להם. גדלים סטנדרטיים שיכולים להשתנות אחרי טעינה, או אשר התוכנית שלך טוענת מקובץ. כאשר טוענים קוב תמונה כקוב תלת-מימדי, 01 6008 ממפה את הצבעים עבורך. 5וס6חו מחליפה כל צבע שבעמודה הימנית של הטבלה 7.29 בצבע שבעמודה. השמאלית של הטבלה. טבלה 7.29: הערכיים התלת-המימדים הממופים של הפונקציה 108010086 צבע מוחלף ב: (128 ,128 ,₪68)128 ,63 אם: 305 6008 (192 ,192 ,686192 ,1 ב (223 ,223 ,868)223 ,65 1 3 00 כמו שצוין בהסברים שניתנו עד כה, התוכניות יכולות להשתמש בפונקציה 109018096 בכל מצב שאפשר להשתמש בו בפונקציות ח1086160, 108084087 אד 103000507 פרק 7: מפות סיביות, קבצי-על וסמלום | 195 פרק מבט מקרוב על פקדים נושא הפקדים (פ!סזוח60) הוצג לראשונה בפרק 5, במסגרת הדיון בתיבות דו-שיח פרק זה בוחן מספר פקדים נוספים, לרבות תיבות סימון, כפתורי רדיו, תיבות קבוצה, פקדי טקסט סטטיים, ופסי גלילה. כפי שיתברר לך, חלק גדול מהטכניקות, יחול גם. על הפקדים שפרק זה. % הערה: אם טרם קראת את פרק 5, העוסק בתיבות דו-שיח, עשה ואת עכשיו, כי אנו משתמשים בתיבות דו-שיח כדי להדגים את הפקדים בהם עוסק פרק זה. תיבת סימון (802 6160%) היא פקד (וסחסס) המאפשר למשתמש להפעיל אפשרות. מסוימת, או להשביתה. תיבת סימון היא תיבה קטנה, העשויה להכיל סימון "*! אד להופיע ריקה. לכל תיבת סימון קשורה תווית, המתארת את האפשרות שאותה תיבה מייצגת. אס התיבה מכילה סימן "*יי, התיבה מסומנת (01606%6), והאפשרות שהיא מייצגת נמצאת במצב פעיל. אם התיבה ריקה, אצי היא בלתי מסומנת, או נקיה (3186ס/ס), לפיכך, האפשרות שהיא מייצגת מושבתת. בדרך כלל תופוע תיבת סימון כחלק מתיבת דו-שיח, והגדרתה תופיע במסגרת ההגדרה של תיבת הדו-שיח בקובץ. המשאבים של התוכנית. כדי להוסיף תיבת סימון לתיבת דו-שיח, השתמש בפקודה 0180680%, שהגדרתה הכללית היא [שבע56 ,] 6מס1שא ,6ה14א ,צ ,א ,דפס ,"הַה1ש56" אסמאסטאס בהגדרה זו, מכיל השדה חָו5 את הטקסט שיופיע לצד תיבת הסימון. 6910 הוא הערך הקשור בתיבת הסימון. הפינה השמאלית-העליונה של תיבת הסימון תמוקם בנקודה +,א, והתיבה יחד עם הטקסט הגלווה אליה יהיו בגודל שיתקבל ממכפלת הפרמטר תושו בפרמטר חחִפָש. הפרמטר 56/6 קובע את הסגנון המדויק של תיבת הסימון. אם לא תציין במפורש סגנון מסוים, תוצג תיבת הסימון במתכונת ברירת המחדל, כאשר התכולה של חָ51 מוצגת מימין, והמשתמש יכול להגיע אל התיבה בעזרת מקש טגד. כפי שבוודאי ידוע לך בעקבות השימוש בחלונות א9, תיבות סימון הך בעצם מפסקים (ַפ6ְָפָד). כל פעם שאתה בוחר תיבת סימון היא משנה את המצב שלה. ממסומן ללא מסומן, ולהיפך. פעולה זו לא נעשית בהכרח באופן אוטומטי 6 1א52חווו ומבוא ל-ספו כשאתה משתמש בפקודה 6₪60680%, אתה יוצר למעשה תיבת סימון ידנית, שהתוכנית שלך חייבת לנהלה על ידי סימון והסרת הסימון מהתיבה כל פעם שהיא נבחרת (מייד יתברר לך כיצד). חלונות 9% יכולה לבצע עבורך את פונקציית הניהול הזר אם תיצור תיבת סימון אוטומטית. תיבת סימון אוטומטית נוצרת בעורת הפקודה 0100780680%, שתבניתה זהה לוו של הפקודה 80%א80ו6%. כאשר אתה משתמש. בתיבת סימון אוטומטית, חלונות מבצעת באופן אוטומטי את שינוי המצב בתיבה (ביך מסומן לבין לא-מסומן) כל פעם שהמשתמש בוחר בתיבה. 1 תיבות סימון אוטומטיות לפני שתמשיך, עליך לשנות בקובץ משאבים הבטיטי עבור תיבות הדו-שיח את שני החלקים הבאיים: את הפריט, שמכיל כעת פריט נוסף, 513005 - ואת ההגדרות לתיבת. הדו-שיח, כך שתחיל, תיבת סימון ידנית ותיבת סימון אוטומטית. הקלד עתה שני קטעים אלו , במקוס הקודמים זפתסהה50דם טאמו אספסעם אנספם "69118" פטפספ אנספט צצאם פד ,"6415" אטי פוט צפפץ אמצ "97658" מפעבטאטו 88 סד ,"556868" פע 1טאטו "פ5861" פטטספ אזסטם שטסמת 10% ,"...08ס16861נקקה 9 טטסמה%" אמצצטאט פוט סט 6 0 ,20 ,20 מנמהסהה0פנם 06מגנם 00מתזסצפמט אסנעפאס ₪5 | מנמנפנע ₪5 | פטקסק פא | מאתתפתתססון פם מתצדם שאפוופצ פאר "018108 מע" אס1עטתס "86916 585 פע" ,8 פאסע אנספם 4 פםסד,"4שא" | אספצטמאפטסטמם 14, ,טא 100,"מ66ט0" טפ 0013" - ו 1" 7 12 פפ1",1 א6מא66ס" אסאס | אסאסמנססצטת 85,"מסטסטם",082 פסד,"2 אסמאסטמס" 0 2 פא פאט פרק 8: מבט מקרוב על פקדים | 197 עליך גם להוסיף לקובץ הכותר ח.1א60680ת6, את הערכים הבאים. 2 051 פפ1 4065106 3 052 פפ1 6ת406%1 1 פטדאד5 10 6ת:%06% כל פעם שהמשתמש לוחץ בעכבר על תיבת סימון, או בוחר אותה ומקיש על מקש הרווח, נשלחת הודעת סאוואס6 ואו לפונקציית הדיאלוג ומילת הסדר-הנמוך של וחפזבלוי מקבלת את הערך המוהה הקשור לאותה תיבת סימון. אס אתה משתמש. בתיבת סימון ידנית, יהיה עליך להגיב לפקודה זו על ידי שינוי מצב התיבה. לשם כך, שלח לתיבת | הסימון ‏ הודעת 56704606 8% | בעורת | פונקציות | 1ק ()001010070/695906ח56. פונקציה זו נדונה בפרק 5. הגדרתה הכללית מובאת כאן פעם. נוספת, לנוחותך. ,100098 עעוצט ,78 6ת1 ,סמאבת סאמ ) 055866/עה0: 56080101 באס ((מ3עג19 אתתתסז ,מבצגקק ונתמתסור כאשר נשלחת הודעת 561041606 8%%, קובע הערך שמכיל הפרמטר וחפזפקו אם' התיבה תסומן, או תנוקה. אם זאו מכיל 1, אזי התיבה תסומן. אס הוא מכיל 0, התיבה תנוקה. לפי ברירת המחדל מופיעות כל תיבות הסימון כשהן ריקות. בעת משלוח הודעת 561060% 8%, לא נעשה שימוש בפרמטר וחפזפק! וכור, אם אתה משתמש בתיבת סימון אוטומטית, אזי מצב התיבה ישתנה באופן אוטומטי כל פעם שחיא תיבחר. אינך צריך לשלוח לתיבת סימון אוטומטית הודעת ו תוכל לקבוע מצב של תיבת סימון אס תשלח לה את ההודעה 6610180 %/8. התיבה תחויר ערך 1 אם היא מסומנת, וערך 0 אם לא. במקרה זה, יכילו וחגזבקאו וג חזזמקו ערך 0 לפניך התוכנית 08608801 המדגימה תיבת טימון ידנית ותיבה אוטומטית. כדי להבליט בדוגמה שלנו את ההבדלים בין שני הסוגים, מרגע שתיבת סימון ידניתת נבחרת, היא נשארת מסומנת תמיד ואין אפשרות לרוקן אותה. בדוגמה שלאחריה, תלמד איך לטפל בתיבות סימון ידניות (לא הבאנו פה את הפונקציות הבאות. ה חובואחו. מפני שלא בוצע בהם שום שינוי). <ה. 510008 301086 "מ. 1אספאסשתס" 43001686 (132א) ‏ 4681868 415 פטתע 32א 15 4001106 8 מפתתע 32א 15 6ם40011 5 8 ז7א32חוו ומבוא ל-ספו 080000000 > (06606991000) (002ם) 660 32אצא 15 ו 15 188 6 (צא 15) !) (001פ) 66 32אנא 18 325אנא 15 שה40681 ( (4> ( () 06006+5108) הסאס 1) מצע 10 ) 2 15 56 ((25באצא 15)! ₪6 (צא 18)!) (ססם) = 95אצא 15 שה40681 =סת8ספה1 שהעצטט // פחדת פסונתלפוננ /* בפאסם אסשת 08 5:80₪8 188ס */ ק5088082-0 ,0. 46 ;"אספטָנם" = שהפאסקתפפק1 ת57פסק1 0" 1529161 לספ ( סאם1 *55התסטוחן 87אא0 | 0186020195 מססם פסוותלפאונ ,בסהבםפהנת מסותצפותא ) ה[בעתגח צהפנמנעת 8ב 16 ,8ת651ה0ק1 תלפעק1 ,ססהגםפה1שםצקת 0 [ 4 6 ומא | פוא 85 סטוה .1858 אס0מ1א מ8610ם11קקג מגגת שת5 שששפ1מת // ה 0 ;אתהספחט 05 | התתסטתם פס 8 א ( הפוה ב ₪ 601 0 ₪ 7 ו ;( שממאקפתפפק1 ,ססהבמפמנה )10801000 0 (ווספתת 100 ,א 1000080 = 0 ; (ב+אססווצוו ה0מסס) (מפטהפ8) = בתמספף80%פעמת סט קסהפומקת2פ1 = במגמטהס2פם1 סט קסהפומסת2פש1 = 6ה8201258%8מ1 סט ( 95צא 18 | 45 ( ( 06פ )8601466501095! ) 15 | פמת )םת ] ( ( 866 )1906501488ַשה! ) 18 שפנב ( מפמתת )20 פרק 8: מבט מקרוב על פקדים ‏ 199 0 32371חואו ומבוא ל-ספו פרק 8: מבט מקרוב על פקדים ‏ 201 2 לבחו ומבוא ל-ספו פרק 8: מבט מקרוב על פקדים | 203 תוכנית זו מכילה שני משתנים גלובליים, 503051 ו-51052, המכילים את המצב של שתי תיבות הסימון. משתנים אלה מקבליט את הגדרתם עס הלחיצה על לחצן א0. בתוך תיבת הדו-שיח. כדי להגדיר מצב של תיבות סימון, בחר באפשרות פטס בתפריט הראשי. כדי לברר מצב של תיבות סימון, בחר באפשרות 513005 מהתפריט. הראשי (האפשרות ₪60 כלולה כאן רק כמראה מקום) כשתריץ את התוכנית ותבחר באפשרות פָטווּם מתוך התפריט הראשי, תופוע לפניך תיבת הדו-שיח הנראית בתרשים 8.1 הק ה 0 | ו תרשים 8.1: תיבת דו-שיח עם תיבת סימון לדוגמה. כיצד לנהל תיבות סימון התוכנית ליצירת תיבות סימון, כשלעצמה, סובלת משני ליקויים חמורים. ראשית, מצבה של כל תיבת סימון נקבע מחדש בכל פעם שתיבת הדו-שיח מוצגת. כלומר, המצב הקודס של כל תיבה אינו נשמר. שנית, ניתן לסמן את תיבת הסימון הידנית, אךך לא ניתן להסיר ממנה את הסימון. כלומר, תיבת הסימון הידנית אינה מפסק פופ במובן האמיתי של המילה, ואינה מתפקדת כמצופה מתיבת סימון. בסעיף זה, נלמדד כיצד לטפל באופן יעיל יותר בתיבות סימון. כיצד להעניק לתיבת סימון תכונות של מפסק יש לצין, שאמנם קל ופשוט יותר להשתמש בתיבות סימון אוטומטיות, אך אפשר בהחלט להפעיל תיבת סימון במתכונת של מפסק על ידי טיפול נכון בתיבת סימון ידנית. כלומר, התוכנית תצטרך לבצע את כל הפונקציות הניהוליות בעצמה, במקום. להניח לחלונות א לטפל בעניין. לשם כך, התוכנית תברר תחילה מה מצבה הנוכחי של. תיבת הסימון, ולאחר מכן תכתיב לה את המצב ההפוך. הדבר נעשה על ידי הכנסת. השינויים הבאים לפונקציית הדיאלוג (קובץ הכולל שינוי זה קיים בתקליטור, ושמו הוא: 8 686688081 . כדי להשתמש בו, החלף את 00668041 בקובץ הזה). /* .אסם אמשמם ההגה ע1[בטהגת ג 18 ב1מצ */ :נמ סד 6פגם /* 56255 168 מגה 50 ,אסם אספמם 186 20160556 פספג */ ((0 ,0 ,אסשאסעמם אמ ,081 מז ,מנס) 56266שעה0166נ80ה1,)!96 ;(0 ,1 ,אסממסצמפ עפ ,1מס סם1 ,הַבעמ) ש5586שאת101)6פ ה /* 015 15 מעגם */ 18 /(0 ,0 ,אסממסצמפ אפ ,1מס 100 ,| א586משעת0ו 040101 (מספם 4 זקתכבחווו ומבוא ל-0פו כיצד לאתחל תיבת סימון כאמור לעול, יופיעו תיבות סימון ידניות ואוטומטיות כאחת במצב ריק (כלומר, לא מסומן) כל פעם שתופעל תיבת הדו-שיח המכילה אותן. דבר ה נוח ורצוי בנסיבותת מסוימות, אך אין זה מה שהמשתמש מצפה לו כרגיל. ככלל, תיבות סימון מופיעות. במצב הקודם שהוכתב להן כל פעס שתיבת הדו-שיח מוצגת. אם אתה מעוניין שתיבות. הסימון ישקפו את המצב הקודם שלהן, עליך לאתחל אותן כל פעם שתיבת הדו-שיח. מופעלת. הדרך הפשוטה ביותר לעשות זאת היא לשלוח להן הודעות 5510066% א מתאימות כאשר תיבת הדו-שיח נוצרת. זכור, כל פעם שתיבת דו-שיח מופעלת, נשלחת. אליה הודעת 06)אזס!1אז א/. כאשר ההודעה מתקבלת, אפשר לקבוע את מצב תיבות הסימון (וכל דבר אחר) בתיבת הדו-שיח. קטע הקוד הבא מאתחל את תיבות הסימון 6 6 .1818/64 השסע %פט 8 אסע חַ41810 שתך */ /* .ע18661עקסטמם פסאסט אסשת שמט ;(0 ,56301 ,אסמאסצם5 א ,01 סם1 ,סַנסה) 1916608655896עמה6ם :(0 ,5680082 ,אסמאסצם5 וע ,02 מם1 ,סַנסה) 191668%658396מה6ם 2 מצ? לפניך התוכנית השלמה 2א6866680, הכוללת אתחול תיבות הסימון ומנהלת את תיבת הסימון הידנית. השווה את פעולתה לוו של התוכנית לדוגמה הקודמת. כפי שניתן לצפות, התנהגותה דומה עכשיו לוו של רוב היישומים השכיחים של חלונות. (התוכנית נמצאת בתקליטור בתיקיה 086668082 8ק8ת0), 2 הוספת פקדים סטטיים פקד סטטי (סזוחסס 51366) הוא אמצעי שאינו מפיק או מקבל הודעות. בקצרה, המונח. פקד סטטי אינו אלא תיאור של פריט שתפקידו מתמצה בכך שהוא מוצג בתוך תיבת. דו-שיח, למשל הודעה מילולית או תיבה המכילה סוגי פקד אחרים. בסעיף זה נבחןן שני פקדים סטטיים, תיבת הטקסט הממורכזת (804 :ד 16100ח6) ו-תיבת הקבוצה 80% 000ז6). שני האמצעים האלה נכללים בהגדרת תיבת הדו-שיח שבקובץ המשאבים. של התוכנית, בעורת התוכניות דא6ד6 ו-68000808, בהתאמה. הפקודה 618% מפיקה מחרוות המופיעה כשהיא ממורכות באזור שהוגדר מראש. לפניך ההגדרה הכללית של הפקודה דאשד6 616 ,] 86165 ,106 ,צ ,א הנצס ,"6א60" צא: בדוגמה, 9% מכיל את המלל שיוצג. 6110 הוא הערך הקשור בטקסט זה. הטקסט יוצג בתוך תיבה שפינתה השמאלית-העליונה היא בנקודה ,א, וגודלה הוא המכפלה של הפרמטר חו6ו/ בפרמטר חחמָש. הפרמטר 56/6 קובע את הסגנון המדויק של תיבת טקסט. אם לא נבחר שוס סגנון מלוחד, יופיע הטקסט בתיבה במתכונת ברירת המחדל. כלומר, המלל ב-16% יוצג כשהוא ממורכו בתיבה. תיבת הטקסט עצמה אינה מוצגת. היא רק מגדירה את השטח שמותר למלל לתפוס. פרק 8: מבט מקרוב על פקדים | 205 הפקודה 6800080% מציירת תיבה. בדרך כלל התיבה משמשת כדי לתחום חזותית. סוגי פקד אחרים, והיא עשויה להכיל גם כותרת עבור הקבוצה. הגדרתה הכללית של הפקודה 6800280% מובאת להלן [16ע56 ,| 64006 ,מ106א ,+ ,< ,6210 ,"61816" אסמקטסהם במקרה זה, ₪06 הוא הכותרת של התיבה. סזז6 הוא הערך הקשור עם המלל שיופועע בתיבה. הפינה השמאלית-העליונה תמוקם בנקודה +,א, וגודל התיבה יהיה המכפלה של הפרמטר וזו בפרמטר זְופפוז. הפרמטר 58/16 יקבע בדיוק את הסגנון של תיבת. הקבוצה. בדרך כלל אפשר להסתפק בהגדרות ברירת המחדל. כדי לראות את השפעת שני הפקדים הסטטיים האלה, הוסף את ההגדרות הבאות. לתיבת הדו-שיח בקובץ המשאבים שיצרת עבור הדוגמאות הקודמות 4 ,51 ,1 ,1 ,081 1 ,"פסאסמאססמס" אסמפטסהם 4 ,50 ,44 ,1 ,071 םד ,"מאשם 18 שגמ" עא: לאחר שהוספת את השורות, הדר מחדש את הדוגמה הקודמת, הרץ את התוכנית ובחר. באפשרות פס מתוך התפריט הראשי. תיבת הדו-שיח תיראה עכשיו כמו זו המופיעה בתרשים 8.2. וכור, הפקדים הסטטיים מעניקים חזות שונה לתיבת הדו-שיח, אך אין חס משנים את תפקודה. ו ל הי 3 ו תרשים 8.2: הוספת סוגי פקד סטטיים לתיבת דו-שיחח 3 כפתורי רדיו הפקד הבא שנבחן הוא כפתור הרדיו (חסט8 ס800). כפתורי רדיו משמשים לייצוג אפשרויות שאינן יכולות להתקיים יחד (פאופטסאש ץוומטטז!). כפתור רדיו כולל תווית, המופיעה בצד כפתור קטן. אם הכפתור ריק, האפשרות שהוא מייצג אינה פעילה. אם: הכפתור מלא, אזי האפשרות שהוא מייצג נמצאת במצב פעיל. חלונות אל תומכת בשני סוגים של כפתורי רדיו: ידניים ואוטומטיים. בדומה לתיבת הסימון הידנית, כפתורר הרדיו הידני מחייב אותך לבצע את כל הפונקציות הניהוליות. כפתור רדיו אוטומטי מבצע עבורך את כל הפונקציות הניהוליות. הטיפול בכפתורי רדיו מורכב יותר מהטיפול בתיבות סימון. בדרך כלל, ביישומים מופועים כפתורי רדיו אוטומטיים; על כן נבחן כאן רק סוג זה של כפתורים. 6 32371חווו ומבוא ל-ספו בדומה לפקדים האחרים, כפתורי רדיו אוטומטיים מוגדרים בתוך קובץ המשאבים של התוכנית, במסגרת של הגדרת תיבת הדו-שיח. כדי ליצור כפתור רדיו אוטומטי, השתמש בפקודה וזסדדט0108אסדא, שהגדרתה הכללית מובאת להלן. [16ע56 ,] פתסגסת (תמטצח (צ ,< ,תצמת ,"אַה5021" אספדטמסזסתתסצטת בהגדרה זו, מכיל חַ את המלל שיוצג בצד הכפתור. 881 הוא הערך הקשור בכפתור הרדיו. הפינה השמאלית-העליונה של הכפתור תמוקם בנקודה +,א, והכפתור יחד עם הטקסט הצמוד אליו, יתפוס שטח שגודלו ייקבע על ידי הכפלת הפרמטר שטוו בפרמטר זו. הפרמטר 56/6 קובע בדיוק את הסגנון של כפתור הרדיו. אם: לא צוין שום סגנון מיוחד, יופיע הכפתור במתכונת ברירת המחדל, כאשר המלל ב-פַח50 מוצג מימין לכפתור, והמשתמש יכול להגיע אליו על ידי הקשה על מקש טגד. בדרך כלל, כפתורי רדיו משמשים ליצירת קבוצות של אפשרויות שאינן יכולות. להתקיים יחד, אלא רק אחת בלבד 54096 /ווגנטט/א). כאשר אתה משתמש בכפתורי רדיו אוטומטיים ליצירת קבוצה כזו, חלונות 5% מנהלת את הכפתורים באופן אוטומטי במתכונת של "אחד בלבד". כלומר, בחירה בכפתור מסוים מבטלת את הבחירה בכפתור הקודס. לא ניתן לבחור ביותר מכפתור אחד בכל פעם. תוכל להכתיב לכפתורי רדיו (גם אוטומטיים) מצב ידוע, אם תשלח להם את הודעת. 6% %ם באמצעות פונקציית 71 בשם ()5606081890%0655306. הערך של וחגזבסו+ יקבע אם הכפתור יהיה במצב פעיל, או מושבת (מסומן, או ריק). אס וזפזפלו מכיל 1, אי הכפתור יהיה מסומן. אם יכיל 0, הכפתור יופיע ריק. לפי ברירת המחדל, מופיעים כל הכפתורים כשהם ריקים. העדה: גם אם תשתמש בכפתורי רדיו אוטומטיים, ניתן להפעיל ידנית יותר מאפשרות אחת, או להסיר את הסימון מכל האפשרויות באמצעות הפונקציה ()655509ַ9ו01ו00ח .59‏ אולם | הסגנון החלונאי המקובל מכתיב שימוש בכפתורי רדיו במתכונת של י"אחד בלבדיי, כאשר כל כפתור פעיל מבטל את כל השאר. אנו ממליצים מאוד שתקפיד לנהוג לפו כלל ה. תוכל לברר מצב של כפתור רדיו באמצעות משלוח הודעת 6510186 %/8. הכפתור יחזיר ערך 1 אם הוא פעיל, וערך 0 אם לא: כדי להוסיף כפתורי רדיו לתוכנית לדוגמה, הוסף תחילה את השורות הבאות להגדרת. תיבת הדו-שיח שבקובץ המשאבים. שים לב שתיבת קבוצה מתוספת כאן, ומכילה את. כפתורי הרדיו. הדבר אינו הכרחי כמובן, אך הקבצות כאלה הן כלי נפוץ בעיצוב תיבות. דו-שיח. 2 ,48 ,10 ,60 ,נמת פד ,"1 סמה" אספצטמסנסתהסצטת 2 ,48 ,22 ,60 ,מה ס1 ,"2 סמה" אספצטמסנסתהסצטת 4 ,51 ,1 ,58 ,082 1 ,"קטסטם 58010" אספפטסהם פרק 8: מבט מקרוב על פקדים | 207 לפניך התוכנית הקודמת, במתכונת מורחבת הכוללת גם שני כפתורי רדיו. כפתורי הרדיו הם מסוג אוטומטי, ולכן אין תוספות רבות לתוכנית. שים לב שמצב הכפתורים. נשמר בשני המשתנים הגלובליים 15130081 ו-2פופופטז. הערכים בשני המשתנים האלה משמשים לקביעת המצבים ההתחליים של הכפתורים ולהצגת מצב הכפתורים. בתגובה לבחירה באפשרות 503005 מהתפריט הראשי. כשתריץ את התוכנית 3א6866880, תיבת הדו-שיח תראה כמו זו בתרשים 8.3. 0 ה "מ 3א%86ספמס" 1086סה1 (132א) ‏ 4681868 415 מטתץ 32און 15 446116 8 מפנתפ 32אצאן 15 440116 0 (0%80000000 > ()ה10פעשע600) (נססם) 26 2באצת פד תא 15 40:18 6 (צא 15) !) (נססם) 56 2באנא 15 25באנאן 15 06:16 ( >4(‏ () 08 וט 6) האס ) מעיע סנ כבמזו 19 55 ((325אצא 15)! 68 (סא 15)!) (מססם) ‏ 5פאנק 15 שמנ:400 =סתמספה1 שמצצטם // פחדת פסונתלפוונ /* בפאסם 00668 08 868008 68בסג */ ;%49082-0פטש , /* בפאסם 60%ה0 08 פטסבשם פהבסג */ 2-0מ26םפמצ , 486 60868081- מע 486 ;"אסמטנם" = שהבאסקת2פק1 תעפפסק1 0" 152 תפפפסקג ( סאם1 *5פהתסטוהן 7פאא0 | 0186020195 מססם ,655806ח עאצט ,תמ סאאט) סמ0פ18100פ אסהם1נהם עמ50ם18 מצ66אם (מ8פ8פ1 וותתתס1 ,הבעגקש אתתתקה פסוותדפאד ,בסהבופהנת מסותצפגנה | הןבעתגח צהפונמנעת פב 15 ,8ה651ה0ק1 ת57ל10 ,ססהגופה1שםצקת 0 |[ 4 6 זו | פע 55 תסו .01858 אסהת1א ה1108610קקב מגגת שת6 ע%0פ1מפת // 8 71א32חו/ו ומבוא ל-ספו פרק 8: מבט מקרוב על פקדים ‏ 209 0 3271חאו ומבוא ל-0פו ;[852]255 עפתם | (685806ה) 0160 5 | ( (בש בק 00 1) 660 5 8 ו ,"251018106" ,ספהצת) 18100808 810 3 (00פ0 זט ( םטע טל 10 886 ;("ה6350%86 18 1 אסמאשסהס" ,:86)עק0ע0פ (81ג0ם5פמם) ]1 ;("ה50%86ה6 מס 18 1 אסמאסשמס" ,802)ע80:00 156 ;("ה6360%64 18 2 אסטא0שמ0" ,:86) 505086 0086802 )11 ;("ה60%8ס פסת 15 2 אסמאסשמס" ,465086)568 156 ; ("מ60%50תש 15 1 410ה" ,:86)בסעסט (81ג20:פמע) ,1 ; ("מ60%58מ6 פסה 18 1 10בגת" ,4:026)852 18 ;("%8סשמם 15 2 410בת" ,:2026)88פ (552082מע) ,1 ;("0060%68 6סם 18 2 84010" ,465086)85 186 וס פא ,"" ,802 ,4מת) א0מ98800שון 0 1 סע /* הפצףסצק שֶ: ש5בה1תעשם */ :צסתצפמק וח 856ם (0 0 פע 4 ה 526018158 וסח 58008פש עתם 5פמססעק 95 באמבהגח משם */ /* .6ה6ת0:ב80 ה86180 הַת0681שעק שמף (80ע108 ,מבעג2ש ,5586שח ,6תחמ) 00פקשס8ה1תשם מעטס? ו 0 /* .ס1ססתגת מַ81210 נקחצפ ה */ 01 ,המש סמאא) 6מנפפ16ג1 אסתמננהס ענטפטתג (מהש8ק1 ממתתתק1 ,ה8שגקש מהתתקאה )| (85808שת) 150 פרק מבט מקרוב על פקדים ‏ 211 8 .018012168 חפסם %פגו פגג( אסם הַ1810 שתד */ /* .ע581!צקסעמקג פתסמסטם 28610 8תם בסאסם אסשמם פמט /(0 ,1פגםם:פטם ,אסממסלם5 4 ,נמ תד ,8 605586 /(0 ,2פ80:פטם ,אסממסלם: 6 ,02 1 ,8 הש /(0 ,1פמם8:פם+ ,אסממסלם: 4 ,גמת 1 ,8 6055 /(0 ,2פגם8:פמ? ,אסממסלם: אא ,2מת תד ,8 ה 1 על 5 |( ( בק )66 אפ 1 856 (0 ,4608 4100 סח 1 מעםם, 10 856 /* 168מג1צט פטף5:8 אסם %ספתס 410281 66פממט */ ,1 18 ,0מא4ת) 80101608/0658806ת36 = [פפ%8פטם 7 8סם 48 // 0 ;(0 ,0 ,אספמסעפם עמ ,02 18 ,0מא4מ) 8010160806658896ת36 = 8982 )פמ 7 אס 48 // 0 :(0 ,0 ,אספמסעפם עמ /* 8נמב1עמט פג0ם:ם אסכ א%ששתם 1ממס1ף שמגנמט ומת */ ,1 10 ,0מ46ם) 8658896ה6210166מ86 = 1פט640פט5 טסט 48 // -:(0 ,0 ,אספאסספם עמ ,2 10 ,806 600655806 080101 ספמ 48 //‏ :(0 ,0 ,אספאסעפם עמ 2 (0 ,468 4100 סח 1 תעםם, /* .אסם אסשהם השסבהגת ע11פטהגת 8 15 1018 */ :1מ0 פ1 שפמם /* 5:805 155 שהתגתם 50 ,אס אסמתם 18% 50160868 עשפמ */ ((0 ,0 ,טספ ₪ ,51 10 ,ה 606 ד4010ה50!) 16 ;(0 ,1 ,06מאסל50 אה ,081 10 ,8ת0) 801016055 /* 055 15 תעגט */ 186 ;(0 ,0 ,06מ4ספ50 א ,081 10 ,6ת0) 00101605 1 תעשם, 8 ל 2 הכפהו ומבוא ל-ספו תרשים 8.3: תיבת דו-שיח עם כפתורי רדיר פרק 8: מבט מקרוב על פקדים | 213 פרק 9 הקדמה לפסי גלילה (315ם |500) כמו שלמדת, חלון יישום יכול להציג דברים אחדים. מפעם לפעם החלון מציג אובייקט. נתונים 00600 03), כמו מסמך או צורה גרפית, שגדולה משטח הלקוח של החלון. כאשר יש לחלון פס גלילה (ז83 !/500), באפשרות המשתמש לגלול את אובייקט הנתונים שבתוך שטח הלקוח כדי לראות את כל המסמך או את כל הצורה הגרפית. חלון היישום צריך לכלול פס גלילה כאשר התכולה של שטח הלקוח גדולה ברוחב אור באורך מגודל שטח הלקוח של החלון. בגלילה סטנדרטית יש שלושה מרכיבים: החיצים משני הצדדים, רוחב פס הגלילה או האורך שלו, והגררה (פוחטחד) של פס הגלילה (וו התיבה הקטנה שהמשתמש גורר לאורך פס הגלילה). לדוגמה, תרשים 9.1 מציג חלון שבו פסי גלילה צמודים לשפות שטח הלקוח של החלון, בקצותיהס יש חיצים ובתוכס - גררה. תרשים 9.1: חלון עם פסי גלילה פנימיים והמרכיבים שלהם. 1 סוגי פסי הגלילה למדת בסעיף הקודס שלכל פס גלילה סטנדרטי (ז88 !560 50300870), ללא קשר במקומו ובכיוונו, יש תכונות כלליות המשותפות לו עס פסי גלילה אחרים. למעשה, יש שתי קטגוריות של פסי גלילה. הקטגוריה הראשונה היא פסי גלילה בשטח הלקות. (835 |ו0ז56 68זה-זח0ו(ס). פסי גלילה אלה יכולים להיות אנכיים או אופקיים, ואולי יופיעו כפסי גלילה סטנדרטיים או כפסי עקיבה (ז83 86%ז1). הקטגוריה השנייה היא. פסי גלילה שאינם בשטח הלקות (8975 ||0ז56 63זה-)ח06-חס)!). פאוסטחוא. מצמידה. את פסי הגלילה שאינס בשטח הלקוח לגבולות החלון. 4 3271חווו ומבוא ל-ספו 2 הוספת פסי גרירה לחלון הוספת פס גרירה מחוץ לשטח הלקוח באפשרותך ליצור ביישומים שלך פסי גלילה שאינם בשטח הלקוח, באמצעות המבנה. 5 או שהתוכנית מוסרת לפונקציה שסשְחו/%פ03/ס. כאשר מצמידים פס גלילה. לשפת החלון, פווסשחוו מחסרת באופן אוטומטי את רוחב פס הגלילה מתוך שטח הלקוח של החלון, כך שציור בשטח הלקוח לא יוצג אף פעם על פסי הגלילה. באפשרות. התוכנית גם לקרוא לפונקציה 505003 כדי להצמיד את פסי הגלילה לשפה הפנימית של החלון. בנוסף להצמדת פס הגלילה לשפה הפנימית של החלונות, מערכת ההפעלה מצמידה. באופן אוטומטי פסי גלילה לתיבות רשימה (8045 5%)) ולתיבות משולבות (ספוחסס. 5 כאשר רשימת הפריטים גולשת מעבר לגודלו של חלון הרשימה. באפשרות התוכניות גם להצמיד פסי גלילה לתיבות עריכה (8065 50). עם ואת, תיבות עריכה. בעלות שורה אחת (ח-פַ/5) תומכות רק בפס גלילה אופקי, בשעה שתיבות עריכה. מרובות שורות (6ח/) 6וקטוט!) מאפשרות תמיכה בשני פסי גלילה: אופקי ואנכי הוספת פס גרירה כסוג פקד לתיבת דו-שיח פקד פס הגלילה מחייב שימוש בכמה טכניקות מיוחדות. כדי להוסיף פקד פס גלילה כסוג פקד לתיבת דו-שיח, השתמש במשפט 888 508011, שהגדרתו הכללית היא: [16ע56 ,] 6מ10שא ,שו ,₪ ,פזפפ האפננסאספ בהגדרה זו, 5810 הוא הערך הקשור עם פס הגלילה. הפונה השמאלית-העליונה של פס. הגלילה תמוקם בנקודה +,א, וגודלו יהיה מכפלת הפרמטר תושוו בפרמטר אחספ הפרמטר 5/6 יקבע במדויק את סגנון פס הגלילה. לפי ברירת המחדל, הסגנון הוא: 2 585, היוצר פס גלילה אופקי. כדי ליצור פס גלילה אנכי, ציון 5 585 עבור הפרמטר 56/6. אם אתה רוצה בפס גלילה שיגיב להוראות מהמקלדת, כלול גם את הסגנון 85107 פא למשל, השורה הבאה יוצרת פס גלילה אנכי פסצפפמד ₪5 | צתפט 585 ,70 ,10 ,10 ,130 ,301 סז התמגנסה0ם פרק 9: הקדמה לפסי גלילה = 215 3 קבלת הודעות מפסי גלילה שלא כמו שאר הפקדים, פסי גלילה המתפקדים כפקדים אינס מפיקים הודעות סאאויוווסס וו. במקוס זה, פטי גלילה, בין אס הס פקדים ובין אס הס פטי גלילה של חלון, שולחים הודעות 50801 או או 456804 א/ו אל היישום, על פי פס הגלילה שעליו לוחצים, האופקי או האנכי. מילת הסדר-הנמוך של הפרמטר ומוק מודועה. לפונקציה המטפלת היכן היה העכבר כאשר המשתמש לחץ על הלחצן שלו. כתלות. במקום שבו היה העכבר בומן של הלחיצה, 5או0חו/ שולחת אחת מעשר הודעות אל התוכנית. תרשים 9.2 מראה את המקומות האפשריים ללחיצה בעכבר ואת ההודעה המתאימה שמקבל החלון. וה (8663566) 51710 0קפ ואט 50 (05506ק) 30197806 50 תרשים 9.2: חלק מההודעות ש-1060%5/% יוצרת כתוצאה מלחיצה בעכבר על פסי הגלילה. כאשר המשתמש משחרר את לחצן העכבר לאחר לחיצה במקום כלשהו בפס הגלילה, וסחוו שולחת את ההודעה 60508011 ואצ אל היישום. אס המשתמש הזיו את. הגררה בעורת העכבר, פאוסטחוא יוצרת את ההודעה 0511108קפואטוד 58 כאשר המשתמש משחרר את לחצן העכבר. 4 קביעת הטווח של פס הגלילה (ספח5015610!!₪3) לפני שתוכל להשתמש בפס גלילה כפקד, עליך להגדיר את הטווח שלו. הטווח של פס. גלילה קובע כמה מצבים יתקיימו בין שני קצות פס הגלילה. לפי ברירת המחדל, הטווח של פסי גלילה לחלונות הוא 0 עד 100. לפסי גלילה המתפקדים כפקדים יש טווח ברירת מחדל של 0 עד 0, לכן, יש להגדיר את הטווח לפני שניתן יהיה להשתמש. בפס הגלילה כפקד. כדי לקבוע את הטווח של פס גלילה, השתמש בפונקציה (0(!85960ז56156, שהגדרתה היא :+ ,ומנ שה1 ,2168 185 ,0משת פאשא) 06ה3ה1 8650501 מססם ;(ףת81שס? מ800 ,אמח שג 6 7א32חווו ומבוא ל-ספו במקרה זה, שחאוח היא הידית המגדירה את פס הגלילה. בפסי גלילה של חלונות, זוי ידית החלון, בפסי גלילה המתפקדים כפקדים, אוחי הידית של פס הגלילה (וכור שפסיי גלילה שהם פקדים, מעבירים את הידית שלהם ב- וגזגקו). הערך של חשוחוו יקבע איוה פס גלילה עומד לקבל הנדרת טווח. אם אתה עוסק בקביעת הטווח של פס הגלילה האנכי של חלון מסוים, חייב פרמטר זה להכיל את הערך דחפ 58. אם אתה עוסק בקביעת הטווח של פט גלילה אופקי של חלון נתון, חובה לרשוס את הערך 7 כדי להגדיר את הטווח של פס גלילה שהוא מסוג פקד, עליך לרשום את הערך 67 58. הערכים בשדות חווח ו- אפוח קובעים את הטווח. הערכים המותרים הס בין 0 ל-32,767. אס 6ח03שז מכיל ערך טטזו, אזי פס הגלילה יצויר מחדש לאחר קביעת הטוות. אס הוא: מכיל ערך 66ז, לא יוצג פס הגלילה מחדש. הפונקציה מחצירה ערך לא-אפס אם יצאה לפועל בהצלחה, וערך אפס א לא. 5 קביעת מצב הגררה בפס גלילה (56+50101]005) פטי גלילה הס פקדים להפעלה ידנית. לפוכך, חייבת התוכנית שלך להזיו את תיבת הגררה על פי הצורך. לשם כך, השתמש בפונקציה ()561560/1005, שהגדרתה הכללית. םי - 16 ,מס1תא טת1 ,שתשת סאאמ) 2011905 46 5 כאן, תווח היא הידית המגדירה את פס הגלילה. בפסי גלילה של חלונות, זוה ידית. החלון; בפטי גלילה שהס פקדים, ווהי הידית של פס הגלילה. הערך של חסוחי יקבע איוה פס גלילה יקבל הגדרות לתיבת הגרה שלו. אס אתה עוסק בקביעת מצבה של גררה בפס גלילה אנכי, יש להקצות לפרמטר זה את הערך דחפ 58. אס אתה עוסק בקביעת מצבה של גררה בפס גלילה אופקי, עליך להקצות לפרמטר זה את הערך 7 58. אבל בפקד פס גלילה, חייב ערך זה להיות 61 58. הערך של 05 יקבע את. מיקומה של תיבת הגררה. ערך זה חייב לייצג מיקום המצוי בתוך גבולות פס הגלילה. אם הערך של זחו3ק6ז הוא פנוז, יצויר פס הגלילה מחדש לאחר קביעת מיקום תיבת הגררה. אם הערך הוא 356!, לא יוצג פס הגלילה מחדש. 6 תוכנית ליצירת פסי גלילה (בתוך תיבת דו-שיח) בסעיף זה תוצג תוכנית פשוטה שתדגים לפניך כיצד ליצור פס גלילה אנכי בתוך תיבת. דו-שיח, ולטפל בהודעות ממנו. לתוכנית זו דרוש דו-שיח המוגדר כך. 4 ,154 ,20 ,20 מנמהסתה50נם 0מגדם 00מתזסצפםי אסנפקתס ₪5 | מתמנפדט ₪5 | קטפסק פא | מאתהאנתססון 5 ממ' טאפצופצפ פא פרק 9: הקדמה לפסי גלילה = 217 "889 505011 8 פַתפט" אסצעטהס "86516 585 פע" ,8 פאסע אזסטם 38 פס20816108",1 ממטתצ" 0 פסצפמהל ₪5 | פתפט 581,140,0,10,70,885 ספד 50011 סט לפניך התוכנית ז0/!88ז56 ליצירת פסי גלילה בשלמותה (בתקליטור 68009). היא מגיבה להודעות 1160 58, | א/וסספווז! 58, 68 הק 58 6000 58 אסנדופסקפויוטאזד 58 ו- א6ההדפאטווד 58 בהתאם לתזוות תיבת הגררה. שים לב שקביעת מצב הגררה הראשוני נעשית כתגובה להודעה 06אזסדזא1 .= כמו כן, היא מציגה את המצב הנוכחי של הגררה בתיבת הקבוצה ''חסו50סק פוחטחדיי (התוכנית. משתמשת לצורך זה בפונקציה : פסלאוסח5). מצב זה ישתנה ככל שתציו את הגררה. בתרשים 9.3 תוכל לראות פלט לדוגמה מהתוכנית. נקודה נוספת: שים לב שמצב הגררה מוצג על ידי משלוח פלט טקסט אל שטח הלקוח של תיבת הדו-שיח בעורת. הפונקציה ()19:0. על אף שתיבות דו-שיח משרתות מטרה מיוחדת, בסופו של דבר הן חלונות, ולחלונות אלה יש מאפיינים בסיסיים כמו לחלון הראשי 014066 >9188005 .< 014066 >55010 .< ".502011888" 106סה41 "ת. 0500208" במט1סת41 (81832) 4681868 415 מטתץ 32ונא 15 6ה001+ 8 א 15 ה401 3 4 0 >תאמטותת 4051106 /* פּחַת1ע80 מטקסטס 188סה */ ;[255] 862 צבתם א 4% /* ה1068510 מטססוס ממסעפטם */ ; 35686 מהמפעמם // ;חדת מסונתת5) ;"ממהעע" = סהפאסקתפפמ1 תפפסק1 ;"מ1168610קקת 014100 185166 869011888" | = 1529116 תעפפסקן ₪ (סאמ1 *55תנספומו פפאסם) 01860201295ה מססם (פספה 10% ,טנסה מאאא) פספשסגם 18ס 8 71א32חוו ומבוא ל-ספו פרק 9: הקדמה לפסי גלילה = 219 (שב *55ה1סטאאו עפאס0) ₪691866581895 מססם [ ה ססומר אב ו ב 11 ססר 01ב 001 סו ב סו = ו לב סו ב פס אס ,סע ףאסםמעמם<-סאמ1 = = 4הטסשףַאמ8מצעת אססט קשהממוטהו/2פם1<-סאמ1 = סתבאמהם/2פק1 אססט ,806ון8201258מ1ק-סאמ1 = 6ה5502ב125201 אססט ( סוק 12005 1 ; ("1ת8/8" ,06ת868מזת. %ם0א) ת1088100 1 0 ; (66069)א86018669018598 פנש ,הבצגתא אתתתקה ,ספפו עמצט (במות כומוה | 00עפבמה אסהמננתס נטפטתנ (88ש198 שתסתס ב 9 1 ו 00 106 886 ( ( פא ) תס ) 1608 [ צפפע 188 0886 ,מ ,"2686018106" ,טפמדת )18108508 ( 06שפ1656010 (69800מם) 8%ע צעאם 188 6886 (8 מ עס פע [ וצ + צסהצפפם 006 886 (0 0 %צ ו (88ע8ק1 ,מבצפא ,ספא ,0מאמ) ססעסא80ה1סע) מעטסם, 1 (01 ג 0 3271חווו ומבוא ל-ספו 0 ,פפעט צאצט ,נפת פאא₪ )506סף1ם6פשע אסממנותס ענטפטב ( מב85פ1 מתתתק1 ,הבלא אתתתקה /* מס1ס1פסק אסם 811862 */ ;0 = פסם מה1 2:8610 ( 8 | 1 [ ו ,מס 88 ,(581 ס016,10ה)ת06%019166 (פאאא) ) 8006 0696011 1 אתאססותת פע 86 |( בק 00 1) 66 5 סט 88 886 (++פסם הת = 05 ( )5 ;(1 ,08 ,תד 32 ,תב:גק1 (סאאט))0:962011908 (08 ותמ ) פאס (%מסצם ב פטטאדן 88 0886 8 = 008 (45)00560 ;(1 ,פסם ,תד 5 ,מבצבק1 (סאאם))0:302011808 (08 18 ) סמ 0 88 856 /* ה10פ1פסק ממסצעטם 65 */ ;(מבצבפא) פתסאצא = פסם ;(1 ,08 ,תד ם3 ,תב:בק1 (סאאט))0:96201108 (08 פמ ) אס לספ טוט 88 856 /* ה10פ1פסק טמסצעטס 966 */ ;(מב:בפא) פתסאנא = פסם ;(1 ,פסם ,תד 52 ,חבצבק1 (סאאט) )0596201108 (08ם ואפ ) פס ל תס 88 856 =+ 05 = )5 ;(1 ,8סם ,תד 32 ,מבצגק1 (סאאט))0:96201108 (08 ומת ) 08 סמ סע פרק 9: הקדמה לפסי גלילה = 221 2 הלבחו ומבוא ל-ספו 5 תרשים 9.3: דוגמת פלט מהפעלת תוכנית לוצירת פסי גלילה. אצל מתכנתי חלונות מתחילים נוצר משום-מה הרושם, שפסי גלילה הם עניין מסובך. למעשה, פסי גלילה הם אחד מאמצעי הפיקוד הפשוטים ביותר של חלונות. 7 הפונקציה -5010!!831/ש50 למדת שבאפשרות התוכניות להצמיד פסי גלילה לחלונות הן בזמן יצירת החלון והן לאחר שהחלון נוצר. כדי להצמיד או למחוק פס גלילה מחלון שנוצר כבר, משתמשים בפונקציה זג5001!8או50. פונקציה זו מציגה או מוחקת את פס הגלילה שהוגדר. את. הפונקציה ז88ו/50/50 כותבים כמו בהגדרה שלהלן 0 סט צגם 505011 (ז1ש אסטמנא 05 מ1מתמת // פא 9 48 509011 // 46 10 ע1116מ1פ1ט צמם 509011 // אפ סט 1 הפרמטר 6ח//ח מוהה פקד של פס גלילה או חלון עם פס גלילה סטנדרטי, על פי הערך. של הפרמטר זהפאו. הפרמטר אוסחפפ מגדיר אס פווסטחוו מציגה או מוחקת את פס הגלילה. אם אס הפפ שווה ל-פנחד, פאוסטחוו מציגה את פס הגלילה; אחרת, פאופשחואר מוחקת אותו. הפרמטר זגפוי מגדיר את פס הגלילה ש-מווס6חו תציג או תמחק. פרמטר זה יכול להיות אחד הערכים שמפורטים בטבלה 9.1. טבלה 9.1: הערכים האפשריים עבור הפרמטר זה8/א. ערך פירוש דסמ 58 | מציג או מוחק את פסי הגלילה הסטנדרטיים האופקיים והאנכיים של. החלון. וד 58 | מציג או מוחק את פקד פס הגלילה. הפרמטר 0ח/ח חייב. הידית של פקד פס הגלילה. 2 58 | מציג או מוחק את פסי הגלילה הסטנדרטיים האופקיים של החלון. דהפט 58 | מציג או מוחק את פסי הגלילה הסטנדרטיים האנכיים של החלון. פרק 9: הקדמה לפסי גלילה = 223 % הערה: אין צורך לקרוא לפונקציה ז3פ!ו60פאוסח5 כדי להחביא פס גלילה בומן הטיפול בהודעה של פס גלילה. לאחר הצגת פסי הגלילה נרצה בדרך כלל לשלוט בצורה שבה המשתמש מפעיל אותם. אחד הפקדים המקובלים (06זוחס6 חסוחוחטס) שתוסיף ברוב המקרים לפס גלילה הוא: הפקד המאפשר הפעלה או אי-הפעלה של אחד החיצים או שניהם בפס הגלילה. כדי לעשות ואת, משתמשים בפונקציה ז88וו5פוַח5. הפונקציה. זספווסזס5פופַחם. מאפשרת הפעלה או אי-הפעלה של אחד החיצים או של שניהם. משתמשים בפונקציה. 6031650018 בתוכניות כפי שמוצג שלהלן ) 14502011885מאת 005 פפט 505011 פס 018006 60 616ממת // וו סא 5198 פע פפט 566011 // אצ 8 אספפם שאמ 509011 // 5סצפגט עאצט / הפרמטר שח/וח מזהה חלון או פקד של פס גלילה, על פי ערך הפרמטר 8ַ5809וא. הפרמטר 58065 מגדיר את סוג פס הגלילה, והוא יכול להיות אחד הערכים שמפורטים בטבלה 9.1. הפרמטר פווסזזוו מגדיר אם החיצים של פס הגלילה מופעלים. או שאינם מופעלים, ומציין איוה חץ מופעל או שאינו מופעל. הפרמטר פאוסזז ו יכול. להיות אחד הערכים שמפורטים בטבלה 9.2. טבלה 9.2: הערכים האפשריים עבור הפרמטר זזה . עיך פירוש 80 158815 ₪58 | גורס לשני חיצי פס הגלילה להיות במצב לא-פעיל. אס 0158815 ₪58 | מעביר את החץ התחתון בפס גלילה אנכי למצב לא-פעיל. זז 558-0158865 | מעביר את הח השמאלי בפס גלילה אופקי למצב. לא-פעיל. קטדו 15845 .858 | מעביר את הח השמאלי בפס גלילה אופקי למצב. לא-פעיל, או מעביר את הח העליון בפס גלילה אנכ למצב לא-פעיל. זווא 015815 ₪58 | מעביר את החץ הימני בפס גלילה אופקי למצב לא-פעיל. אפדא 015815 558 | מעביר את הח הימני בפס גלילה אופקי למצב לא-פעיל, או מעביר את החץ התחתון בפס גלילה אנכי למצב לא-פעיל. קט 15815 ₪58 | מעביר את הח העליון בפס גלילה אנכי למצב לא-פעיל. 804 = ופאש 858 | גורם לשני החיצים של פס הגלילה להיות במצב פעיל. שתי פונקציות אלו יחד, נותנות אפשרות לתוכניות לנהל את רוב הפעילות של פס הגלילה הדרוש להן. 4 הכפהו ומבוא ל-ספו 8 המיקום והטווח של פס הגלילה ברוב המקרים, היישום משנה את הטווח כדי לשקף את גודל המסמך או התמונה. מיקום הגררת (פוחטחד) הוא הערך שנמצא בטווח שבו היא נמצאת. לדוגמה, אם הטווח הוא מ-0 עד 100 ומיקום הגררה הוא 50, אזי הגררה נראית באמצע פס הגלילה. באפשרותך ג לקבוע את גודל הדף (509 6סָק) של פקדי פס הגלילה. גודל הדף מיוצג את מספר התוספות בטווח פס הגלילה, שהדף יכול להציג בו-ומנית. לדוגמה, אם הטווח הוא מ-0 עד 100 וגודל הדף נקבע ל-50, פירוש הדבר שהדף יכול להציג חצ מטווח הפקד בכל זמן נתון. יש להשתמש בפונקציות 0/ח1ו/56/5000 ו-6615070//1000 כדר לקבוע ולקבל את טווח פס הגלילה, מיקום הגרה וגודל הדף, במקוס בפונקציות הישנות (585001005 ך- 0615001005 9 קבלת הערכים הנוכחיים של פס הגלילה כפי שלמדת, לפסי גלילה יש ערכי ברירת מחדל מסוימים בעת שמוסיפים אותם לחלונות התוכנית. אך למדת שהתוכניות משנות את הקביעות האלו במהלך הביצוע שלהן. פעמים רבות התוכניות חייבות לבצע פעולה מסוימת המבוססת על קביעות אלו. כדי שתוכנית תוכל לדעת את ההגדרות הנוכחיות של פס הגלילה, עליה להשתמש. בפונקציה 0וחזוו660500. הפונקציה 0/חזוו66/500 מקבלת את הפרמטרים של פס הגלילה, ובכלל זה את המיקום המינימלי והמקסימלי של הגלילה, את גודל הדף ואת. המיקום של תיבת הגלילה (804 !(5₪0, או הגררה). את הפונקציה 00זו/661500. כותבים בתוכנית כפי שמוצג שלהלן 0 505011 1% שס8מ1ש 05 16ממת // אא 9 פמ 509011 // (פפפה? 486 1 500 שפטפסמפ50 05 פשמתנסם //‏ 4פק1 0עא1 18508011 פאס ]1 ₪ כמו שאפשר לראות, הפונקציה ס/חזוו66500 מקבלת שלושה פרמטרים. הפרמטר ופפו, עליו תלמד יותר בהמשך סעיף זה, מחזיר ערך של 50א1ו50801. הו מבנה שמוגדר במערכת 5606 5190-060066ץ5 א), בעל האיברים הבאים. 3990801100 56906 686%מע [ צאט פוט ;הצאה 16 אבאה 406 פה פאעט פה 46 46 7 פרק 9: הקדמה לפסי גלילה = 225 שתי הפונקציות 6650/1100 ו-565070//[0/0 משתמשות במבנה 50א5680111. טבלה 3 מפרטת את איברי המבנה הזה. טבלה 9.3: איברי המבנה 5680111850. איבר תיאור 6 | מגדיר את הגודל בבתתים (095ע8), של המבנה 5080111850 95 | מגדיר את הפרמטרים של פס הגלילה, שצריך לקבוע או לקבל. איבר זה יכול להיות שילוב של הערכים שמפורטים בטבלה 9.4. חוויוח | מגדיר את מיקוס הגלילה המינימלי. אמא | מגדיר את מיקוס הגלילה המקסימלי. שא | מגדיר את גודל הדף. פס הגלילה משתמש בערך וה כדי להחלוט על. הגודל הפרופורציונלי המתאים של תיבת הגלילה (804 ו/5010) 5קו | מגדיר את המיקום של תיבת הגלילה. 605 | מגדיר את המיקום המיידי של תיבת הגלילה שהמשתמש גורר. כרגע. באפשרות היישום לקבל את הערך הזה בזמן הטיפול. בהודעת שינוי המצב אסאהד8ו/ד 58. היישום אינו יכול לקבוע את מיקום הנלילה המיידי. הפונקציה סוחזוו561500 מתעלמת. מאיבר זה. כמו שראית בטבלה 9.3, האיבר 185% יכול לקבל אחד ממספר ערכים מובנים. טבלה 9.4 מציגה את הערכים האפשריים שהפרמטר 185% יבול לקבל. טבלה 9.4: הערכים המובנים האפשריים שהפרמטר 891858 יכול לקבל. ערך פירוש ו 515 | שילוב של 65 *51, 205 51 ו-65אח -51. ו015860050%0 51% | משתמשים בערך זה בתוכניות רק כאשר קובעים את. הפרמטרים של פס הגלילה. אם הפרמטרים החדשים. שקובעים לפס הגלילה גורמים לכך שלא צריך אותו יותר, חייבים להעביר אותו למצב לא-פעול במקום. להסיר אותו. 8 "51 | האיבר סח מכיל את גודל הדף עבור פס גלילה. פרופורציונלי 5 51 | האיבר 05לח מכיל את המיקום של תיבת הגלילה. 8 51 | האיברים חו/וח ו-אפ/ח מכילים את הערך המינימלי והמקסימלי של טווח הגלילה. 6 71א52חווו ומבוא ל-ספו הפרמטר ח/וח שבפונקציה /ח1ו01ש615, מציין פקד פס גלילה או חלון עם פס גלילה. סטנדרטי (ז83 וו560 036ח513), על פי ערך הפרמטר זהפחז. הפרמטר ז83ח מגדיר את. סוג פס הגלילה שצריך לקבל עבורו את הפרטרים, והואא יכול לקבל אחד מהערכים. שמפורטים בטבלה 9.5. טבלה 9.5: הערכים האפשריים שהפרמטר 088 יכול לקבל. עוך פירוש 58 | מקבל את הפרמטרים עבור פקד פס גלילה. הפרמטר חח חיוב. להכיל את הידית של פקד פס גלילה. 2 58 | מקבל את הפרמטרים עבור פס גלילה אופקי סטנדרטי של החלון. דפ 58 | מקבל את הפרמטרים עבור פס גלילה אנכי סטנדרטי של החלון. לבסוף, הפרמטר |פק! מצביע למבנה מסוג 5680111850 שהאיבר 985% שלו, ברג הכניסה לפונקציה, מגדיר את הפרמטרים של פס הגלילה שצריך לקבל. לפני שחוזרים, הפונקציה מעתיקה את הפרמטרים המוגדרים לאיברים המתאימים של המבנה. הערך. של האיבר 1%856 יכול לחיות שילוב של הערכים שמפורטים בטבלה 9.6 (שים לב שהפונקציה 0/חז661500/1 מקבלת רק ערכים מסוימים של האיבר 55 טבלה 9.6: הערכים האפשריים של האיבר א19/85 שבמבנה 5080111850 ערך פירוש 8 51 | מעתיק את דף הגלילה לאיבר טמ של המבנה 5680111050 שמוצבע על ידי הפרמטר ופפ 05 515 | מעתיק את מקום הגלילה לאיבר 705ח של המבנה 5080111860 שמוצבע על ידי הפרמטר ופפ 516 | מעתיק את טווח הגלילה לאיברים חוו%ח ו-אפוי/ח של המבנה. 5680110 שמוצבע על ידי הפרמטר ופפ הפונקציה 0/ח///661560 מאפשרת ליישומים להשתמש בערך מיקום גלילה בן 32 סיביות. (פטו/ פ-32). למרות שההודעות שמציינות את מיקום פס הגלילה, 35080 ואו ו-ו0ה56 או מאפשרות ערך בן 16 סיביות (פטו3/ פ-16) בלבד עבור מיקום הנתונים, הפונקציות טוחזוו561500 ו-0וחזוו661500 מאפשרות להשתמש. בערך של 32 סיביות עבור מיקום הנתוניס של פס הגלילה. לכן, היישום יכול לקרוא ל-0/ח1ו/0י66090 כאשר הוא מטפל בהודעות 8568011 א או 50804 אא, כדר להשיג את מיקום הנתונים של פס הגלילה באמצעות ערך של 32 סייביות. ההגבלות על השימוש בערך של 32 סיביות עבור מיקום הנתונים של פס הגלילה מתייחסות לגלילת תכולת החלון בזמן אמת (6וחוד 1ג₪6). היישו מיישם גלילת ומן אמת על ידי טיפול בהודעות )45080 ואו או .4ו5080 ו, שמכילות את ערך שינור פרק 9: הקדמה לפסי גלילה = 227 המצב 66תחדפווט/ד 58, וכך הוא עוקב אחר מיקום תיבת הגלילה (טוחטחד) כאשר המשתמש מזיז אותה. לרוע המול, אין פונקציה שמקבלת ערך בן 32 סיביות של מיקוס תיבת הגלילה כאשר המשתמש מזיז אותה. מכיון ש-661560/110/0 מאפשרת. לקבל את המיקום הסטטי בלבד, היושום משיג רק ערך בן 32 סיביות של מיקום הנתונים לפני, או אחרי פעולת הגלילה. 0 גלילת תוכן החלון הפעולה החשובה ביותר שפסי הגלילה מבצעים היא מתן אפשרות למשתמשים לגלול. את תוכן החלון. השליטה בגלילת החלון נעשית באמצעות הפונקציה אְסטְחו/שו5001. פונקציה זו גוללת את התכולה שנמצאת בשטח הלקוח של החלון המוגדר. משתמשים. בפונקציה 5%ו60חו56/0//00 בתוכניות כמו שרואים בהגדרה שלהלן 16 0 01 60 אסבת1ש 05 ש1מממת // וו סא 509011188 81:ה20נצסת 05 ממטסתם // 4 8ה5020111 1081סעסט 05 מתטסחם // ג 10 שפטמסטע%פ 01 8002658 //‏ ,0502011צק* צסמת - | 50011 10 בענוסטעםפ 01 8085685 // = ,00110עק* צסמת צפאסס 08ם: מצגם // 100שסע ב6בקט 05 16מממ // אמט 10% שעגטסטעםם 06 2849085 // שסםתק1 סט 8 011108ע50 // 8 פאצט / הפונקציה א5סַחו/ו/560 מקבלת שמונה פרמטרים, שאת מרביתם אפשר לצפות. טבלה 9.7 מפרטת את הפרמטרים שמקבלת הפונקציה א5סְחו/ש50011. טבלה 9.7: הפרמטרים של הפונקציה א5אוסח1/ו/56101. פרמטר תיאור שחצוח | מאהה את החלון שפונקציה א6ַ/סחו/560/14 אמורה לגלול את שטח. הלקוח שלו. + | מגדיר את טווח הגלילה האופקית ביחידות התקן. פרמטר זה חייב. להיות שלילי כדי לגלול שמאלה. 6 | מגדיר את טווח הגלילה האנכית ביחידות התקן. פרמטר זה חייב. להיות שלילי בדי לגלול כלפי מעלה. 8 32371חו/ו ומבוא ל-ספו פרמטר ו ב 8 ו ב תיאור מצביע למבנה ₪50 שמגדיר את חלק שטח הלקוח בחלון שפונקציה 50/0/00 אמורה לגלול. אס פרמטר זה הוא 1, הפונקציה 5001/0100 גוללת את כל השטח. מצביע למבנה 8567 שמכיל את קואורדינטות מלבן הגזירה. (6ו₪601300 הַחוקווס). הפונקציה אפווסטחווו/5010 משפיעה על חלקי. ההתקן שנמצאים במלבן הגזירה. פווס6חוו צובעת חלקים. שהפונקציה גוללת מחוץ המלבן פנימה; 1100006 ינה צובעת. חלקים שהפונקציה גוללת מתוך המלבן החוצה. מוהה את האזור שהפונקציה א5או00חו/4וו560 מגדירה כדי להחזיק. את האזור שהגלילה הופכת אותו ללא תקף. הפרמטר פְגקְטחטָז יכול להיות א. מצביע למבנה מסוג ₪86 שמקבל את גבולות המלבן שהגלילה. הופכת אותו ללא תקף. הפרמטר סוטפטחפָזח יכול להיות )א מגדיר דגליס ששולטים בגלילה. פרמטר זה מקבל אחד הערכים. שמפורטים בטבלה 9.8. כמו שציינו בטבלה 9.7, הפרמטר 5סָ! יכול לקבל אחד ממספר ערכים מובנים שבמערכת. טבלה 9.8 מפרטת את הערכים האפשריים של הפרמטר פסָּח. אם הפונקציה מצליחה, הערך המוחזר הוא א588610 51971 (אזור מלבני שאינו תקף), א0ז856אש קויוסס (אזור שאינו מלבני ואינו תקף; המלבנים חופפום), או א8610ה וטא (אין אזור תקף); ואס הפונקציה נכשלת, היא מחזירה את הערך ה0ה68. טבלה 9.8: הערכים האפשריים עבור הפרמטר ₪₪695. עוך פירוש 85 שופ | מוחק את האזור החדש הלא-תקף, על ידי שליחת. ההודעה %א8₪558%6 או לחלון כאשר כוללים את. הדגל ₪855 5 עם הדגל שד10/א1 5 =דהסזושא1 5 | גורם לאי תקפות האזור שמווהה על ידי הפרמטר. 8 אפ 568011.0011 5 | גולל את כל חלונות הבנים שנחתכים 1615600 חיתוך) עס המלבן שמצביע עליו הפרמטר ו65610זק. 6% גוללת את חלונות הבנים כמספר הפיקסלים. שמצוין בפרמטרים א6 ו-ץ6, ושולחת הודעת. פס או לכל החלונות הבנים שנחתכים עס המלבן וו6500זם, אפילו אם הם אינם זזים. פרק 9: הקדמה לפסי גלילה = 229 אם בקריאה. לפונקציה מוגדרים | הדגלים 6דאס1טא1 /50 ו-56ה₪ 50, 0005חו/ו//5070 אאינה מסמנת את האזור שהיא גוללת כלא תקף. אם לא נקבע אף לא אחד משני דגלים אלה, א0005חו/וו560 מסמנת את האצור שהיא גוללת כלא תקף. וס6חוו אינה מעדכנת את האזור עד שהיישום קורא לפונקציה ע000חו9184ק, אר שהוא קורא לפונקציה 866340604 (מגדיר את צוסאשדהסקט ופה או את הדגל ש6855%0 שופף), אד מקבל ההודעה דאזאק %!א מתור ההודעות של היישום. אס יש לחלון את הסגנון אה 0117011 05ו, האזורים המוחזרים שמוגדרים על ידי סז ו-036קסזק מיצגים: את האזור הכולל שעל 5וס6חו לעדכן, ובכלל זה. אזורים שבחלונות הבן. אם בקריאה לפונקציה 560//0006006% מוגדר. הדגל שח 50801.0 5%, אזי פאאסטחוו אינה מעדכנת את המסך כראוי אם המשתמש גול רק חלק של חלון בן. פווסטחוו אינה מוחקת את החלק הנגלל של חלון הבן שנמצא מחוץ למלבן המקור, ואינה צובעת מחדש את חלון הבן ביעד החדש שלו. כדי להזיז חלונות הבן שאינם נמצאים כולם במלבן שמוגדר על ידי |/500סזפ, השתמש בפונקציה פסקאוסטחו/%ז06/0. 5וס0חו/. ממקמת את הסמן מחדש אם נקבע הדגל אשהס50801.011 5 ומלבן סמן הטקסט חותך 1619960) את מלבן הגלילה. 0005חו/4. מציינת את כל קואורדינטות הקלט והפלט (עבור !6501זק, - 601זם, 6 ו-סוה0קטחפָזח) כקואורדינטות לוגיות, ללא קשר אם יש לחלון את סגנון המחלקה 6פאע. 65 או 15506 65. השתמש בפונקציות טוק ו-וסוק כדי לתרגס מקואורדינטות לוגיות ולקואורדינטות לוגיות, אם יש צורך בכך. כדי להבין יותר טוב את פעולת הפונקציה אַאס0ַחו/ו// ,560‏ התבונן. בתוכניתת אוסחו/+ /01ז56 שנמצאת בתקליטור המצורף לספר זה (618009). התוכנית צוס6חו/ !5610 מאפשרת למשתמש להוסיף מדי פעם שורה לחלון התוכנית. כשמספר הקווים עובר את השטח הקיים במרחב החלון, פס הגלילה הופך לפעיל. כאשר המשתמש לוחץ בעכבר על הח העליון או על החץ התחתון, הגררה זזה שורה. אחת בכיוון המתאים. 1 ההודעה 5126 וזש בסעיף הקודם למדת על התוכנית אוסחו !/0ז56, שאיפשרה למשתמשים לבחור בפס הגלילה כדי לנוע למעלה ולמטה בחלון. התוכנית מפעילה את פס הגלילה כאשר תכולת החלון ארוכה מדי מכדי להציג אותה בגודל החלון הנוכחי. אם ניסית את התוכנית אוס6חו/ !5610 והגדלת את החלון, ודאי ראית שפס הגלילה הפך להיות. שוב לא-פעיל, לאחר שהגדלת את החלון במידה מספיקה להצגת כל הטקסט. התוכנית. 00160 567011 לוכדת את הודעת המערכת 5125 זא ומעדכנת. את פס הגלילה, לאחר ששינית את גודל החלון 5 פסעחוה ש(ט 0-081001266: ,51260 15 אסהתנא שמ: שמגו עצסשם // צגם 502011 שת: 865 28 צ18קפ41 הגש 68ב 8מ116ם שמ: 18ב // 0 0 3271חווו ומבוא ל-ספו 9125 0 56 ו ספה ( 82606 ,6ממ )0110605 / 0םםסט .260% = פשתגנספפם ( 008ם1תטאת > מפה1תקפסת | :4 [ 00 / 5080120 )412605 = 6פ81מ0. 51 קמסתק עעם | מסאתת עצפ | פסק 38 = 6פגם 21 7 = המו תטאה = אגעם. 1 ;פפת!1מפפה = 6מַגעת. 51 /פספפטסה = 8סעם.21 ;(מפסם מנמתום 58 ,צהמט 58 ,4האג) צ1080201188מפהם ;| פעת ,81 ,פתמט 58 ,המת )50ה0:9620111 1 8 ; (מצסה מממתפנם 58ם ,להמט 58 ,0מאג)ע1880201188מממם 1 סע במקרה של התוכנית אוסשחוש /(0ז56, משפט 6356 של 5125 וזו בודק את מספר השורות שיכול החלון להציג כנגד מספר השורות שמוצגים כרגע. אס מספר השורות. האפשרי גדול ממספר השורות המוצגות, התוכנית מעבירה את פס הגלילה למצב לא-פעיל; אחרת, התוכנית משנה את גודל הגררה (אם יש צורך בכך) ומציגה את פס הגלילה החדש שהותאם לגודל החלון. משתמשים בהודעה 5175 וא כדי לבדוק את גודל החלון הנוכחי ולהחליף פריטים. כלשהם שנמצאים בחלון שהמקום שלו תלוי בגודל החלון. לדוגמה, אם יש לך תיבת עריכה (803 86) בחלון שמציג כותרת והמשתמש משנה את גודל החלון, תרצה בוודאי לשנות את גודל תיבת העריכה בהתאמה עס החלון. הפעולה שיבצעו התוכניות. כאשר הן מקבלות את ההודעה 5126 ו תהיה שונה, בהתבסס על סוג שינוי הגודל. שעשה המשתמש. ההודעה 5126 זו מעבירה קבוע שמייצג את סוג שינוי הגודלל בפרמטר וזבזהלאו. טבלה 9.9 מפרטת את הערכים האפשריים של הפרמטר וזמזסוו. פרק 9: הקדמה לפסי גלילה = 231 טבלה 9.9: הערכים האפשריים של הפרמטר זאש בהודעה 512 וא עיך פירוש =פזואאוא 5128 | 5אוסשחוו שולחת את הודעה לכל החלונות הנשלפים (0-קסק. אוסשחו/ו) כשהמשתמש מגדיל למקסימום חלון אחר כלשהוו ססקזוווזאאו 5128 | המשתמש הגדיל את החלון לגודל מקסימום. ש50/ 5126 | פוסטחוצו שולחת את הודעה לכל החלונות הנשלפים כאשר המשתמש משחור חלון אחר כלשהו לגודל שהיה לו קודס. ססקזויונאזוו 5175 | המשתמש הקטין את החלון לגודל מינימוס. 85510850 5125 | המשתמש שינה את גודל החלון, אבל אף לא אחד מהערכים. ססקנוונוונוא 5126 אר ס5קנאזאאו 5126 ישימים. בנוסף, ההודעה 5126 או מעבירה מידע על החלון החדש בפרמטר וחמּזקו. מילת. הסדר-הנמוך של חוגזגלו מגדירה את הרוחב החדש של שטח הלקוח, ומילת הסדר-הגבוה של וחּזגק! מגדירה את הגובה החדש של שטח הלקוח. 2 ההודעה דאז2ק ואצו למדת שהיישוס מקבל את ההודעה 5126 ואו בכל פע שהמשתמש משנה את גודל. החלון. פווס6חו ג תשלח ליישום את ההודעה דאזק אצ אחרי ההודעה 5126 אא בכל פעם שהמשתמש משנה את גודל החלון. למעשה, היישום מקבל את ההודעה דאזאק. או כאשר פווס6חוו, אד יישום אחר, מבקש לצבוע חלק מחלון היושום שלך פאוסחוו ‏ שולחת את ההודעה זא[אק או כשהתוכנית קוראת לפונקציה 0319 אר ל-אס6חוו3זסה ; או שהיא שולחת את ההודעה לפונקציה 6 כאשר היישום משתמש בפונקציה 6600699306 או בפונקציה 6 כדי לקבל אאת ההודעה דא/1ק וע הפרמטר וחגזפקוי של ההודעה דאזק | מכיל את הערך 86. הערך 06 הוא ידית. להקשר התקן (אוחס6 06/08). פרמטר זה מצהה את הקשר ההתקן שבו וחור צובעת. אם הפרמטר וגזגסווי הו 11 היישוס צריך להשתמש בהקשר ההתקן של ברירת המחדל (במקום ליצור הקשר התקן פרטי, פוטס 6006 ופעזק). מספר פקדים משותפים משתמשים בפרמטר לוי כדי שיהיה אפשר לצייר בהקשר התקן. אחר מוה של ברירת המחדל. חלונות אחרים יכולים להתעלם בצורה בטוחה מ-חפזמק או הפונקציה 06זקואס6חו/0ם הופכת את אזור העדכון סופ 035ק0) לתנקף (31/0919/. יכול להיות שהפונקציה תשלח גם הודעת דאזק6! וא לפונקציית החלון, אם 5וס6חוו חייבת לצבוע את חלון המסגרת (פוחבז אוסחו//, ובנוסף היא שולחת את ההודעה ₪8456866%0 א אם 05ו60ח/4 חייבת למחוק את הרקע של החלון. 2 זקא2חווו ומבוא ל-ספו המערכת שולחת את ההודעה דא1אק וו כאשר איין הודעות אחרות בתור ההודעות. של היישום. 9306פסואתפוהקפם. מחליטה לאן לשלוח את ההודעה. 000009936 מחליטה איזו הודעה לשלוח. 661//65306 מחצירה את ההודעה דאזאק וו כאשר אייך הודעות אחרות בתור ההודעות של היישוס, ו-0300/1655306פוס שולחת את ההודעה. לפונקציית החלון המתאימה. יכול להיות שהחלון יקבל הודעות דאזאק ו פנימיות כתוצאה מהקריאה לפונקציה. הבטה עם הדגל דאזהק התמדא /וסא. במקרה כזה, ייתכן שלחלון אין אזור עדכון. היישוס צריך לקרוא לפונקציה 661006316996 כדי להחליט אס יש לחלו. אזור עדכון. אס 660020308866 מחזירה אפס, היישוס אינו צריך לקרוא לפונקציות. לחומ ו-וחו3קמהם. אכ היישוס אינר קורא לפונקציה 0309860ק6600, אזור העדכון לא יעודכן כראוי, או שלא יעודכן כלל.היישום חייב לחפש במבנה הנתונים. הפנימיים שלו כל הודעה דוזק זאו כדי לבדוק אם יש צורך בצביעה פנימית כלשהי עליו לעשות ואת משתי סיבות: ייתכן שאזור העדכון שאינו 1א, או קריאה לפונקציה. 8600160 עס הדגל דאזהקהאהסדח1 שופ היא שגרמה להודעה דוק ואר פוסחוו שולחת הודעה דאזאק 0% פנימית רק פעם אחת. אחרי ש-009059806. מחזירה הודעת דאזגק זא פנימית, או לאחר ש-4ו00חו0319%ק/ שולחת 6001055306 לחלון, 0000265 אינה משגרת הודעות דאזאק נוספות. היא ממשיכה לשלוח הודעות רק לאחר שהתוכנית מודיעה שהחלון לא תקף (אוסנחוו סחד 565וח1), אר עד שהתוכנית קוראת פעם נוספת ל-או00חו//ו3ז60ה עם הדגל דאזהק הסדא אוה בחלק מהפקדים המשותפים, עיבוד הודעת ברירת המחדל זאזאק וו כולל את בדיקת. הפרמטר וחמפזהקאו. אם חומזגלאו אינו -011א, הפקדים מניחים שהערך הוא ידית של הקשר התקן והם ישתמשו בהקשר ההתקן הזה לצביעה. כדי להבין טוב יותר את הטיפול של התוכנית בהודעה 107 א/ו, התבונן בתוכנית %ו04:060. 567011 שהוצגה. בסעיף 9.11. 3 שינוי מצב פסי הגלילה פעיל ולא-פעיל התוכניות יכולות לנהל בקרה ושליטה מוחלטת על פסי הגלילה. אחת הפעילויות. הנפוצות המבוצעות על ידי התוכניות בעבודה עס פסי גלילה היא להביאם למצב פעיל. (סופַח5) או למצב לא-פעיל (6ו580ום). כפי שראית בסעיף 9.11, לדוגמה, התוכנית. יכולה להפוך את פס הגלילה ליילא-פעיליי, ולמעשה לבטל אותו, כאשר המשתמש' משנה את גודל החלון עד שהוא יכול להציג את כל מה שמוכל בו. כדי להביא את פסיי הגלילה למצב פעיל ולמצב לא-פעיל, משתמשים בפונקציה ז6560/83ו8ח5. הפונקציה. ז0(!83ז801650ח5 גורמת לחץ אחד או יותר, של פס הגלילה, להיות במצב פעיל או במצב. לא-פעיל. משתמשים בפונקציה ז0/!83ז80801656 בתוכניות כמו שרואים בהגדרה. הבאה. פרק 9: הקדמה לפסי גלילה = 233 ) 8562011985 1טאתם 008 פ8ט 509011 צם 918606 0 16ממת // וו סא סט פס 809011 // צאט 8 אספפם פמ 509011 // סגא צאט ו כפי שאפשר לראות, הפונקציה ז6500//83ו63 מקבלת שלושה פרמטרים. הפרמטר שוח מאה חלון או פקד פס גלילה, על פי ערך הפרמטר 80505פאו. הפרמטר 580905 מגדיר את סוג פס הגלילה. הערכים של פרמטר זה יכולים להיות אחד מאלה שמוצגים. בטבלה 9.10 טבלה 9.10: הערכים האפשריים של הפרמטר 58/1895 ערך פירוש ודסט 58 | מאפשר הפעלה ואי-הפעלה (הבאה למצב פעיל או למצב לא-פעיל) של. החיצים שבפסי הגלילה האופקייס והאנכיים שמוגדרים בחלון מסוים. הפרמטר שח/ז חייב להיות ידית החלון. ד 58 | מוהה את פס הגלילה כפקד פס גלילה. הפרמטר 80/06 חייב להיות. חידית של פקד פס הגלילה. 7 58 | מאפשר הפעלה ואי-הפעלה של החיצים בפס הגלילה האופקי שבחלון. הפרמטר שחש חלוב להיות ידית החלו. דהפ 58 | מאפשר הפעלה ואי-הפעלה של החיצים בפס הגלילה האנכי שבחלון. הפרמטר ₪6 חייב להיות ידית החלון. לבסוף, הפרמטר פווסזואווו מגדיר אם חיצי פס הגלילה הם במצב פעיל או במצב לא-פעול, ומצייץ איזה חיצים צריכה הפונקציה זגפוו0ז956ח₪ להעביר למצב פעול אד למצב לא-פעיל. הפרמטר פווסזזאוי יכול לקבל את אחד הערכים שמפורטים בטבלה 1. שים לב שכל הפרמטרים מתייחסים לביטול הפעלה של אחד החיצים, או שניהם. טבלה 9.11: הערכים האפשריים של הפרמטר זזה /. עוך פירוש אד80 158815 ₪85 | מבטל הפעלת שני החיצים של פס הגלילה. אצוסס 01585 585 | מבטל הפעלת הח התחתון בפס גלילח אנכי. ד 015815 .85 | מבטל הפעלת הח השמאלי בפס גלילה אופקי. קטד 15815 885 | מבטל הפעלת הח השמאלי בפס גלילה אופקי, או מבטל הפעלת החץ העליון בפס גלילה אנכי. דוו6נפ. 0158815 .585 | מבטל הפעלת החץ הימני בפס גלילה אופקי. 4 3271חווו ומבוא ל-ספו ערך פירוש. אסזה 015815 ₪85 | מבטל הפעלת החץ הימני בפס גלילה אופקי, או מבטל. הפעלת החץ התחתון בפס גלילה אנכ קט 0158815 ₪85 | מבטל הפעלת החץ העליון בפס גלילה אנכי. 80 150815 ₪85 | מבטל הפעלת שני החיצים בפס גלילה. אם הפונקציה מצליחה להביא את החיצים שמוגדרים על ידי הפרמטר פאסזהו למצב. פעיל או למצב לא-פעיל, הערך המוחזר ממנה אינו אפס. אם החיצים נמצאים כבר במצבם כנדרש, או שארעה שגיאה, הערך המוחזר הוא אפס. בתקליטור שמצורף לספר וה תמצא את התוכנית 0188016 80/6חש, שגורמת לפס. הגלילה האנכי שיהיה במצב פעיל או במצב לא-פעיל כתלות בגודל החלון ותכולתו. שים לב כיצד התוכנית בודקת בעורת הפונקציה 67106ח/ את גודל החלון ותוכנו בכל. פעם שהחלון מקבל את הפקודה 5175 א/+. תוכל לראות שפסי הגלילה עוברים למצב פעיל או למצב לא-פעיל, בהתאמה, לאחר שהחלון מקבל את ההודעה 5125 ואו והתוכנית מטפלת בפקודה זור %. הערה: התוכנית לא מגיבה על לחיצות העכבר על החיצים. 4 הפונקציה 50101!6 בסעיפים הקודמים למדת על מספר פונקציות של פסי הגלילה ועל ההודעות שהן יוצרות. בשלב זה חשוב להבין איך יכולות התוכניות לגלול חלונות שמציגים גרפיקה או פריטים שאינם שורות טקסט. ככלל, כאשר מציירים בחלון פריטים שאינם טקסט,, משתמשים בהקשר התקן כדי לעשות זאת. אפשר גם להשתמש בהקשר התקן כאשר מציירים טקסט בחלון, למרות שמשתמשים בדרך כלל בגישה בלתי ישירה אל התוכן. כאשר גוללים הקשר התקן בחלון, משתמשים בדרך שונה לגלילת הקשר ההתקן או חלק מהקשר ההתקן. הפונקציה 560/06 גוללת מלבן של סיביות בהקשר ההתקן בכיוון אופקי ואנכי. את הפונקציה 560/06 כותבים בתוכניות כמו בדוגמה שלהלן 00 אפס 400166 05 מנבממת // ,ספ ספ מ 509011 81ץת120צסת // 46 מ 50:011 1081פצסט // ה 0₪ף בעממסטע:ם 05 248588 //‏ ,562011שע1* צסמת דצמו 001 // עס1 שעטססטםם 05 8882088 // 5608816 6ת1מס013 // 299108 הַה0111ע50 05 מ1תמת // הת את שס1 שענטסטפםם 08 8444688 // 1 6 0 שפ1* עסמה צפו / פרק 9: הקדמה לפסי גלילה = 235 הפרמטריס שמקבלת הפונקציה 5601106 מפורטים בטבלה 9.12 טבלה 9.12: הפרמטרים שמקבלת הפונקציה 5610/0. פרמטר ספת 9 1 ב זפ 8 8 תיאור מציין את הקשר ההתקן שמכיל את הסיביות שהפונקציה 6פו5001 צריכה לגלול. מגדיר את הגודל, ביחידות התקן, של גלילה אופקית. פרמטר זה. חייב להיות ערך שלילי כדי לגלול שמאלה. מגדיר את הגודל, ביחידות התקן, של גלילה אנכית. פרמטר זה חייב. להיות ערך שלילי כדי לגלול כלפי מעלה. מצביע למבנה מסוג ₪86 שמכיל את הקואורדינטות של המלבן הנגלל 86013 הַווו5010). מצביע למבנה מסוג ד850 שמכיל את הקואורדינטות של מלבן הגזירה (9/9ח86613 הַוּווס). הפונקציה 560/06 משפועה על חלקי ההתקן שמוגדרים במלבן הגזירה. פאוס6חו צובעת חלקים. שהפונקציה גוללת מחוץץ למלבן ופנימה; 6006חו אינה צובעת. חלקים שהפונקציה גוללת מפנים המלבן והחוצה. מציין את האזור שאינו מכוסה על ידי תהליך הגלילה. 5001190 מגדירה את האזור הזה, והוא אינו בהכרח מלבני. מצביע למבנה מסוג 8561 שמקבל את הקואורדינטות של המלבן שתוחס (₪601500/6 הַחוחט80) את אזור העדכון (חסו86 006318 הנגלל. זהו השטח המלבני הגדול ביותר שיש צורך בצביעתו. כאשר הפונקציה חוזרת, הערכים שבמבנה נמצאים בקואורדינטות לוגיות, ללא תלות במצב המיפוי של הקשר ההתקן שמוגדר. הדבר מאפשר ליישומים להשתמש באזור העדכון בעת קריאה לפונקציה הסה וח1, אפ יש צורך בכך. אס הפרמטר 0306ק6זק! הוא -011, פאוסחו/ אינה מחשבת את מלבן העדכון. אס שנר הפרמטרים 618קטחפָזח ו-6318קסזקו שודים ל-8011, פאוסחו/ אינה מחשבת את אזור. העדכון. אס הפרמטר טוג6פטחפזח אינו 04, וסחוי ממשיכה כאילו יש לה ידיתת תקפה לאזור שתהליך הגלילה (שהוגדר על ידי 06ו/500) אינו מכסה. כדי להבין טוב יותר את הטיפול שמבצעת הפונקציה 06ו/560, התבונן בתוכנית 20 561010 שנמצאת. בתקליטור המצורף לספר וה. התוכנית מציירת סדרת קווים בחלון; ואז, כאשר מנסים לגלול את החלון עם פס הגלילה, התוכנית גוללת רק חלק מהחלון. למרות שיכול להיות שקוד התוכנית 86 56101 אינו ברור כל כך, הפונקציה מבצעת פעולה פשוטה למדי: גלילת חלק מהחלון. התוכנית 6 !56100 יוצרת הקשר התקן ואחר כך קובעת שהאזור ש-06וו560 מעבירה יהיה קטן ב-20 יחידות משטח הלקוח. של החלון. אחר כך התוכנית קוראת לפונקציה 560/15 כדי לגלול את המלבן ימינה. 6 3271חו/ו ומבוא ל-ספו פיק 10 הטיפול בטקסט בפרק וה נעסוק בשטח הלקוח סז זח6וס) של החלון, ונבדוק היבטים שונים של ניהול טקסט במסגרת חלונות א9. גם נפתח כמה טכניקות חשובות המפשטות את הצביעה מחדש של חלון לאחר ששוכתב. לסיום, נדון בפרק זה כיצד להשתמש ביישום. בגופני טקסט נוספים. כמו ברוב ההיבטים האחרים של סביבת חלונות 9%, נתונה בידי המתכנת שליטה כמעט. בלתי מוגבלת על הדרך שבה יוצג הטקסט וינוהל במסגרת שטח הלקוח של כל חלו נתון. לפיכך, אין באפשרותנו לעסוק בפרק זה בכל ההיבטים של הטיפול בטקסט באמצעות תוכנת חלונות. עם זאת, תוכל בקלות להמשיך ולחקור היבטים נוספים של הטיפול בטקסט לאחר שתבין את היסודות שנציג בפרק זה. נפתח את הפרק בדיון במערכת הקואורדינטות של החלון, וכיצד הטקסט ממופה עליה. לאחר מכן נעסוק בפונקציות 1 לטקסט ולמסך. פונקציות אלו יסיועו לך בבקרה ובניהול של פלט הטקסט אל שטח הלקוח של החלונות. 1 הקואורדינטות של חלון הפונקציה ()וסואטד היא הפונקציה החלונאית לפלט בצורת טקסט. היא מציגה מחרוות בקואורדינטות שהוגדרו עבורה, שתמיד מתייחסות לחלון עצמו. לכן, מיקום. החלון על המסך אינו משפיע כלל על הקואורדינטות המועברות לפונקציה ()100אפד. לפו ברירת המחדל, הפינה השמאלית-העליונה של שטח הלקוח בחלון נמצאת בנקודה. 0, 0. הערך א גדל ככל שנעים ימינה, והערך + גדל כל שנעים כלפי מטה. עד כה השתמשת בקואורדינטות החלונות עבור הפונקציה ()0א9ד וכדי למקם מרכיבים שונים בתוך תיבות דו-שיח, מבלי להזכיר באופן מיוחד למה מתייחסות הקואורדיאטות האלו. בנקודה וו רצוי להבהיר כמה פרטים. ראשית, הקואורדינטות. המוגדרות עבור ()0:אטד הן קואורדינטות לוגיות (03005ו00016 00831 כלומר, היחידות המשמשות את הפונקציה (ופונקציות נוספות לתצוגה בחלון, לרבות הפונקציות הגרפיות בהן נדון בפרק הבא) הן יחידות לוגיות (וח 6וָ10). חלונות. ממפה את היחידות הלוגיות והופכת אותן לפיקסלים בעת התצוגה בפועל של הפלט. פרק 10: הטיפול בטקסט ‏ 237 עד כה לא היה צורך לעסוק בהבדל הזה כלל, מכיון שלפי ברירת המחדל יחידות לוגיות. והות לפיקסלים. ובכל ואת, חשוב להבין שניתן לבחור במצבי מיפוי שונים שבהס ברירת המחדל הזו, הנוחה בדרך כלל, לא תתאים. 2 הגדרת צבע הטקסט והרקע לפי ברירת המחדל, פלט טקסט לחלון באמצעות הפונקציה ()0א9ד יופיע בשחור על גבי הצבע הנוכחי של הרקע. אך תוכל לקבוע את צבע הטקסט ואת צבע הרקע באמצעות הפונקציות ()ז0ו56016100 ו-()01ו5618600, שהגדרותיהן מובאות להלן 0105 0 0010995 ,00 80| ע10ססאם86 עעהתס10ס0ם 0 סנס 0105 הפונקציה ()56/160000 קובעת את צבע הטקסט הנוכחי בהתקן הקשור עם 66 לפ הערך שמכיל הפרמטר 600 (או צבע קרוב לערך וה, שההתקן מסוגל להציג. הפונקציה ()ז56186000 קובעת את צבע הרקע לטקסט, לפי הערך השמור בפרמטר זס וס (או גוון קרוב לו). עבור שתי הפונקציות, מוחזר הערך של הצבע הקודס. במקרה. של שגיאה, מוחור הערך זא הס. הצבע מוגדר כערך מהסוג +0010888, שהוא מספר שלם בן 32 סיביות. חלונותת מאפשרת להגדיר צבעים בשלוש דרכים. הראשונה, והנפוצה ביותר, לפי ערכי 868 (אדוס, ירוק כחול). בשיטה זו, נעשה שילוב בין העוצמות היחסיות של שלושת הצבעים, והצירוף הוא שמחולל את הצבע הרצוי. שיטה שנייה, להגדיר צבע כערך אינדקס בטבלת צבעים לוגית. שיטה שלישית, ערך 868 המתייחס לטבלת צבעים. בפרק זה, תעסוק בשיטה הראשונה בלבד. אל הפונקציה ()560164/0001 או הפונקציה ()56980001 מועבר מספר שלם ארוך, המכיל צבע 868 בית (9ץ8) הצבע בית 0 (בית מסדר-נמוך) אדוס בית 1 ירוק בית 2 כחול. בית 3 (בית מסדר-גבוה) חייבת להכול 0. כל צבע בערך ₪68 מצוי בטווח שבין 0 ל-255, כאשר 0 מייצג את העוצמה הנמוכה ביותר, ו-255 מייצג את העוצמה הגבוהה ביותר. לדוגמה, המספר השלס הארוך שלפניך מפיק צבע מגנטה בוהק. 5 00 55 00 אף שמותר לך בהחלט לעצב ידנית ערך =6010886, חלונות מגדירה את המאקרו (₪680 המבצע עבורך את העבודה. להלן מתכונתו הכללית. (סטנ2 186 ,מססעם שה ,260 מה1)ממה עעתתס01ש 8 3271חו/ו ומבוא ל-0פו בדוגמה זו, 66, חפסו ו-פטופ חייבים להכיל ערכים בטווח שבון 0 ל-255. לכן, כדר ליצור צבע מגנטה בוהק, השתמש ב-(255 ,0 ,868)255 וכדי ליצור לבן, השתמש ב-(255 ,255 ,868)255. כדי ליצור שחור, השתמש ב- (0 ,0 ,868)0. ליצירת צבעים: אחרים, נסה צירופים שונים של שלושת צבעי היסוד בעוצמות משתנות. לדוגמה, המאקרו (100 ,100 ,868)0 יוצר צבע טורקיו בחיר. תוכל לערוך ניסיונות כדי לקבוע צבעים המתאימים ליישום שלך. 3 כיצד לקבוע את צבע הרקע לתצוגה באמצעות הפונקציה ()56:86/006 באפשרותך לשלוט בהשפעה שתהיה לטקסטט שבמסך על צבע הרקע. לפניך הגדרתה הבללית. ו 15 ,00 00 6090006 46 הפונקציה קובעת מה יקרה לצבע הרקע הנוכחי כאשר טקסט (וסוגים אחרים של פלט). יוצג על המסך. הפרמטר 66 מכיל את הידית להָקָשר ההֶתקן המושפע. הפרמטר 1065 מכיל את הערך הקובע את מצב הרקע, וערך זה חייב להיות אחד משתי פקודות המאקרו: 09005 או דואפהאק5\חד. במקרה של שגיאה, הפונקציה מחזירה את ההגדרה הקודמת, או ערך 0. אס הערך ב-₪009 הוא שַסָאלס, אזי בכל מקרה של פלט טקסט, הרקע ישתנה לצבע הרקע הנוכחי. אם הפרמטר ₪006 מכיל את הערך דאפההק5אףד, אצי צבע הרקע לא ישתנה. במקרה זה, אין שום השפעה לפונקציה ()0₪ו00א5618. לפי ברירת המחדל, מצב. הרקע הוא פְטא0. 4 כיצד לקבל את נתוני הטקסט לתווים אין גודל אחיד. כלומר, בחלונות רוב גופני הטקסט הס יחסיים. לפיכך התו אינו תופס אותו שטח כמו התו /א. כמו כן, גובהם של תווים ואורכם של הקווים היורדים (החלקים הייתלויים" באותיות כמו פ ו-) אינו והה בכל הגופנים. נוסף לכך, ניתן לשנות את גודל המרווח בין הקוויס האופקיים בכל תו. העובדה שמאפיינים אלה (ונוספים) ניתנים לשינוי אינה חשובה במיוחד, אלא שחלונות דורשת ממך, כמתכנת, לנהל ידנית כמעט את כל הפלט שמוצג כטקסט. חלונות מספקת רק תמיכה מוערית לפלט טקסט אל שטח הלקוח בחלון. פונקצייתת הפלט העיקרית היא ()0טד. הפונקציה מסוגלת להציג רק מחרוות טקסט שתחילתה בנקודה מוגדרת. אין היא מסוגלת לפרמט פלט, או לבצע באופן אוטומטי פעולה כמו החזרת שורה או מעבר שורה. ניהול הפלט המיועד לשטח הלקוח של כלי חלון נתון לחלוטין בידך פרק 10: הטיפול בטקסט ‏ 239 לאור העובדה שלכל גופן גודל משלו (והגופנים עשוייים להשתנות תוך כדי ההרצה של התוכנית), חייבת להיות דרך לקבוע את גודל הגופן הנוכחי ומספר תכונות נוספות. שלו. לדוגמה, מהעובדה שאפשר לכתוב טקסט בשורות עוקבות משתמע, שיש דרך לברר את גובה הגופן ואת מספר הפיקטלים המפרידים בין שורה לשורה. פונקציית. זא המשיגה את המידע על הגופן הנוכחי נקראת ()661790160165, הגדרתה היא (פ1ע6ףהפק1 סצתצמווד אמ 1 ,₪6 40| 0001 מססם במקרה וה, הפרמטר 66 היא ידית להתקן הפלט, והערך שהוא מכיל מושג בדרך כלל. באמצעות הפונקציה ()66106, או הפונקציה ()חז3קחו869. מוואדק! הוא מצביע אלל מבנה מסוג 6זאדטוודאפד, שיכיל עם חורתו את נתוני מידות הגופן הנוכחי. לפניך הגדרת מבנה 16ד6ואדאפד. 68 ו /* 5086 68 6מ49שת 60681 */ ;6מ8610מם סא10 /* 1186 שפפם שסמ4 שמ */ ;6ה06פהה: סא10 /* 4680688658 08 גַמַ=8ה10 */ /680686ממ: סא10 /* 8580%6:8מ0 שע0ם4 5866 */ ;8ה:811686ה:6:תדה: אס /* 508 הטפ 40806 */ ;8ה8116841ה:6אשה: סא10 /+ 01862 806686 */ ;מ146א82ת60טתאם סא10 /* 01862 תטמ1אפה */ ;מ828166ה0א8ום סא10 /* 61806 */ 0610062 0ב /* פומס: 9060181 60 88668 מ0186 שמאס */ נהַההתצםטסא: סא10 /* 490666 201568681 */ ;6064ק5ה10101264םה: סא10 /* 490666 1081מטסט */ ;צ600ק5ה10101264מהו1 /* 8086 ה1 ש6םסםטגתם 11586 */ קפממ860ענעה: מצצם /* 086] ה1 8:00565(ם 1886 */ קע8מ60,מח) מצצמ /* 088580666 4658016 */ /85מ6588160מה: מצצם /* פמשס0 א84שצם 50 64פט ע00858056 */ קפממ0א4עמה: מצצם /* 168116 18 6+0-מסה */ /4116נחו מצצם /* 0846811868 11 26+0-מסת */ /11866אשבהטה: מצצם /* שטסאסטפ6ם 11 56%0-מסה */ קמט0אסטםופה: מצצם /+ 1086 0% ץ8011: תה מש6צם */ /* 1460014166 866 8580%6%מ0 */ ק8286%מסה) מצצם ן רוב הערכים שהפונקציה משיגה לא ישמשו אותך בפרק זה, אך שניים מהם חשובים. מאוד, מכיון שהם משמשים לחישוב המרווח האנכי בין שורות הטקסט. ערך זה הכרחי אם אתה מתכוון להוציא פלט בן יותר משורה אחת לחלון. יישומים המבוססים על עמדות דמויות מכונת כתיבה (00050/95), מאפשרים רק גופן אחד בעלל גודל קבוע, לעומת ואת, כאן ייתכנו מספר סוגי גופנים, שונים זה מזה במידותיהם. ובצורתם. וצ 0 321חווו ומבוא ל-ספו כל גופן מגדיר את גובה התווים שלו ואת המרווח הנדרש בין שורות טקסט. כלומר, אי אפשר לדעת מראש את ערך הקואורדינטה האנכית (%) של שורת הטקסט הבאה. על מנת לקבוע היכן היא תתחיל, עליך להפעיל את הפונקציה ()660761/6065, כדר להשיג שני ערכים: גובה התווים והמרווח בין שורות טקסט. ערכים אלה שמורים. בשדות חס ו-6ח/636!החזפואסותז, בהתאמה. חיבור שני הערכים נותן לך את מספר היחידות האנכיות בין שורה לשורה. + העדה: וכור: הערך שמכיל השדה חַח31)9300חזפזאשחחז, הוא למעשה, מספר היחידות האנכיות שיש להשאירן ריקות בין שורת טקסט אחת לבאה אחריה. ערך זה אינו והה לגובה הגופן. אם כך, דרושים לך שני הערכיס כדי שתוכל לחשב היכן תתחיל שורת הטקסט הבאה. להלן תראה יישום של עקרון זה קיימת גירסה משופרת של 816דפויודאפד, ששמה 6זהדטודאפדו!. הגירסה החדשה. וה לישנה, פרט לכך שנוספו לה ארבעה שדות חדשים בסופה. השדות האלה מספקים. תמיכה לגופנים מסוג 6ְץדפטזד (להם תכונות משופרות לשינוי קנה המידה). לפניך השדות החדשים שנוספו ל-10הדפואדאס דווטא /* 0+ 01 שמע: 0102:68ה1 */ ;5מַבנעתפת סתסאם /* םס תב 05 5128 */ ;8ם20!פמפה פאצט /* 361086 5מ0+ */ ;6מ10ש ו /* ַ106א עשפסמצגתם ַבעסטב */ ;מ018%שטתמפה למטרות פרק זה, אין צורך בשדות אלה, אך הם עשויים להביא לך תועלת ביישומים. שתכתוב. רצוי לעיין במדריכי 1 כדי לקבל מידע נוסף. 5 חישוב אורך המחרוזת התווים בגופן הנוכחי אינם בגודל זהה, ולכן אין אפשרות לדעת מהו אורך המחרוזת. ביחידות לוגיות, לפי מספר התווים שבמחרוות. כלומר, התוצאה המוחזרת על ודי הפונקציה ()ח%0/9 חסרת משמעות לניהול הפלט אל חלון, מכיון שהתווים הס ברוחב. משתנה. חלונות 9% מכילה את הפונקציה ()00010032ח660160154:0 שפותרת בעיה זור הגדרתה היא 00ת1ע5256ק1 ת19089 ,06 ססג) 6901832 אם0 0076 מססם (ס2נפמ1 15128 ,188 שתג פרק 10: הטיפול בטקסט ‏ 241 במקרה זה ₪66 היא הידית של התקן הפלט. הַחוטפנפּקו מצביע אל המחרוות שאת. אורכה ברצונך לדעת, והשדה ח6! מכיל את מספר התווים שמהם מורכבת המחרוות. רוחבה וגובהה של המחרוות מוחזרים, ביחידות לוגיות, במבנה 5176, שהמצביע 6ק5פו פונה אליו. מבנה 5126 מוגדר כך 5 1 /* 6תשגסת */ לאחר הפעלת הפונקציה ()0032ו170ח0א667615, יכיל השדה 6% את אורך המחרוזת. מסיבה ואת ניתן להשתמש בערך שמכיל שדה זה לקביעת נקודת ההתחלה של המחרוזת הבאה המיועדת להצגה, אם ברצונך להציג אותה בהמשך לפלט הקודם. 6 כיצד להשיג את נתוני מידות המערכת חלונות מנהלת ומתרגמת באופן אוטומטי קואורדינטות לוגיות לפיקסלים, אך לעיתים. תרצה לדעת מהו גודל התצוגה בפועל, במחשב שבו אתה מריץ את חיישום שלך. כדי להשיג נתונים אלה ומידע נוסף, השתמש בפונקציה ()6615/519₪/6065, שהגדרתה. היא 00558 פתג בהגדרה וו עליך לציין בשדה )גחו איזה ערך ברצונך להשיג. הפונקציה (6015/518₪060650 מסוגלת להשיג עבורך 39 ערכים שונים. הערכים לקואורדינטות. של המסך מוחורים בפיקסלים. בטבלה 10.3 מוצגות פקודות מאקרו עבור כמה מן הערכים הנפוצים ביותר טבלה 19.3: הצגת פקודות מאקרו עבור כמה מן הערכים הנפוצים ביותר. הערך המידה שהוא מחזיר 50% ואס 5% | רוחב שטח הלקוח כשהוא מוגדל. 90150856 5 | גובה שטח הלקוח כשהוא מוגדל. 0160 .5% | רוחב סמל גדול. 160 5% | גובה סמל גדול. 51008 5% | רוחב סמל קטן. 5160 5% | גובה סמל קטן 0050888 5 | רוחב המסך בכללותו 0/5088 59% | גובה המסך בכללותו 2 הכהו ומבוא ל-ספו 7 הדגמה קצרה של פלט טקסט לאחר שלמדת על חלק מפונקציות הטקסט של חלונות א9, בוודאי תמצא תועלת. בהדגמה קצרה של המאפיינים אלה. הקוד השלס של התוכנית 1600 נמצא בתיקיה 006%ד10ֶח6. כל פעם שתבחר את האפשרות פד מהתפריט הראשי, תגרום להצגת מספר שורות טקסט. הטקסט יופוע בשחור על רקע טורקיו. הפלט לדוגמה מופוע בתרשים 10.1 הצגנו פה רק את קטע התוכנית של פונקצית ההודעות. המצבפאי מתתתקוו הפו צהנט ,בהאו כו ) 6םצש8חאו אסאמממתס המטפמת1 ( מגעמק1 מתהתק1 ספמ ספת 0 128 ( פַפ )1 תפ 0 456 /* 8588מ000261 ה66ע0ם 6 */ תסו )15 םה500ע0005 = האגה ; 0/5088 מפ) 2165 66/ה500ע05 0 = צאגה (שפט + סט 0 86 ( ב 100 )0156 [ מל 108 856 /* :אפטמסס 450168 668 */ ;(ממאמ)86:20 = ספת /* 190%מ 00 010% מאשם 866 */ ((0 ,0 ,86500 ,)00500108 /* 186סגףעטם 50 ע010ם בממסעטאסגם 566 */ ;((25 ,135 ,45)פסת ,ססת) 06000105 /* 8ש1עסמה :504 60% */ (6 0 או 814 18 פתס: שמ" ,ע61)86הבצק 8658 חס ".98 פרק 10: הטיפול בטקסט | 243 4 הלבחו ומבוא ל-ספו + צסמצפפם 006 שפמם 0 0550 וצ ה ;( ( הגעגק1 ,מבצבתא ,העט ,תאמ )ס0צפאסבה01פשם )תעטםם, 0 פרק 107 זו פד 6 כאשר נוצר החלון לראשונה, מתקבלת הודעת 685415 ו והמספרים השלמים הגלובליים 80% ו-צאפוז מאותחלים לפי הקואורדינטות של המסך, באמצעות הפונקציה 665/50060/650. ערכים אלה אינס משרתים כל מטרה בתוכנית זו, אך הם ישמשו אותנו בדוגמאות שבהמשך. שים לב שהתוכנית מכריזה על שני משתנים גלובליים, א ו-+, ומאתחלת את שניהם. בערך 0. משתנים אלה יכילו את המיקום הנוכחי שבו יוצג הטקסט בחלון. התוכנית. תעדכן את הערכים השמורים בהם באופן שוטף לאחר כל פעולת פלט. החלק המעניין בתוכנית נמצא ברובו בהודעת סאאאווס6 שו נבחן את ההודעה בפירוט, נתחיל עם משפט דפפד 10% 6356. כל פעם שמתקבלת הודעת דפטד וז1, מושג הָקָשר של התקן. לאחר מכן נקבע צבע הטקסט לשחור, וצבע הרקע נקבע לטורקיו הקשר ההתקן מושג כל פעם שמתקבלת הודעת 1651 %ם1, ולכן יש להנדיר את הצבעים. כל פעם מחדש. כלומר, לא ניתן להגדירם פעם אחת בלבד (למשל, בתחילת התוכנית). לאחר שנקבעו הצבעים, מושגים נתוני המידות של הטקסט. עתה, מתבצע פלט של השורה הראשונה. שים לב שהיא נבנית בעורת הפונקציה ()חוז50, ולאחר מכן נשלחת. בפלט באמצעות הפונקציה ()6006ד. פונקציית 1, ופונקציית ()טסואפד, לא עורכות טקסט. עיצוב הפלט נתון בידיך, כמתכנת, ועליך לבנותו, ולאחר מכן להציגו באמצעות ()90%ד. לאחר שהמחרוות הוצגה, מקודמת קואורדינטת ץ לשורה הבאה על ידי החלת הנוסחה שפיתחת קודם. פרק 10: הטיפול בטקסט ‏ 245 התוכנית ממשיכה ומוציאה כפלט את השורה: "הו זאשח סז חס | פוחדי.. לפנר שתימחק השורה כתוצאה מהקריאה הבאה לפונקציה ()שחוזק5, מחושב אורך המחרוזת באמצעות קריאה לפונקציה ()070/0832ח66/191019. הערך המתקבל משמש. לקידום קואורדינטת א לסוף השורה הקודמת, לפני הדפסת השורה הבאה. שים לב שכאן, קואורדינטת + אינה משתנה. דבר זה גורם להצגת המחרוזת הבאה מייד לאחר המחרוות הקודמת. לפני שהיא ממשיכה, מקדמת התוכנית את + לשורה הבאה, ומאפסת את א, כלומר, ממקמת אותו בקואורדינטה השמאלית הקיצונית. דבר זה גורס להצגת קטע הפלט הבא בתחילת השורה הבאה. לבסוף, מוצגים מימדי המסך כולו וקואורדינטת + מקודמת לשורה הבאה. כל פעם: שאתה בוחר באפשרות 185, מוצג הטקסט במיקום נמוך יותר בחלון, וכך לא נמחק. הטקסט הקודס. כתוצאה מכך, מוצגת כל קבוצת שורות מתחת לקבוצה קודמת. 8 פתרון בעיית הצביעה מחדש (9חו623א) בעורת התוכנית הקודמת הדגמנו כמה מפונקציות הטקסט והמערכת, אך גם נתקלנר שוב בבעיה בסיסית, שנדונה לראשונה בפרק 3. הבעיה היא, שהטקסט הולך לאיבודד כאשר אתה מריץ את התוכנית, מציג טקסט ולאחר מכן מפעיל חלון אחר המסתיר את. החלון הנוכחי. כשתשוב ותחשוף את החלון, תגלה שחלק הטקסט שהוסתר על ודי החלון נעלם. הסייבה לכך היא שכל תוכנית צריכה לצבוע מחדש את החלון שלה כשהיא: מקבלת הודעת דא1 א/, אך התוכנית הקודמת לא עושה זאת. דבר וה מעלה את השאלה הגדולה: באיזה מנגנון יש להשתמש כדי לשחזר תוכן של חלון שהוסתרז כפיי שהוכרנו קודם, קיימות שלוש שיטות בסיסיות: אפשר להפיק מחדש את הפלט אם. הוא מתהווה באמצעות שיטות חישוב כלשהי. שנית, אפשר לשמור עותק מכל אירוע תצוגה, ולהציג לאחר מכן ייהקלטה" שלו. שלישית, תוכל לנחל חלון וירטואלי ולהעתיק את תוכנו אל החלון הממשי כל פעם שתתקבל הודעת 085476 א/ו. השיטה. הרווחת ביותר היא כמובן השלישית, ובה נעסוק בפרק זה. כפי שיתברר לך, חלונותת מספקת תמיכה ניכרת לשיטה זו 9 רעיון החלון הווירטואלי תיאור באופן כללי, כיצד יתבצע פלט באמצעות חלון וירטואלי (שוסטחואו ומנמזועו. תחילה, יווצר הקשר וירטואלי של התקן, אשר יהיה תואם להֶקשר ההֶתקן הממשי לאחר מכן, ייכתב כל הפלט אל הקשר ההתקן הווירטואלי. כל פעס שתתקבל הודעת. דאזאק %, תוכן הקשר ההתקן הווירטואלי (החלון הווירטואלי) יועתק אל הקשר ההתקן הממשי, ויגרום להצגת הפלט בחלון שעל המסך. כך תמיד ישמר רישום של התכולה הנוכחית של החלון. אם אותו חלון יוסתר, ולאחר מכן ישוב וייחשף, תתקבל הודעת דאזק זו ותוכן החלון ישוחזר באופן אוטומטי. 6 321חווו ומבוא ל-ספו 0 פונקציות 1 נוספות כדי ליצור חלון וירטואלי ולהשתמש בו, עליך להשתמש בכמה פונקציות קא. בארבע מהן | כבר עסקנו: (0631900000300/6000, = (5016000060, = ( 0100 וב-()8/8/6. בנוסף, נשתמש בפונקציות ()80ש/800/98ק616306000 ו-()88ק, שיתוארר שוב בקצרה, לרענון. הפונקציה ()ק5ו/68וט30קוח163900) יוצרת מפת-סיביות שתואמת את הקשר ההתקן. שצוין. מפה זו יכולה לשמש כל הקשר התקן השמור בזיכרון (שנוצר באמצעות הפונקציה ()0163090000800606), בתנאי שהוא תואס את הקשר ההתקן שצוין לפניך הגדרתה הכללית. ;ונשת 6מ1 ,1060 פמ1 ,06ת ססמ) קגת1621מ861קמ6000ב6ם פתמפנמ בדוגמה, 6 היא הידית להקשר ההתקן שמפת-הסיביות תתאים לו. מימדי המפה מוגדרים על ידי הערכים בפרמטרים חו0אאו ו-זחפופה. ערכים: אלה נתונים בפיקסלים. הפונקציה מחזירה ידית למפת-הסיביות התואמת, או ערך )0 במקרה של כשל. הפונקציה ()ו? ממלאת שטח מלבני בצבע ובדוגמה של המברשת (050ז8) הנוכחית. מברשת היא עצם המגדיר כיצד ימולא חלון (או אזור כלשהו). מילוי של שטח בעורת. מברשת הוא פעולה המכונה בדרך כלל צביעה (פָוחוק). לפניך הגדרתה הכללית של הפונקציה )פומ 10 18 ,צ שה1 ,3 שת3 ,סאמ ססא)1פ:גע מססם 1 (5585אאם סהסום ,6ת במקרה וה, 66 היא הידית של ההתקן שיש למלא. הקואורדינטות א ו-ץ מגדירות את. הפינה השמאלית-העליונה של השטח שיש למלא. רוחבו וגובהו של השטח מוגדרים. לפי הערכים שמכילים הפרמטרים האשואו ו-ח60ה. הערך המועבר בשדה 0083506 קובע איזה שימוש ייעשה במברשת. הוא חייב להכיל, כערך, אחת מפקודות המאקרו שלהלן 8516 | משמעות 8.0655 | האזור מופיע בשחור (התוכנית מתעלמת מהמברשת) 5פאפדזווו | האזור מופיע בלבן (התוכנית מתעלמת מהמברשת) ץקססדגק | המברשת מועתקת אל האצור דהפ/ונדק | פעולת ה0 בין המברשת לאצורר דהפעוונד5ס | באזור מתבצע היפוך (התוכנית מתעלמת מהמברשת) לכן, אם ברצונך להחיל את המברשת הנוכחית ללא שינוי, בחר בערך +קס6זאק לפרמטר 8516ו0. הפונקציה תחציר ערך לא-אפס אם סיימה בהצלחה, וערך אפס אם לא. כעת, כשידוע לך אילו פונקציות ישמשו אותך, תוכל לראות כיצד ליצור חלון וירטואלי. פרק 10: הטיפול בטקסט ‏ 247 1 יצירת חלון וירטואלי והשימוש בו התחל בחזרה על הנוהל שיושם. כדי ליצור אמצעי פשוט ונוח לשחזור תכולת חלון. לאחר שהתקבלה הודעת זאזה או תנהל התוכנית חלון וירטואלי וכל הפלט ייכתב אל אותו חלון. כל פעם שמתקבלת בקשה לצביעה מחדש, תועתק תכולת החלון. הווירטואלי אל החלון המופיע פיסית על המסך. יישם שיטה זו כעת. יצירת החלון הווירטואלי ראשית, יש ליצור הקשר התקן וירטואלי, אשר תואם את הקשר ההתקן הנוכחי. דבר שיתבצע פעם אחת בלבד, כאשר התוכנית מתחילה לרוץ, בעת שמתקבלת הודעת פדאפה0 %/. אותו הקשר התקן תואם ימשיך להתקיים כל ומן שהתוכנית רצה לפניך הקוד המבצע פונקציה זר פצתפה ו 896 /* 00:8108%68 מ06עספ 066 ד ; (5פה050 %פ) 0059550000%5168 = אאפת ; (פפה0פצ 5%) 55000065168ע0605 = צאבת /* 1086 עצסתסה 16מ1)הקחסם ב סאמח */ (8מ) 0פ66 = ספת 20800 = סחסת ; (צאגת ,אצפה ,ססם) קבח)1881מ1: 01680000 = שגמם ( 5 0 100 ; (8פטתם ְדאא) 0655:00%00[668 = מפטעמת ( 0 01000 (צ289008 ,צאפה (אצגה ,0 ,0 ,סבתסת):נפסגת (ספ ,חומ 685000 1פת 8%פצ הבה נבחן את הקוד הזה מקרוב. ראשית, הפונקציה משיגה את מימדי המסך. נתון זהה ישמש ליצירת מפת-סיביות תואמת. לאחר מכן, מושג הקשר ההתקן הנוכחי הפונקציה = יוצרת | הקשר התקן ‏ תואם בויכרון | בעורת | הפונקציה (108119/6060ח6163160. הידית להקשר ההתקן נשמרת בשדה 66וחפוח, שהוא משתנה גלובלי. נוצרת מפת-סיביות תואמת. כך נוצר מיפוי ביחס של אחד-לאחד בין החלון. הווירטואלי לחלון הפיסי. מימדי מפת-הסיביות הס אלה של גודל המסך חמירבי. דבר המבטיח שמפת-הסיביות תהיה תמיד גדולה די הצורך, לשחוור מלא של החלון ללא: תלות בגודלו (למעשה, ניתן היה להשתמש בערכים נמוכים מעט יותר, הואיל וקווי הגבול של החלון אינס נצבעים מחדש, שיפור פעוט זה נתון בידך, כתרגיל). הידית למפת-הסיביות נשמרת במשתנה הגלובלי זופח. עתה מושגת ממלאי המערכת. מברשת לבנה, והידית שלה נשמרת במשתנה הגלובלי חפטזפה. המברשת מוצבת בהקשר ההתקן שבויכרון, ולאחר מכן הפונקציה ()03088 צובעת את כל החלון 8 32371חוו ומבוא ל-ספו הווירטואלי בעורתה. כך, החלון הווירטואלי יקבל רקע לבן, התואם את הרקע של החלון הפיסי (וכור, הצבעים האלה בשליטתך, הצבעים שאנו משתמשים כאן מקריים). לבסוף, התוכנית משחררת את הקשר ההתקן הפיסי, בעוד שהקשר ההתקן. שבזיכרון ממשיך להתקיים עד שהתוכנית מסתיימת. כיצד להשתמש בחלון הווירטואלי לאחר שהחלון הווירטואלי נוצר, כל הפלט ינותב אליו (המקרה היחיד שבו הפלט מנותב בפועל לחלון הפיסי הוא קבלת הודעת זא81 %). לפניך גירסה מתוקנת של הודעת 1851 אפ1 אשר משתמשת בטכניקת החלון הווירטואלו: | לפפע 10 486 /* 21906 50 010% מאםם 868 */ ;((0 ,0 ,68)0ת ,60תשמ) 00105: 00104 /* מהםעבמפהבע) 50 46סח בממספקאסגם 50% */ ( דוק ונתת )0 /* 5ש1עסמה מאםם 608 */ 2 ,80 0 ;(זמש861מ5.ת5 ,".תפַגת 15מאנק %18 18 פהס? במצ" ,צ8ם)5םת1עסט /* הַת1םפ מטקסטס */ ;((160)855ע0ם , :6ב ,צ , ,סמחשת) ממו0: אש /* 1186 מאשם */ ;0ה116861הת:6םאמח:.ת: + םה10שאמם.ם + ל = צ .1106 מאסת שת: תס 18 18מת" ,צ56) עסספסם /* מת1עםפ פטקזטס */ ;((ע86)ה16ע6ם ,צשם ,צ , ,סבתשת) מו0) אבל /* את1צ50 ג 05 מִסַפַה16 בממקמסס */ נ(85196 ,(168)568ע86 ,852 ,66משה) 632ת01ע6ה0ם :0020 ;(8126.08 ,"סָה10 168תט 818 18 הַת1צזם פטס1טםעם" ,צ5)86םת1עמט /* 50188 פטס1טםצק 01 008 0: בסתבט8ג */ (2128.0% = א ;((160)855ע50 ,ע6ם ,צ ,% ,סמחסת)ממ0) אבצ /* 6ה11 ףא6ם */ ;0ה16881בהת63םאמת5ית: + 6ה10שאתם הט + ץ = צ /* א 86 */ 00 = א (צאפת /אצפת ,"%4 %8 :פת30פתסה81 הששעספ" ,צ5)86םת1עסט ;((865)ת16ע6ם ,צשם ,צ ,% ,סבמשת) ממס)אטל /* 6ה11 מאסת */ ;6ת116881הת02םאמת: ת: + מה10סאתם חן + ץצ = צ ((1 ,טוה ,6ממ)558606ג110בטד ספ פרק 10: הטיפול בטקסט ‏ 249 גירסה זו מנתבת את כל הפלט לשדה 6שוחחז ומפעילה את הפונקציה (פג/ 1 כדי לגרום לעדכון החלון הפוסי. שים לב שגירסה זו גם קובעת את מצב הרקע ומציבה אותו על זא6ה857ד. הדבר גורס להצגת הטקסט בחלון ללא כל שינוי בצבע הרקע. בכל פעם שמתקבלת הודעת דוק ואצ, מועתק תוכן החלון הווירטואלי אל ההתקן הפיסי, באמצעות קטע הקוד הבא: /* 06685 מתנמסס: 8 00888צק */ :ו /* ספ 66 */ ;(טסטעם5םה81ק8 ,בתאג) פה1גקה1פָט = ספת /* ה68ע50 ספתס מְהַגה1 עעסחסח עקסס (מסת */ ;(צ580008 ,0 ,0 ,בשחה (צאגת (אאגת ,0 ,0 ,ססה)1:15ם /* 0 2616886 */ ;(מסטעםפמת1גםם ,בתחמ) מת81פ8הם לצ כפי שאתה רואה, הפונקציה (ו₪09 משמשת כאן להעתקת התמונה ‏ מ- 9066 ל-6פח. וכור, הפרמטר 5%0007% מעתיק את התמונה כמות שהיא, בלא שינוי, מהמקור אל היעד. כל הפלט נשמר ב-6וחפוח, ולכן משפט וה גורם להצגת הפלט. בפועל. אם החלון הוסתר ולאחר מכן נחשף מחדש, תתקבל הודעת דאזהק וזוא, ותכולת החלון תשוחזר באופן אוטומטי. יש דרכים רבות לגשת לשחזור תוכן חלון. השיטה שתוארה ישימה בקשת רחבה של נסיבות, ובדרך כלל פועלת ביעילות. התוכנית שלך מקבלת את הקואורדינטות של האזור שיש לצובעו מחדש, ולכן תוכל לייעל באופן ממשי את השיגרה הקודמת על ידי שחזור בררני של אותו חלק חלון שנהרס (נסה להכניס שיפור וה בעצמך). התוכנית השלמה לחלונות וירטואליים לפניך התוכנית השלמה חועוופטטווט המדגימה את נושא החלונות הווירטואליים. (התוכנית בשלמותה נמצאת בתיקיה : חוצופנזוע10קת0) <. 50184008 1006 <.565180> 166סה1 <מ.56810> 166סה41 "ת. תוא1פטסצ 1" שבטבסה41 /* .0% 058296( 2 60ב2)פהסתסם */ (1832א) 46018680 418 מטתץ 32ונא 15 6ם4001 8 פפנתת 2במנא 15 6ת4001 5 0 32071חו/ו ומבוא ל-ספו 00| (001ם) 26 2באצא 15 | צא 18 43110 א 15 !) (8003) 46 2בותא 15 -25באבא 15 בה51 40 ( (4> ( ( () 6660658108) פתסאס) פצצמס) א 18 54 ((325אדא 15)! ₪6 (עא 15)!) (מססם) ‏ 5פאנא 15 6מ%8691 =סתמ6פה1 מהמעעטם // = קמפחדת מסאתלפאצה ( שאם1 *5פהתססוחו 97אא00 | 95ה8018%0901ה מססם ;"ממהעאו" = בהפאסקתפפמ1 תפפפסק1 "פרק 10.11 ה1א81ט10ט " 1059 /* פחַת1עספ ממקפטס 188סה */ ;[255] 552 צבתם /* 10680108 מטפסמס מהמעצמס */ 7-0 ,0-א פתג /* פהס!פתסת1 ת50266 */ ;צאבה |אאמה שג פסוותלפאונ ,ססהבםפהנת מסותצפַנה ) תנבעתגח צהפנמנעת פב (שסתפ4תסת 18% ,סהנמנתסק1 הצסדק1,ססהגופה1טםצקת 4 6 ו | פא 55 סטוה .01888 אסת1ש מ610ב116קעם הנח סמש מַבממשָבה // 7 2 קמתתספתט 05 | אתתסםהא 05 = 8 /* מס1פשחנ? אסשה1ש */ ק0סצקטהא (ססתספותו) ב 60015 = געסאמבתחמם סט /* פסתפספת1 5315 ס: שנבהגת /*‏ ;ססהה6פמזת תס ;( שתמאקקתעפק1 ,ססהבמפמנת )10881000 0 /* 18ע50 ה0) */ הת 100 10 0 /* 1ע80 צספפגם *] ; (ב+אססווצוו ה0נסס) (מפטאפט) = במגספף%ס8מעמת סט קסהגומקת2פמ1 = במגחטה26פם1 סט /* שהפה 1855ם אסשת */ קסהפאממת2פ1 = שהב201258%פם1 סט ( 95אצא 18 | 11 ( ( אפ )8601466501095! | 15 פמתס )תפטסע ] ( ( ₪66 )61906901488ה! ) 18 בפנם ( מפתתת )תסל פרק 10: הטיפול בטקסט ‏ 251 2 ללחו ומבוא ל-ספו ב ,אס 5 אס תק 1<-סשק1 = שחבאנוהו520ק1, אססר ;52018550886ק1<-6ק1 = 5201458(406ק1 אמט .95 8088ה1 10% פממסה1ם 54068 // 7 . - (59ה:סטוח)) 512005 = 005126 אסס ;("זתעם" ,פסהבםפחדה. אפסא)ת1086160 = מפתססצת אסס |;/( ₪068 )860186650185988 מפגטם> 15 תב 95 פשסמה1א עם 081158 18 מס1פסתםת גמד */ /*. הטפטף מטםפפשת סת5 הסע: 8068פמת הבעגקא אתתתפה ,ספפן פמצט ,המאת כומוט | 00פפבחח אסהמננתס ענטפטתנ ( הבטגפ1 עתתתק1 ספ ספ הכ דסטהדפעוותק ו 190 :קצב /* שנשהגת 460108 1מטטעגט שמ6 6ע0:ם */ סבתפת ספא 21261 /* מפתסגם [הטספנט שמם 028 */ ;סגמת קמותנמא 5:2:1 /* ש1בתפת תפטעם סנץ 55020 */ קמפועמת מפטתמא 212610 ( פא )0160 0 + פפתמתס 0 896 /* 00026108588 ה06ע0ם 65 */ ( ו )0605 = הנמת תפצ מ5) 2105 066ה506ע0005 = לאמ /* שאַג10 ענסתפה 18כ1זמקהסם ב באפה */ (8ווה) ₪60 = ספ 0 9600 (צאגת ,אצפח ,ססת) 80ה0261216810ה04:600עס = שגפה 1 )016050608 ; (8טתה מעעאא) 0%5600%00[606ם (אפטהםא) = הפטעפה 5 (מפגם ,600 ) 1505003665 (צ239008 ,צאפה (אאה ,0 ,0 ,סבתסת):1פוגת ( 0 100 צ פרק 10: הטיפול בטקסט ‏ 253 4 הלבחו ומבוא ל-ספו פרק 10: הטיפול בטקסט ‏ 255 856 00 00 (מצפא) ם: )11 (מצפא) ם: [ [ 60110 ; (מטה?) עס [ נ8%פצם כשתריץ את התוכנית, תיווכח בשיפור מיידי. ראשית, כל פעם שתסתיר ולאחר מכן תשוב ותחשוף חלון מסווים, תכולתו תשוחזר. 2 כיצד לשנות גופנים כפו שבוודאי ידוע לך, אחת המטרות העיקריות של חלונות. 9% היא לאפשר שליטה מלאה על ממשק המשתמש. לפיכך היא מכילה קשת רחבה ומגוונת של מאפיונים. מבוססי-טקסט, לשימושך. אחד המאפיינים רבי העוצמה ביותר הוא אוסף הגופנים (פוחס?). כאשר תשתמש בחלונות, תוכל לבחור מכמה גופני מערכת. תוכל גם לוצור גופנים אישיים משלך. בסעיפים הבאיים נעסוק בנושאים אלה. הגופנים המובנים במערכת גופני המערכת (פוחס= ח81) הס עצמים המובנים במערכת, שניתן לבחור בהם באמצעות הפונקציה ()665/00609(60. בעת כתיבת ספר זה, חלונות תומכת בשבעה גופנים מובניס. פקודות המאקרו הקשורות בגופניס אלח מובאות לפניך שם המאקרו תיאור הגופן זאסי ספאד אא | גופן בעל מרווחים קבועים. דוס האש זפאא | גופן בעל מרווחים משתנים. דוס דוטאפם מסנעפם | גופן ברירת המחדל של ההתקן זאסי 601 דפס | זחסו 601 זוטמוסם דאס פאז 0 | הו ואס דאס 8%%ד5%5 | גופן המערכת של חלונות אפ. דוס ספאןז אשד515 | גופן המערכת של גרסאות קודמות של חלונות. 6 32071חו/ו ומבוא ל-0פו גופני המערכת הס גופני תווים המשמשים את חלונות לכיתוב בתפריטים ובתיבות. דו-שיח. גרסאות קודמות של חלונות השתמשו בגופן מערכת בעל מרווחים קבועים בין התווים חס) חסאוק 9א=), אבל בגרסאות המתקדמות יותר, מ-3.6 5סחואו ואיילך, גופן המערכת הוא בעל מרווחים משתנים. הבחירה והשימוש בגופן מובנה פשוטים מאוד. התוכנית שלך תצטרך ליצור ידית מסוגג זאספוז לגופן. ‏ לאחר מכן עליה לטעון את הגופן הרצוי בעורת הפונקציה (604ן6615/00%00, המחזירה ידית לנופן. כדי לעבור לגופן הנבחר, בחר אותו על ידי הפונקציה ()5960:00[60, עם הגופן החדש כפרמטר. הפונקציה תחזיר ידית לגופן הקודם (שאולי תרצה לשמור, ולחזור אליו לאחר סיום השימוש בגופן שנבחר). התוכנית 5חס₪ שלפניך מדגימה את שינוי הגופנים. היא מוסיפה לתפריט אפשרות. חדשה - ח0?. כל פעם שתבחר באפשרות זו, ייבחר לסירוגין (במתכונת של מפסק) גופן ברירת המחדל של המערכת, או גופן 51 המשתנה. 514008 106 <מ. 565189> 014066 <56810.8> 66טבסה1) "ת. פמחסת" 66ט1סה41 /* .אס 0555896 ב 50ב2ופהסחסם */ (132א) 46818680 515 פעתץ 132 15 4001106 8 מפנתע 0132 15 6ם4011+ ב (80000000 0 > () 0090765810) (00ם) 56 32אצא: 6 (צא 15) !) (8001) / 86 2באצא : ((4> ( (() 0655468 05) הסוס 1) מס ) 6 (25באצא 15)| 66 (מא 15)!) (מ00ם) = 5פאצא 15 שה%46%1 עא 15 400116 5ננו 18 401108 ו 5 8066ספה) ממסעפטם //‏ ;פפמדת מסתתתפו |( סאם1 *5פהתסטותן 7פאא00 | 0186020195 מססם ;"ספתע9!" = שהפאסקתפפק1 אע5ל0ק1 "פרק 10.12 פ6מסע * 8 /* פחַת1עשפ מטקטטס 188סה */ ;[255] 862 צבתם /* 10680108 מטקטוס מהמעצמ */ 7-0 ,0-א פהג /* פהס!פחסת01 ה50286 */ ;לצבה ,לאה שג פסוותדפאונ ,ססהבםפהנת מסותצפנה ) תןבעתוח צתפנמנעת פב (שסמפ4תסה 186 ,סה1מנתסק1 הלפדק1 ,ססת68פתנטםעקת פרק 10: הטיפול בטקסט ‏ 257 8 32371חאו ומבוא ל-0פו פרק 10: הטיפול בטקסט ‏ 259 200 15 תג 95 פשסבה1א ע 081158 18 מסנססתםת גמד */ /*. פטפמף 86פפשה סת5 מסע: 58008פשת ,הבפגתא אתתתפה ,ספמ עמצט ,4מות סומוה ) 00פפבחה אסהמננתס נטפמתנ ( הבטגפ1 עתחתק1 ספ הכ לס טהלפעוותק קט סעתלמותאמל 18610 1960 :קנ / = ה6160פפהס? 262610 /* שנשהגת 460166 1מטסעגט שמ5 6ע0:ם */ קסבתפת ססא 212610 /* מפתסום [הטספנט שמ: 026םם */ ;שגמת קמותזמא 2:2610 /* ש1בהפת תפטעם סז 55026 */ קמפועמת אפטתמא 5:2610 /* 4168הגת מת0 סט 50090 */ ;פאשתם ,185סמ תאספא 262610 ( 8 | 1 [ /* 8588מ000281 ה08ע0ם 665 */ פפתמתס וו 856 50 56) 0050080021 = אצמת (5098 09 58) 105 066ה0 :065578 = צאבה /* 400168 שסגמ1 ץנסהשה 16מ1מהקחסם ב הלמח */ () 0650 = ספת ; (ספגן) 600 00008151 02685 = 86תסה (צאמה (אאגת ,ספמ) 58 1681מ024550080851 = מגה 2( ,)606 501606001 ; (מפטהם מעדאזז) 60 [06%5500%00 (מפטהפה) = מפטפטת ; (מפגעפת ,60תשם) 0105001805 עפססצת ,צאגת |אאגת ,0 ,0 ,66תפה)+נמסגס /* %ה50 אשת 60% *] ; (פווספ. הש 1פואה) 60% 0666000 (פאסטמ) = פששמת גנט ופ קת32ח//ו ומבוא ל-0פו פרק 10: הטיפול בטקסט ‏ 261 2 נסת2בח/ו ומבוא ל-ספו ,טנסה סאאא )טטספת אסאמנוהס ענטפטב פאצט ב בפוף עתהתקוו (198580 שתפתס ב (88806) 50166 [ 0 50 ; (פטתע) מצמסצ 00 0 886 (פטבפא)פת0א10 | 46 הק הסוס | 1 1% פאס (פטאע ,בסה מַ10גסאתם ; (מטחע) תפשש עפ ; (8188ת) מעג00, התוכנית השלמה נמצאת בתיקיה 5וחסת10קחס., הב ] ב ב 00ח פ01סק 16 45 וחסו סז , סו פאחט 156 סו 0108 פנוסושס1י -סח!) זאסח סת1 חס סו סוחד 3 ו פיט טאי 111 טסופ 8 שח ו וה 1 תרשים 10.2: פלט לדוגמה מהתוכנית חס?. כיצד ליצור גופנים אישיים אף שהדבר אולי נראה מסובך, למעשה מאוד פשוט ליצור גופן אישי. יצירת גופניםם אישיים מעניקה לך שני יתרונות בולטים. ראשית, גופן אישי מעניק ליושום שלך מראה ייחודי שיבדיל אותו מכל שאר היישומים. שנית, יצירת גופן מאפשרת לך לשלוט בדיוק רב במה שקורה כאשר הטקסט יוצא כפלט. לפני שתתחיל, חשוב שתבין. שאינך עומד להגדיר גופן חדש, אלא להתאים גופן קיים כך שיענה בדיוק על דרישותיך (כלומר, אינך צריך להגדיר את הצורה של כל תו בגופן שאתה יוצר). פרק 10: הטיפול בטקסט ‏ 263 כדי להגדיר גופן משלך, השתמש בפונקציה (חס0163)05, שהגדרתה הכללית היא. 8ת6א0300פם 16 ,1060 סה1 ,6מ10שא מה1) פהססםםםסעם צאסעם ,1641 פמסאע ,761955 שה ,מ64610מ16ע0 ממ4 ,6שמ1867ע56 ספסאם ,6מ11מ86מט סאסום ,256015108 מאסאם ,0042566 סאסמם ,ע115גמס סאסוום ,מ601910עקםננס סהסום (פממנומסת הצפסס1 ,21660 סהסום גובה הגופן מועבר בפרמטר זַחטפז, ורוחבו בפרמטר חזטו/. אם ח01/ מכיל אפס, חלונות תבחר ערך מתאים המבוסס על היחס גובה/רוחב (8360 :5000ה) הנוכחי הערכים ב-וחטשּ! וב-חזשוא נקובים ביחידות לוגיות. ניתן להוציא טקסט כפלט אל החלון בכל זווית רצויה. הזווית שבה יוצג הטקסט נקבעת על ידי הפרמטר זחפוח9ק6503. עבור טקסט אופקי רגיל, יכיל הפרמטר הזה ערך. ). אם לא, יצוין בפרמטר זה ערך במעלות שבו יש לסובב את הטקסט על צירו. ערך זה. רשום ביחידות של עשירית המעלה, ולכן, לדוגמה, הערך 900 יגרום לסיבוב הטקסט 0 מעלות על צירו, כך שהפלט יחיה אנכיי ניתן לקבוע את הזווית של כל תו בנפרד בעורת הפרמטר חסווגוחפוזס. גם כאן יחידות. המידה הן עשיריות המעלה, והן משמשות לציון הזווית של כל תו ביחס לקו האופקי. הפרמטר וחטשו קובע את השקלול המועדף ו 6166זק) של הגופן בטווח שביך 0 ל-1000. ערך 0 מייצג את שקלול ברירת המחדל. כדי להגדיר שקלול רגיל, השתמש. בערך 400. להדגשת תווים, השתמש בערך 700. תוכל להשתמש גם בפקודות המאקרו המופיעות ברשימה הבאה לציון שקלול הגופ סט א אנד א 1 וה וא א ו 0 שא דא א צאפו א כדי ליצור גופן נטוי, הקצה לפרמטר !ז1 ערך לא-אפס (בגופן רגיל, יכיל פרמטר זה ערך אפס). כדי ליצור גופן מודגש בקו תחתי, קבע לפרמטר פחוו66חט ערך לא-אפס. כדי לקבל גופן ללא קו תחתי, קבע לפרמטר זה ערך אפס. ליצירת גופן "מחוק", קבע לפרמטר זח50166 ערך לא-אפס. ליצירת גופן ללא קו מחיקה, קבע ערך אפס. הפרמטר :63196 קובע איזו סדרת תווים רצויה לך. בדוגמה הבאה נשתמש בסדרת. דספאא'0 1פ%ה. הפרמטר חספססוק מציין את דרגת הדיוק המועדפת של הקלט, כלומר אייזו מידה של תאזימות צריכה להתקיים בין מאפייני הפלט בפועל לבין מאפיונר הגופן שביקשת. בדוגמה המופיעה בפרק נשתמש ב- 7856 :05 דטס. הפרמטר 4 521חווו ומבוא ל-ספו 0פספזקטו1ס. מגדיר את מידת הדיוק של הגזירה. המונח נתוני גזירה (פַופפוסי 90500זק) מתייחס לאופן שבו כל תו החורג מגבולות הגזירה אמור יילהיקטם". הערך. המשמש אותנו בדוגמה הבאה הוא 88015 ד)0אפ0 611 (תוכל למצוא במדריך ₪01 שלך ערכים תקפיס אחרים לפרמטריס 0811566ס, חס0פ60ז ו-חסופוססזטקונס). הפרמטר /ףווגט קובע את דרגת ההתאמה בין הגופן הלוגי לבין הגופנים הפוסיים. שהתוכנית מספקת בפועל להתקן הפלט שהוגדר. הפרמטר יכול להכיל אחד משלושה. ערכים צדנואטס דוטאפפס +דנואטס. דואחס זאטס *חסאק הפרמטר חטזוה, פסיעה, מגדיר את המרווח בין התווים ואת המשפחה שאליה משתייך. הנופן שנבחר. גם פרמטר זה יכול להכון אחד משלושה ערכים. סוטאטס דל ספאה דוק 5 ונה קיימות שש משפחות אפשריות של גופנים. 0 5 ססות 5 אוסה ‏ שא ב כדי לייצר ערך עבור הפרמטר חשאל, עליך להפעיל חס על אחד מערכי החשוק ואחד הערכים של משפחת גופנים. מצביע לשם הגופן מועבר באמצעות פוח3)זחס5. מותרים שמות באורך של עד 32 תווים. הגופן שאתה מגדיר חייב לחיות מותקן במערכת שלך. הפונקציה ()9500ו6:63 מחצירה ידית לגופן אס סיימה בהצלחה, וערך ₪01 אם לא. % הערה: 4 חשוב להבין שמבחינה טכנית, הפונקציה ()/6316700ז6 אונה יוצרת. גופן חדש. היא רק מתאימה אותו במידת האפשר, על סמך המידע. שאתה מספק למערכת, לגופנים הפיסיים הממשיים שיש במערכת. חובה למחוק את הגופנים שנוצרו בעזרת הפונקציה ()8ח016319:0 לפני סיום התוכנית. כדי למחוק גופן, הפעל את הפונקציה ()0661809(6. לפניך תוכנית +ח050פט6 המדגימה שני גופנים אישיים. הראשון מבוסס על גופן אסא זסוזנוסס, השני על הגופן 6010 /חנטחפ6. כל פעם שתבחר את הפריט זחס* פס . מתוך התפריט, ייבחר ויוצג גופן חדש. פרק 10: הטיפול בטקסט ‏ 265 התוכנית משתמשת בקובץ משאבים כמו התוכנית בסעיף הקודם. 108 01008 <. 02186פ> 1006סה1 <מ.50810> בבסה "ה טמסת6פנס" שמטבסה1 /* .אס 055896 50ב2ופהסתסם */ (132א) 46818680 415 מטתץ 32נון 15 שת4011+ 8 מפנתת 32אנון 15 446116 0 (0%80000000 > ()ת10פעשע600) (מססם) 26 32אצ7 פד עא 15 40:16 6 (צא 15)!) (8001)/ 68 32אצא 18 325אנא 15 שה40661 ( (4> () 06006+5408) הסוס 1) עס ) 2 15 56 ((25באנא 18)! 66 (צא 18)!) (ססם) ‏ 95אצא 15 שה40661 =סת68פה1 מהמעעמס // = מפחדת מסנתלפאצת ( סאם1 *55התסטותן 87אא0 | 186020195 מססם "ממהעפו" = בהפאסקתפפמ1 תפפסק1 "פרק 10.12 68מספ " ו /* פחַת1עפ מטקטטס 188סה */ ;[255] 862 צבתם /* 10080108 מטפטמס מהמעפמם */ 02-? ,0- פתג /* פהס!פהסת01 ת50266 */ ;צאבת ,לאה פתג פסאותלפאנ ,ססהבםפהנת מסותצפותא ) הןבעתוח צתפנמנעת 48 (שסמפמסה 18% ,שה1תמתסק1 ת10757 (ססתם:פהנטשצקה 4 6 ומא | פוא 55 נספוה? .01888 אס10א מ4610ם11קקב מגגת סתף שששפ1ממת // 0 ו ב ;וותפספתט 05 | אתתסטאא 05 = 8 /* מס1פשחנ? 6סשה1ש */ קססצקטהא (ססתספותו) ב ₪ 01 6 0 6 32071חו/ו ומבוא ל-ספו פרק 10: הטיפול בטקסט ‏ 267 ( 16 *55המסטותו עפוא00 | 1866581895 מססם [ סו 558% נססוה? = ו ;00עפ6מאת1ק1<-סא1 = שסעקנהאהזק1 אססט 8 0001<-סאק1 = בעסאמ. 0001 אססט 10-00 = בעםאמבמאטם אססט /6סה2מפהדת<-0אק1 = | ססהבספחזת אססט 1 = סו מב 100 אס 40מפמ<-6שק1 = 4מ5040%9500טת, אססה !2 5ק1<-סשק1 = שהבאטהם/52ק1 אסס /82018590806ק1<-86ק1 = 52012580206ק1 אססא .95 88ס6מ1ן עס? פממסה1ם 4068 // 0-5 : - (55ה:סטוח)) 812005 = 005126 אסס ("םצתעם" ,8סה8םפחדה. אפסא)ה1086100 = מפתס0סצת אסס |( 86068 )8ם8601566501859 תפגטם> 15 תג 95 פמסבה1א ע 681188 18 מס1ססתגת גמד */ /* פטפנף 586פשה סה5 מסע? 58008פשת ,הבפגתא אתתתקה ,ספמו עמצט (במות סמוע | 200פבמח אסהמננתס ענטפמתנ ( הבפגפ1 עתתתקב ספמ ספת כ ד טתדפעוונתק קת) סתתלמותאמל 562610 190 ד 086401 68616 /* שנשהת 460108 [מטטעגט שמ6 6ע0:ם */ קסבתסת ספא 5:881 /* מפתפגם [הטספנט שמף בע60פ */ ;שגמם קממתנמא 262610 /* שנבתפת תפטעם שנץ 55026 */ קמפועמת אפטתמא 562610 [2פחת ,1פאשתם ,185סה פאספא 52616 /* 158התגת שמס+ שמף בע00ם */ ;"5015ת" = [40]שתמה? עמהם 5:8:10 /* שה0) 05 מחמח */ 8 32071ח/ו ומבוא ל-ספו 1 8 ( 0 פה )ו 856 /* 00028108558 ת08ע0ב 66 */ ( ו 5 5 68 יי מ /* 804108 שסגה1 שעסתסה 110 םבקמסם ג בצמת */ (8 ווה ) ₪60 = ספ 0 2680000 = ב חס (צאגת ,אצבה ,ססמ) 80ה0861016810ה2045000ס = שגפמ ( 0 160006 ; (מפטתם מעעאא) %560000[606סם (אפטהםא) = הפטעפה ( ג 0 01600608 (289008% ,צאפה ,הצפה ,0 ,0 ,סבתשת)16פוגק /* 0% אשת ב ב%מסעם */ ,אפסו את ,0 ,0 ,0 ,5)14מס0ם25סעם = 081שהה ,שספתתמס צפאה ,0 ,0 00 פדספתס שמטתפפס טס ,פדסמפפ פמטהפמם צנ ,צדנמתטס הנטמפמם ,מהתסצאסם סע | אסצצק ענטמעמם (" ו טס" 5001900 את ,0 ,0 ,0 ,20)%ת625000עס = 682שחה ,פספתהס צפאה ,0 ,0 ,0 (פצסמתס פנטתפפם 00 ,ספ פעטתפמם פצנס ,צנמ תטס המטתפמם ,מהתסצאסם פע | אסצנק ענטמפמם ו 0 1500 וצ :0 0 856 ( גפ )הס )160 ו + צפמץ 18% 856 הקפה +: 0+ ₪086 8תב 180% 50 00108 מאם: 56% */ 0,000 ,90500 ,666 0610010 תונותע ,40 0ב פרק 10: הטיפול בטקסט ‏ 269 0 323חואו ומבוא ל-ספו פרק 10: הטיפול בטקסט ‏ 271 ,סנפ מאאא ) ווסעת אסממונתס ענטפפתת ה וט הבטבפאו החתפו (198580 שתפתס ב (85808שת) 160 [ 6 ; (פטתת) מצ6? 00 0 886 (מ8פמפא) מפסא10 | 46 ( פא הסוס | | 80110 ; (מטחע) מעגטם, ו פע פלט לדוגמה מופיע בתרשים 10.3 [] פרק 10.12 חס ו סטפום מס ו .חח ואל 16 15 1ח10 ה | חַחס! פ!וחו 156 85 53 פטסושפז .6חו! הסח 106 חס 15 וח | 16010 501600 שת 15טאצע 14 15 ממ0 שמ 106 פסבמט 132 15 שמבצס: פטטצקם:2 -1426 סלפת פס מס 15 פבמה 0 800 :פמסצכתסמ01 5080 .שמ 8[סטכוקן 20 8 +מס! 6מ1/ שַגס[ 65ווו 219 15 ₪ַ56110 פמסנט0? .1126 +כסגו 116+ מס 15 שוג ד 0 800 :11010610118) ננססנסם תרשים 10.3: פלט לדוגמה מהתוכנית המפיקה גופנים אישיים. 2 זקתכבחווו ומבוא ל-ספו 3 הפונקציה 65ו1וַח3-]+חס-]וההטח 5וסחוו מאגדת גופנים למשפחות, בהתבסס על סדרת מאפיינים משותפים לכל גופן במשפחה. באפשרות התוכניות להשתמש בפונקציה 65!וחג'וחס?חזטחם כדי לוהות. במשפחת גופנים מוגדרת את הגופניס הזמיניס בהתקן מוגדר. בדרך כלל משתמשים. בפונקציה 5ס!ווחגטחסזוחטח= כדי לקבוע באיזה גופנים באפשרותך להשתמש בהתקן מוגדר, וגם כדי להשיג מצביע למבנה זא06%0) שהתוכנית יכולה להשתמש בו יחד עם. הפונקציה 5סוווחיוחס"וחטח כדי ליצור את הגופן עבור ההתקן המוגדר. את הפונקציה 65!וחמחט*וחטחם כותבים כמו בהגדרה שלהלן. ) 31108תבת 6 תספמוהם 45 0 400168 60| מנחמת // ,6 ספ 559108 שמשת-8011] ס צשטמנסק //‏ ,צ1במהטפפק1 אעפצסק1 > מספומצ תכ 6 0תפוענאנםפאוס: מ610סחט? 08110806 50 צססתצסם // 1168מקטפ-11086100מקה 01 685שמג // 198588 מתתתק1 0 טבלה 10.1 מפרטת את הפרמטרים שהפונקציה 65ווחג*)חס"וחטחש מקבלת. טבלה 10.1: הפרמטרים שהפונקציה 5 ?חס וחטחש מקבלת. פרמטר תיאור 6 | מזהה את הקשר ההתקן. ץוווח3פקפקן | מצביע למחרוות המסתיימת ב-01, אשר מגדירה את. שם המשפחה של הגופן המבוקש. אאם /!52931ק! שווה. ל-+0א, הפונקציה 65!וחפלשחס<"הוטחם בוחרת באקראי וממספרת גופן אחד בכל משפחה זמינה. הפיחס 'וחטחסק! | מגדיר את כתובת המופע של פרוצדורת המשוב שמוגדרת. על ידי היישום. למידע אודות פונקציית המשוב 0860ו631. חסס6חטת), התבונן בפונקציה 6זקוחב)חס=וחטהם. חובּזק! | מצביע לנתונים המסופקים על ידי היישום. הפונקציה מעבירה את הנתונים לפונקציית המשוב יחד עם המידע אודות הגופן כאשר הפונקציה 65ווחזג*זחסוחטח= מצליחה, הערך המוחזר הוא הערך האחרון שהחזירה פונקציית המשוב. ואת אומרת שהמשמעות נקבעת על פי המימוש המסוים. שלו. הפונקציה 65פ'וחס"חחטחם מקבלת את שמות הסגנונות שקשורים עם גופן 6עדפטזד. עם 65!ווחביטחסתוחנות, באפשרותך לקבל מידע על סגנונות גופן לא רגילים. (לדוגמה, מיתאר, שחוטטס). הפונקציה 65!ווחפ'וחס"חוטחט מקבלת מידע אודות כל גופך בעל שם של צורת גופן (569/פטץ!) שמוגדר על ידי ץ!וחזג"קפטו, ומוסרת אותו לפונקציה. פרק 10: הטיפול בטקסט | 273 אשר 6סזלחוג>וחס?וחטחסק! מצביעה עליה. פונקציית המשוב המוגדרת על ידי היישום. יכולה לעבד את מידע הגופן כנדרש. הספירה נמשכת, עד שאין גופנים נוספים, או עד שפונקציית המשוב מחזירה אפס. את פונקציית המשוב כותבים כמו בהגדרה שלהלן | 6סמשתבת)הספתטוהם אסתםנתס 46 שפטססממ55 פאסתםסמעטום הג %0 עסמהנסם // ,1%שם1 *צאסתסס םקות פעגססמםץ5 10תממותאמקומת 50 עשטהגסם // (משתק1 *סצתצממקאממאפות המצם חס? שמ // ,פמעטהסעת פה4 34 60ה4601-ה1168510מקת // מבצמק1 תהק לו כמו שאפשר לראות, פונקציית חמשוב מקבלת ארבעה פרמטרים. הראשון הוא מצביע למבנה מסוג דא6%01650. המבנה דז0111.0050/₪ מגדיר את מאפייני הגופן, השם. המלא של הגופן וסגנון הגופ המבנה 1.06:0%7טא8 מוגדר ב- 1ק 32חו/ו כפי שרואים להלן ) פוסק: 65 61910 | שא0ט106 מנטע 18]שתפאנננת,1ם | אאסם ;[28זפמסתע 5ם]16ע:5158 תתאסם ; [128 מס וס סס וטו [ טבלה 10.2 מפרטת את איברי המבנה דוו06%0 ואטאט. טבלה 10.2: איברי המבנה ז06=00.וטאם. פרמטר תיאור 61.00 | מתייחס למבנה מסוג זא106:0 אשר מגדיר את מאפייני הגופ סוחמזוו=!61 | מגדיר שם ייחודי לגופן. לדוגמה, "5976 5505 11316 8006 6קד סט ד תקוח זחס הי 6566 | מגדיר את סגנון הגופן, כמו לדוגמה, י3/6ז1 80/6". המבנה. שנהדפוודאפד מכיל מידע בסיסי אודות גופן פיוי. כל הגדלים. נתונים ביחידות לוגיות; כלומר, הס תלויים במצב המימוי הנוכחי של תצוגת ההקשר. שלושת הפרמטרים הנותרים מגדירים מידע ספדסטזד ייחודי ואת טוג הגופן (מתוך פקצדהאס: מסז/סם, פק/ידדאס? הפדפתה, ‏ או פקודדאס מקצדפטאד, ‏ או צירוף כלשהו של שלושת הערכים). 4 זקא2פחווו ומבוא ל-ספו כדי להבין יותר טוב את פעולת הפונקציה 65!ווחגאוחספוחטחם, התבונן בתוכניתת 55!/א. וחוחש, שבתקליטור המצורף לספר זה (בתיקיה 5וחסזו/ה = חווח=10קהום). התוכנית משתמשת בפונקציה פפוווחפּ*וחספוחטח= כדי למלא תיבת רשימה (80% 008 הכוללת את שמות הגופנים הזמינים מסוג פמְעדטד. כאשר המשתמש בוחר באפשרות. פד מהתפריט, התוכנית מציגה דוגמה למחרוזת טקסט בפורמט הגופן שנבחר כרגע. הקוד המעשי של התוכנית 5סחסף!|8 וחשחם נמצא בפונקציות 06ז60חא), חס וחטחם, ו-10706ח6=0חו. הפל לדוגמה מופיע בתרשים ‏ 10.4 בדה ב 0% 1 סוקופ תרשים 10.6: פלט לדוגמה מהתוכנית 15חס*!ה . הוטחפ. 4 הצגת גופנים רבים עם ו למדת שתוכניות יכולות להשתמש בפונקציה 0163900 כדי ליצור גופנים. עם זאת, מספר הפרמטרים בקריאה אחת ל-)ח9:0ו0163 מספיק בכדי להפוך את השימוש ב-וח070310"0. למתיש. חלופה טובה יותר היא הפונקציה 96זו6319:00100ז0, אשר יוצרת גופן לוגי שיש לו את כל המאפיינים שמוגדרים במבנה מסוים. כתוצאה, באפשרותך לבחור את הגופן כגופן הנוכחי בהקשר התקן כלשהו, כמו בדוגמה זו ; (1015* עאוסת106 עפווסס) 2815608 6הסת5)הסעם עאספ פרק 10: הטיפול בטקסט | 275 הפרמטר !/פ! מצביע אל מבנה מסוג א106%0 אשר מגדיר מאפיונים של גופן לוגי, המבנה 106:0%7 מגדיר את המאפיינים של הגופן, כמו שרואים להלן. | 5891069085 שסטפופ 668קעם 0 0 0 110 אס ו 7 פפצם 190 מפצם 195010 מפצם 19085 מפצם 1100%0260181080 מפצם /6618100:קם15011 מפצם הצצ פהתה0 )1101 מפצם 01 [51558 סע ש1] 086 0 ן כאשר מתבוננים מקרוב במבנה 10600%7, אפשר לראות שאיבריו מתאימים לפרמטרים של הפונקציה 600ו03ו6. למעשה, האיברים מקבלים ערכים כמו הפרמטרים של הפונקציה זח016319%0, אם הפונקציה 1106066ח0ז0606 מצליחה, הערך המוחור הוא ידית לגופן לוגי; אם. הפונקציה 070300:00006760 נכשלת, הערך המוחור הוא !א הפונקציה 07630001 יוצרת. גופן לוגי עם: המאפיינים שמוגדרים במבנה זא06:0+ כאשר בוחרים את הגופן עם הפונקציה 566₪09(6, ממפה הגופנים של ממשק ההתקן הגרפי מנסה להתאים את הגופן הלוגי עם גופן פיסי קיים. אס ממשק ההתקן הגרפי אינו יכול למצוא התאמה מדויקת, הוא מספק חלופה אשר מאפייניה תואמים. את המאפיינים הדרושים ככל האפשר. כאשר אין צורך יותר בגופן, צריך לקרוא לפונקציה 066160066 כדי למחוק אותו. התוכנית 5חס!/, וחטחש שהוצגה בסעיף הקודם משתמשת בפונקציה במקוס הקריאה 003190065 עס ארבע עשר הפרמטרים, התוכנית קוראת ל-010600601ח016316*0 עם פרמטר אחד בלבד, כפי שמוצג להלן (816) 056866908618618666 = מתסעם וכור, התמיכה של חלונות לגופנים ולטקסט רחבה למדי. בוודאי תרצה לחקור תחום. זה בעצמך. בפרק הבא נמשיך ונבדוק את האפשרויות למשלוח פלט לחלון באמצעות. עבודה עס גרפיקה. 6 ז7א2בחווו ומבוא ל-ספו 19 עבודה בגרפיקה מערכת חלונות א9 כוללת אוסף עשיר וגמיש של פונקציות גרפיות, לנוחותו של המתכנת. אין זה מפתיע, שהרי ווהי מערכת הפעלה גרפית. אך תופתע אולי מהמידה שבה שלובה הגרפיקה במערכת התצוגה החלונאית. למעשה, חלק גדול ממה שלמדת. אודות טקסט בפרק הקודס, יפה גס לגרפוקה. לדוגמה, המברשת המשמשת לצביעת. חלון, משמשת גם למילוי של עצם. בפרק זה נדון בכמה מהפונקציות הגרפיות של חלונות, ונדגים כיצד הן פועלות. הפרק גם בוחן מספר מאפיונים הקובעים בדיוק כיצד ימופה פלט נתון על החלון שאליו הוא מיועד. נדון בנושאיים כגון קביעת מצב המיפוי הנוכחי, כיצד לשנות את הקואורדינטות הלוגיות הקשורות בחלון נתון, וכיצד להגדיר את שטח התצוגה (0ז0ק/6/ו). לגורמים אלה השפעה מכרעת על אופן הצגת הגרפיקה והטקסט על המסך. וכור שהדיון בגרפיקה ובנושאים הקשורים לגרפיקה בפרק וה אינו אלא נגיעה בפנר השטח. מערכת הגרפיקה של חלונות א9 היא בעלת עוצמה, ויש להניח שתרצה להמשיך. ולחקור אותה בעצמך. 1 מערכת הקואורדינטות לגרפיקה מערכת הקואורדינטות לגרפיקה היא וו המשמשת את הפונקציות המבוססות על טקסט ‏ הנדונות בפרק 10). פירוש הדבר שלפי ברירת המחדל, הפנה השמאלית-העליונה ממוקמת בנקודה 0,0; והיחידות הלוגיות שקולות כנגד פיקסלים. וכור שמערכת הקואורדינטות והמיפוי של יחידות לוגיות למתכונת של פיקסלים. נתונים בשליטתך וניתן לשנותס (בהמשך הפרק יתברר לך כיצד). חלונות א9 שומרת כל הומן ערך של מיקום נוכחי (חס6פסל 6חפזזנס), המשמש פונקציות גרפיות מסוימות, שגם מעדכנות אותו. כאשר התוכנית שלך מתחילה לרו), מתאפס המיקום הנוכחי ומוצב על 0,0. זכור שהנקודה המייצגת את המיקום הנוכחיי היא בלתי נראית. כלומר, אין שום "סמןיי גרפיקה על המסך. המיקום הנוכחי הוא' המקום הבא בחלון, שבו יתחילו לפעול פונקציות גרפיות מסוימות. פרק וז: עבודה בגרפיקה = 277 2 עטים ומברשות מערכת הגרפיקה החלונאית מבוססת על שני עצמים חשובים: עטים ומברשות. כבר עסקנו במברשות בפרק 10. כל המידע הזה חל גם על הפונקציות הגרפיות המתוארות. בפרק. לפי ברירת המחדל, צורות גרפיות סגורות, כגון מלבנים ואליפסות, מתמלאים. בעורת המברשת הנוכחית. עטים (צח9?) הם משאב המצייר קווים וקשתות. לפי הוראות מפונקציות גרפיות מסוימות. לפי ברירת המחדל, צבע העט שחור, והוא מצייר קו בעובי פיקסל אחד. בידך האפשרות לשנות את התכונות האלו. עד כה עבדת רק עם עצמים ממלאי המערכת. בפרק וה תלמד כיצד ליצור מברשות ועטים מותאמים אישית. זכור דבר חשוב אחד לגבי עצמים אישיים שהתאמת לעצמך חובה למחוק אותס לפני סיום התוכנית באמצעות הפונקציה ()61609(6%ו6ם. 3 הגדרה של פיקסלים תוכל לקבוע את צבעו של כל פיקסל נתון באמצעות הפונקציה ()06ו56 של זַקא, שהגדרתה הכללית היא: 7 עפתהס0נ0ס ,? 8ה1 ,א שה ,46מ ספא) 61א8601 עמהתסנסם במקרה זה, 66ו! היא הידית להקשר ההתקן הרצוי. הקואורדינטות של הפיקסל שאת. הגדרתו מבקשים לקבוע נתונות על ידי א ו-+, והפרמטר זס/60 מכיל את הגדרת הצבע (דיון בסוג הנתונים +001.0885 מופיע בפרק 10). הפונקציה מחזירה את הצבע המקורי של הפיקסל, וערך 1- במקרה של שגיאה, או במקרה שהמיקום שצוין נמצא מחוץ לגבולות החלון. 4 שרטוט קווים כדי לשרטט קו, השתמש בפונקציה ()דפחו1, אשר מציירת קו בעורת העט הנוכחי. לפניך הגדרתה הכללית. שת ,6 שת1 ,66מ ססא)690ה11 מססם 6 מכיל את הידית להקשר ההתקן שבתוכו יש לצייר את הקו. הקו ישורטט מהמיקום הגרפי הנוכחי, אל הנקודה הנתונה על ידי הקואורדינטות א ו-+. לאחר מכן יעודכן המיקום הנוכחי ויקבל את הערכים +,א. הפונקציה מחזירה ערך לא-אפס אם. סיימה בהצלחה (כלומר, הקו צויר), וערך אפס אם לא. יש מתכנתים שמופתעים מכך שהפונקציה ()670ח/) משתמשת במיקום הנוכחי כנקודת. יציאה, ולאחר מכן מגדירה את המיקום הנוכחי לפי נקודת הסיום של הקו ששורטט. (במקום להותירה בלא שינוי). יש לכך סיבה טובה. פעמים רבות, כאשר מציגים קווים, קורה שקו אחד מתחיל בסופו של הקו הקודם. במקרה כוה, הפונקציה (00610 פועלת באורח יעיל ביותר כי אינה צריכה להעביר זוג קואורדינטות נוסף. כשאינך מעוניץ במתכונת כזו, עליך לקבוע את המיקוס הנוכחי בכל נקודה הרצויה לך באמצעות הפונקציה ()06105/ שמייד נעסוק בה, עוד לפני הקריאה לפונקציה 0 8 71א32חווו ומבוא ל-ספו 5 קביעת המיקום הנוכחי כדי לקבוע מיקוס נוכחי, השתמש בפונקציה ()6105א0א, שהגדרתה הכללית היא: ;(צסססם1 שאצספפ1 ,% 6מ1 ,א שמ1 ,500 86א) אמספסטמות מס הפרמטר 66 מכיל את הידית להקשר ההתקן. הקואורדינטות של המיקום הנוכחי החדש נתונות על ידי +,%. 100016 הוא מצביע אל מבנה זאז0ק, המחזיר את המיקום. הנוכחי הקודם. לפניך הגדרת מבנה 901 | 6200010 5סע:ם 465שמעל 10 0 צס ן אס תקצה לפרמטר 00070קן ערך 1ש', הפונקציה 0461086 לא תחציר את המיקום. הנוכחי הקודם. הפונקציה ()0/6105// מחזירה ערך לא-אפס אם סיימה בהצלחה, וערך אפס אם לא: 6 ציור קשתות תוכל לצייר קשת אליפטית 0 וג6קום, מקטע של אליפסה) בצבע העט הנוכחי באמצעות הפונקציה ()6, שתבניתה הכללית היא: סנ 16 ,1060 שת1 ,צקט את3 ,אקט פת1 ,סמ סת8) שעת מססם ; משתש שמ1 ,אנתס שת1 ,262257 סה1 ,%:5622 שחצ אאטו-+1 0 4 תרשים 1.1 ון הפעולה של הפונקציה ()6א. בדוגמה זו, 6 היא הידית להקשר ההתקן שבו תצויר הקשת. הגדרת הקשת נעשית. באמצעות שני עצמים. הראשון, הקשת עצמה, הוא חלק של אליפסה הכלואה במלבן (6ו0ח₪6619 הַוחט80) שפינתו השמאלית-העליונה נמצאת בנקודה צקט,אקט, ופינתר פרק 11: עבודה בגרפיקה = 279 הימנית-התחתונה בנקודה. +אוסו,אאוס. אותו חלק של האליפסה המצויר בפועל (הקשת), מתחיל בנקודה שבה מצטלבים הקו העובר דרך מרכו המלבן והנקודה הנתונה על ידי /30),576ו5. הוא מסתיים בנקודה שבה מצטלבים הקו העובר דרך מרכו המלבן ודרך הנקודה הנתונה על ידי +66,%ח6. הקשת מצוירת בניגוד לכיווך השעון, מהנקודה 30,9136ז5. בתרשים 11.1 מודגמת פעולת הפונקציה ()6א. הפונקציה ()6 מחזירה ערך לא-אפס אם סיימה בהצלחה, וערך אפס אם לא: 7 כיצד להציג מלבנים באפשרותך לחולל תצוגת מלבן (פוַח8601), שיצויר בעט הנוכחי, באמצעות הפונקציה (601300/60ה, שהגדרתה מובאת כאן 100 18 ,108 שת1 ,צקט שה1 ,קט שמ1 ,00ת ססמ) 816ה80:2ה מססם 6 היא הידית להקשר ההתקן. הפינה שמאלית-העליונה של המלבן נתונה על ידי צסט,אקט, והפינה הימנית-התחתונה נתונה על ידי צווסו,אווסו. הפונקציה מחזירה ערך. לא-אפס אם סיימה בהצלחה, ואפס במקרה של שגיאה. המלבן יתמלא באופן אוטומטי, על ידי המברשת הנוכחית. תוכל להציג מלבן מעוגל (סַ963 060ח80), מלבן שפינותיו מעוגלות במקצת, באמצעות הפונקציה ():806860, שהגדרתה הכללית מובאת להלן 10 16 ,צקט שת1 ,הקט טה1 ,300 ססמ) 06שההוסה מססם (לסטעמס מת1 (אפטעטם 10% ,108% שג חמשת הפרמטרים הראשונים והים לאלה המופיעים בפונקציה ()פפַח890. צורת. עיגול הפינות נקבעת על ידי ערכי הפרמטרים אפוחנ ו-!פצזוס, המגדירים את רוחבה וגובהה של האליפסה המתווה את הקשת. הפונקציה מחזירה ערך לא-אפס אם סיימה. בהצלחה, וערך אפס במקרה של שגיאה. המלבן המעוגל מתמלא באופן אוטומטי עלל ידי המברשת הנוכחית. 8 כיצד לצייר אליפסות ופרוסות עוגה כדי לצייר אליפסה (56פו/8) או עיגול בעורת העט הנוכחי, עליך להשתמש בפונקציה (0560ו//8, שהגדרתה הכללית היא ;אס פת1 ,106% 15 ,צקט פה1 |)קט פה ,סטג ספא) 11156 מססם בדוגמה, 06 היא הידית של הקשר ההתקן שבו תצויר האליפסה. כל אליפסה מוגדרת. באמצעות המלבן התוחם אותה. הפינה השמאלית-העליונה של המלבן נתונה על ידי צסט,אקט, והפינה הימנית-התחתונה נתונה על ידי צאוסו, אאוסו. כדי לצייר עיגול, הגדר ריבוע במקום מלבן 0 321חווו ומבוא ל-ספו הפונקציה מחצירה ערך לא-אפס אס סיימה בהצלחה, וערך אפס אס לא. האליפסה מתמלאת על ידי המברשת הנוכחית. פרוסת העוגה (5/09 6ק) היא צורה קרובה לאליפסה. פרוסת עוגה היא עצם המורכב מקשת ומשני קוויס אל מרכו האליפסה, אחד מכל קצה של הקשת. כדי לצייר פרוסת. עוגה, השתמש בפונקציה ()6וה, שהגדרת הכללית מובאת להלן /%אס1 שת1 ,1060 שת1 ,לקט פה ,אקט %ת1 ,0במ סת₪)15ע מססם ; תס שת1 ,אמתס 18 ,268289 עת' :582 פת4 במקרה זה, ₪66 היא הידית להקשר ההתקן שבו תצויר פרוסת העוגה. הקשת של הפרוסה מוגדרת באמצעות שני עצמים. הקשת היא חלק מאליפסה, הכלואה במלבן שפינתו השמאלית-העליונה ממוקמת בנקודה צקט,אפט, ופינתו הימנית-התחתונה בנקודה אוס,אשוסו. אותו חלק של האליפסה המצויר בפועל (הקשת של הפרוטה), מתחילה בהצטלבות של קו היוצא ממרכז המלבן ועובר דרך הנקודה הנתונה על ידי ובו זז5, ומסתיימת בהצטלבות של קו היוצא ממרכז המלבן ועובר דרך הנקודה. ח0%,0ח6. הפרוסה מצוירת בעט הנוכחי ומתמלאת על ידי המברשת הנוכחית. הפונקציה ()96 מחזירה ערך לא-אפס אם סיימה בהצלחה, וערך אפס במקרה של שגיאה. 9 כיצד לעבוד עם עטים עצמים גרפיים מצוירים בעזרת העט הנוכחי. במלאי המערכת קיימים שלושה עטים 6% פאחאו ו-!|טח. ניתן להשיג ידית לכל אחד מהס באמצעות הפונקציה ()6615406600(66, שנדונה בשלב מוקדם יותר בספר. פקודות המאקרו עבור עטי המערכת הן אפק 81/46%, אק דוו ו-אפק .1ו, בהתאמה. ידיות לעטים הן מסוגג אפו למעשה, עטי המערכת (פחשק 5106%) מוגבלים למדי ובדרך כלל תגלה שנוח לך להגדירר עטים משלך עבור היישום שאתה כותב. הדבר מתבצע בעורת הפונקציה ()ח01631906, שהגדרתה הכללית היא: :(00108 שפתה0010 ,1860 1 ,16ע56 6ה1)ת6לם)68צם אמק הפרמטר 5% קובע את סוג העט שייווצר, וחייב להכיל אחד מהערכים הבאים. שם המאקרו סגנון העט. אפס 5ק | מקווקוו דססוופ אס 5ק | קו-נקודה 5 סד5300א 5ק | קו-נקודה-קו דסם 75 | מנוקד פואתאתפפזפא 05 | עט מלא בתוך גבולות של אזור תחום. וטא 05 | איך 50 5 | קו רצוף. פרק וז: עבודה בגרפיקה = 281 הסגנונות המנוקדים ו/או המקווקווים חלים על עטים בעובי של יחידה אחת בלבד. העט פוא8זםס091ו1 .5 הוא עט מלא, שיהיה כולו בתוך גבולותיו של העצס שיצויר, גם כאשר עובי העט עולה על יחידה אחת. לדוגמה, אם עט בסגנון 516?885א1 5 ובעובי העולה על יחידה אחת משמש לציור מלבן, אזי צידו החיצוני של הקו יחיהה בתוך גבולות המלבן (כאשר משתמשים בעט רחב מסגנון אחר, ייתכן שהקו יחרוגג בחלקו מגבולות העצם). עובי העט מוגדר באמצעות הפרמטר חזשאו, שהערך שלו הוא ביחידות לוגיות. הפרמטר. זסוסס, שהוא ערך של 0010885 (שנדון בפרק 10), קובע את צבע העט. בדוגמאות של פרק זה יוגדרו כל הצבעים בעורת ערכי 68 לאחר שנוצר העט, הוא מוצב בהקשר התקן באמצעות הפונקציה ()56160:00(60. לדוגמה, קטע הקוד הבא יוצר עט אדום ולאחר מכן בוחר בו להיות העט הנוכחיי ;הספת עמק :(0 ,0 ,90)255+ ,1 ,80110 5פ)ה68:626טם = השקטסתם ( 80 ,186 1005003608 וכור, לפני סיום התוכנית עליך למחוק כל עט אישי שיצרת באמצעות הפונקציה 661600600 0 כיצד ליצור מברשות אישיות מברשות המותאמות אישית לצרכיך (0065ז8 חחסופטס) נוצרות בצורה דומה לעטים. אישיים. קיימים מספר סגנונות של מברשות, הנפוצה היא חפטזפ 50/66. מברשת מלאה. נוצרת בעורת הפונקציה ח05ז016316501/68, שהגדרתה הכללית היא (ס1סם שמתהסנ0ס)80גו0568655011085 אפטהפ צבע המברשת מוגדר באמצעות ערך הפרמטר זסוסס, והפונקציה מחזירה ידית לאותה. מברשת. לאחר שנוצרה המברשת האישית, היא מוצבת בהקשר ההתקן באמצעות הפונקציה (56/60109[904. לדוגמה, קטע הקוד הבא יוצר מברשת ירוקה, ולאחר מכן בוחר בה להיות המברשת הנוכחית. פטממה6566ת שפטאפם ((0 ,255 ,0) 08ה) 2081080110 050 ,80 1005003668 0 בדומה לעטים אישיים, חובה למחוק גם מברשות אישיות לפני סיום התוכנית. סוגים נוספים של מברשות, שבוודאי תרצה לחקור בעצמך, הס מברשות עס קווקווים. או עם דוגמאות, ‏ הנוצרות | באמצעות ‏ הפונקציות | ו וב-()ת5טז8ח016319731107, בהתאמה. 2 זקא2בחווו ומבוא ל-ספו 1 מחיקת עצמים אישיים חובה למחוק עצמים אישיים 090605 וחסופס) לפנ סיו התוכנית. פעולה. זר מתבצעת באמצעות הפונקציה ():06/61609(60. זכור, אין למחוק עצם המוצב באותו זמן בהקשר התקן כלשהו. 2 הדגמת עבודה בגרפיקה התוכנית ₪011 שלפניך מדגימה את הפונקציות הגרפיות השונות שתוארו לעיל. תוכנית זו משתמשת בטכניקת החלון הווירטואלי שעסקנו בה בפרק 10. היא מכוונתת את הפלט להקשר התקן המצוי בויכרון. לאחר מכן מועתק תוכן החלון אל החלון. הפיסי בכל פעם שמתקבלת הודעת זאזאק זא (וכור, גישה זו לפלט מאפשרת עדכון אוטומטי של תוכן החלון כאשר מתקבלת הודעת זאזאק א/) התוכנית בשלמותה נמצאת בתקליטור 1166011ק8ס. < 104008 ה <565186,3> 1006סה1 <מ.56810> 66ט1סה41 "ת. 00111" 1086סה1 ".5650906" 1001066 /* . פתס1מסתט? 01 66ב:ופהסחסס */ (132א) 46818680 518 מטתץ 32צא 15 6ת4001 8 פפנתת 32מצא 15 שת001+ 0 (0%80000000 > ()מ10פעשע600) (נססם) ₪60 32אצו א 15 1 6 | 15) ) (מסס) ₪6 2בעאו 18 1325 ( >4(‏ () 6408 06) הסאס ת) מעיעס:נ) 2בוצא 18 ₪6 ((25באדא 15)| 46 (פא 18)!) (מססם) = 5פא 1 4001108 15 =סמספת1 מהמעעמס // = ;מפחדת מסנתלפאצה ( סאם1 *5פהתססוהו פאס | 186020195 מססם ;"ססהעו" = בהפוטקתפפמ1 תפפסק1 (" פרק 11 041110 " = 16ש1ל2פק1 אעפפסס1 /* פחַת1ע0 ממקסטס 188סה */ ;[255] 862 צבתם פרק וז: עבודה בגרפיקה = 283 4 הלבחו ומבוא ל-ספו פרק 11: עבודה בגרפיקה | 285 .95 4088ה1ו ע0? במהסה10ם 4068 // ל 2 - (55ה:סטוח)) 512005 = 05126 אסס ("מנתעם" ,8שת8:פחדה. אפסא)ה1086160 = מפמססזת אסס ;( 86068 )860186650185988 תפגםם> 15 תג 95 פסבה1א עט 081188 18 מס1ססתםת בצמל */ /* פטפנף 6םפפשה סת5 מסע: 58068פשת הבפגתא אתתתקה ,ספמ עמצט (במות כומות | עבמ אסהמננתס צנטפמתנ ( הגפגק1 עתתתק1 ספמ ספת כ ד טתדפעוונתק ;הכוסה ,מפקאס1נטצת ,תסקפטנפת ,מסקהססעסה ,הקפהה אפפ 262610 /* שנשהגת 460168 [מטטעגט שמ6 6ע0:ם */ קסבתסת ספא 2:261 /* מפתסום [בטספנט שמף 0096ב */ ;סגמת קממתזמא 12610 /* 41הגת תפטעם שמ 55026 */ קמפטעמבנסת ,תפועמת מפטתמא 562610 ( מ )1 [ אפ ₪ 456 ( ו )0055565 = אמ ( 0 )6105 ה50ע05 0 = לאמ /* 809108 סִסגה1 עעכתפה 10מ1טבקמסם ב בלמת */ (8ו) ₪60 = ספה 96500 = מ חס (צאגח ,אאפה ,ססת) ק8ה0211216830ה04:600עס = מנפה (8 ,646 616050008 ; (מפטת מצאא) 6%5600%00[666ם (אפטהטא) = הפטעפה ( ג 0 01600608 (צ89008ק ,צאפה (אצה ,0 ,0 ,סבמסת):1ם:גק ;((908)255,0,0 ,1 ,50210 5ק)מ6ק0ץ02מם = השקם0שחת ;((68)0,255,0ת ,2 ,50210 0268)25:בשעם = תסקהסשעמה ;((968)0,0,255 ,3 ,50112 5ק)ת0266096 = מסקסטנפה /((0 ,255 ,808)255 ,4 ,1מ50 פק)ת085096עס = מסקס1נטעם 6 3231חווו ומבוא ל-ספו פרק 11: עבודה בגרפיקה = 287 8 32271חא ומבוא ל-ספו פרק וו: עבודה בגרפיקה = 289 0 3237חואו ומבוא ל-ספו התוכנית מציגה תפריט ראשי המאפשר לך להציג קווים (ועוד שני פיקסלים), מלבנים ואליפסות. היא גם מאפשרת לאפס את החלון, כלומר למחוק את תוכנו ולאפס את המיקום הנוכחי שלו. פלט לדוגמה מובא בתרשים 11.2. א ה א | תרשים 11.2 ולט לדוגמה מהתוכנית להדגמת עבודה בגרפיקה 3 הבנת מצבי המיפוי ואזורי התצוגה פונקציות הטקסט והגרפיקה של חלונות פועלות לפי יחידות לוגיות, שחלונות מתרגמת. אותן ליחידות פיסיות (למשל, פיקסלים) כאשר היא מציגה עצם. האופן שבו מתבצע התרגום מיחידות לוגיות ליחידות פיסיות נקבע באמצעות מצב המיפוי (פחופקטוו 6 הנוכחי. לפי ברירת המחדל, יחידות לוגיות והות לפיקסלים. אולם באפשרותך. לשנות את היחט בין יחידות לוגיות ליחידות פיסיות על ידי שינוי מצב המיפוי נוסף לשינוי האופן שבו חלונות ממפה את הפלט אל חלון נתון, תוכל להגדיר שתי תכונות נוספות המשפיעות על התרגוס של יחידות לוגיות ליחידות פיסיות. ראשית, תוכל להגדיר את אורך ורוחב החלון במונחים של יחידות לוגיות שאתה תקבע. שנית, תוכל לקבוע את המימדים הפיסיים של אזור התצוגה. אזור התצוגה (זסקאו6ו/) הוא: אזור מסוים המתקיים בתוך גבולות החלון. מרגע שהוגדר אזור התצוגה, כל הפלט. יוגבל לגבולות אלה. בסעיף זה נבחן את הפונקציות המאפשרות לקבוע את מצב המיפוי, את מימדי החלון. ואת גבולות התצוגה. קביעת מצב המיפוי כדי לקבוע את מצב המיפוי הנוכחי, השתמש בפונקציה ()560/%0%066, שהגדרתה. היא (ס 1 ה )360 שת פרק וז: עבודה בגרפיקה = 291 הפרמטר 66 מכיל את הידית להקשר ההתקן. הפרמטר 06טוח מגדיר את מצב המיפוי, ויכול להיות אחד הקבועים שלהלן מצב המיפוי הפעולה 06 הד150אוא. ואוא | הופך יחידות לוגיות ליחידות שהגדרתן נתונה בידי המתכנת, עס צירים בעלי קנה מידה שרירותי 15ו6אמזו ואוא | הופך כל יחידה לוגית ליחידה פיסית בת 0.001 אונ. 6והדפווזוו ויו | הופך כל יחידה לוגית ליחידה פיסית בת 0.01 מיימ. 6נקסדס5 אא | הופך יחידות לוגיות ליחידות שהגדרתן נתונה בידי המתכנת, עם צירים בקנה מידה מושווה (הדבר יוצר יחס. רוחב/גובה של אחד-לאחד). 6והדפואס | ואוו | הופך כל יחידה לוגית ליחידה פיסית בת 0.1 מיימ. 615אשס. ואו | הופך כל יחידה לוגית ליחידה פיסית בת 0.01 אזנן. דפ ואו | הופך כל יחידה לוגית לפיקסל אחד של ההתקן. לוד או | הופך כל יחידה לוגית לאחד חלקי עשרים של נקודת. דפסים, או 1440/1 האינץי, בקירוב. הפונקציה ()561/%80/066 מחצירה את מצב המיפוי הקודס, או ערך אפס במקרה של שגיאה. לפי ברירת המחדל, מצב המיפוי הוא דאפד וו אפשר לשנות את מצב המיפוי מכמה סיבות. ראשית, אם אתה רוצה שהקלט של התוכנית יוצג ביחידות פיסיות, באפשרותך לבחור את אחד המצבים המשקפים את העולם הממשי, כגון 816ד6וא0 1 ו1. שנית, ייתכן שתרצה להגדיר לתוכנית שלך את היחידות המתאימות ביותר לאופי התמונה שאתה מציג. שלישית, אולי תרצה לשנות. את קנה המידה של התמונה המוצגת (כלומר, ייתכן שתרצה להגדיל, או להקטין את תצוגת הפלט). לבסוף, ייתכן שתרצה להגדיר יחס גובה/רוחב של אחד-לאחד בין ציר א לציר +. לאחר שתעשה זאת, כל יחידת א תייצג אותו מרחק פוסי כמו יחידת ץ. הערה: זזכור: שינוי מצב המיפוי משנה את אופן התרגום של יחידות לוגיות ליחידות פיסיות (פיקסלים). כיצד להגדיר את גבולות החלון בחירה במצב המיפוי 16ק0הד150 וא אר 6נקסהד50זווא, ואו תאפשר לך להגדיר את. גודל החלון במונחים של יחידות לוגיות. למעשה, כאשר אתה בוחר אחד ממצבי המיפוי הללו, אתה חייב להגדיר את מימדי החלון (מצבי המיפוי הללו פועלים לפי יחידות שהוגדרו בידי המתכנת, ולכן מבחינה טכנית גבולות החלון אינם מוגדרים עדד אשר תגדיר אותם). כדי להגדיר את מימדי החלון באמצעות אורך ציר א וציר +, השתמש בפונקציה ()00%/5054חו//561, שהגדרתה היא 16 0 0 0 מס נ(5196 5פדפס1 ,1086080 שחצ 2 זקא2חווו ומבוא ל-ספו הפרמטר 66 מציג את הידית להקשר ההתקן. זחס)אפא ו-1חפזאט מגדירים את האורך. האופקי והאנכי החדשים, הנמדדים ביחידות לוגיות. המימדים הקודמים של החלון. נשמרים במבנה 5125, ש-506 הוא המצביע שלו. אם הפרמטר 56 מכיל ערך !0א, אזר התוכנית מתעלמת מהמימדים הקודמים. הפונקציה מחזירה ערך לא-אפס אם סיימה בהצלחה, וערך אפס אם לא. הפונקציה ()5%ַַא00חו56 משפיעה רק כאשר מצב המיפוי הוא 150180016ו4%, א/, או 150180716 %/%. הגדרת מבנה 5125 היא: | 585128 569006 6665פצט ו ;עס 1006 2 | זכור, שינוי המימדים הלוגיים של חלון אינו גורס לשינוי גודלו הפיסי על המסך בפעולה זו אתה פשוט מגדיר את גודל החלון במונחים של היחידות הלוגיות שבחרת. (למעשה, אתה מגדיר את היחס בין היחידות הלוגיות המשמשות את החלון, והיחידות. הפיסיות [פיקסלים] המשמשות את ההתקן). לדוגמה, אפשר להגדיר את מימדיו של חלון כ- ‏ 1004100, או 75%50. ההבדל הוא היחס בין יחידות לוגיות לפיסקלים בעת שתמונה מוצגת על המסך. כיצד להגדיר אזור תצוגה כפי שהכבר הוכרנו, אזור תצוגה טזספווסו) הוא אזור מוגדר בתוך חלון, המקבל פלט. תוכל להגדיר את מימדי אזור התצוגה באמצעות הפונקציה ()5015זסקוו6ו5, שהגדרתה הכללית היא: אא 36 0 0 5601 מססם /(2126 195128 ,מתש)אמל מב הפרמטר 66 מכיל את הידית להקשר ההתקן. הפרמטרים 49060 ו-99? מגדירים. ביחידות פיקסל את מימדי הציר האופקי והאנכי של אזור התצוגה. הפונקציה מחזירה ערך לא-אפס אם סיימה בהצלחה, וערך אפס אם לא. מימדיו הקודמים של אזור התצוגה מוחזרים במבנה 5126, שהפרמטר 525 מצביע עליו. אס 526 מכיל ערך 1שא, אצי התוכנית מתעלמת מהמימדים הקודמים. לפונקציה ()א5606/05 תהיה השפעה. רק כאשר מצב המיפוי הוא 16קסהדס15אה-1אוא, או 16ק80ד150 ואו תוכל לקבוע אזור התצוגה כל גודל הרצוי לך. כלומר, הא יכול להשתרע על כל שטח. החלון, או לתפוס רק חלק משטחו. עבור מצב המיפוי זאד ויוו, שהוא ברירת. המחדל, גודל אזור התצוגה וגודל החלון והים. הפלט ממופה באופן אוטומטי מהקשר ההתקן של החלון (ביחידות לוגיות) אל אזור התצוגה (פיקסלים), וקנה המידה משתנה בהתאם. לפיכך, על ידי שונוי מימדי % ו-+ של אזור התצוגה, למעשה אתה משנה גודל של כל תמונה שתוצג בתוך תחום זה. כך, שאם אתה מגדיל את מימדי אזור התצוגה, יגדל בהתאם גם תוכנו. לחילופין, אם תקטין את המימדים, יקטן בהתאם תוכנו של אזור התצוגה. דבר זה נראה בתוכנית. לדוגמה הבאה. פרק וז: עבודה בגרפיקה = 293 קביעת נקודת המוצא של אזור התצוגה לפי ברירת המחדל, נקודת המוצא של אזור התצוגה היא הנקודה 0,0 בחלון. אפשר לשנות אותה באמצעות הפונקציה ()5ףזסשזסקוא6ו50%, שהגדרתה היא ;(018099 לספס ,צ פה1 ,א שמ1 ,46 ספא) 5601000 מססם הידית של הקשר ההתקן מועברת בפרמטר 866. נקודת המוצא החדשה לאזור התצוגה, כשהוא נתון בפיקסלים, מועבר בפרמטרים +,א. המוצא הקודם מוחזר במבנה דא01ק, שהפרמטר פַז0/00: מצביע עליו. אם פרמטר זה מכיל ערך |טא, התוכנית מתעלמת מנקודת המוצא הקודמת. החלפת נקודת המוצא של אזור התצוגה לובשת אופי שונה כאשר מדובר בתמונות. המוצגות בחלון. תוכל לראות את השפעת הדבר בתוכנית לדוגמה המובאת כאן. תוכנית לדוגמה לקביעת מצב המיפוי התוכנית 601611 הבאה היא גירסה מורחבת של התוכנית הגרפית הקודמת, והיא כוללת הגדרת מצב המיפוי, מימדי החלון ומימדי אזור התצוגה. פלט לדוגמה מתוכנית זו מוצג בתרשים 11.3. התוכנית מגדירה מצב מיפוי 16ק0ד150א3, ואוא, קובעת את מימדי החלון ל- 200א200, ואת גודלו הראשוני של אזור התצוגה ל- 40%40. כשתריץ את התוכנית, כל פעם שתבחר באפשרות וח מתוך התפריט הראשי, יוגדל כל אחד מצירי אזור התצוגה בעשר יחידות, דבר שיגרוס להגדרת התמונה בתוך. החלון. בחירת האפשרות פס מתוך התפריט תגרום להזות נקודת המוצא של אזור התצוגה ב-50 פיקסלים, בכיוון ציר א, ובכיוון צור + <ה 0008ת91> 301086 3161086 >559188.3< 41001086 >55010.8< "מ 10009611" 4301886 ".5650566" 1006סה1 /* .8מהש:אם מעסמאסנט שמ: 8ת2 אסתגא ש: ,06סת הַה1קקגת סמל משם */ (132א) ‏ 4681868 415 מטתץ 2בונא 15 6ה4001 8 פפנתת 2באצא 15 6ת4001 0 (0%80000000 > ()ה16פעםע600) (נססם) 26 32אצז פד ע 15 40:18 6 (צא 15) !) (נססם) 66 32אנא 15 25באנאן 15 461106 ( 64 (‏ () 08 וט 6) אסאס 1) מעיע סנ פבמזן 15 55 ((325אצא 15)! 68 (סא 15)!) (מ0סם) - 5פאנק 15 שתנ4301 4 3231חווו ומבוא ל-ספו =סתמספת1 מהסעעמס // = קתפחדת מסנתדפאצה |( סאם1 *5פהתססותן לפא60 | 5186020195 מססם "ספתע9!" = שהפאקקהפפק1 1002998 5 78ק 11 11וצסמאס1ט" 102598 פסונתפפאצט (שסתפ4תסת 306 (שה41ת: 1 /* חַת1עספ ממקסטס 18סה */ ;[852]255 צמתם /* 10020108 שמפטמס מהמעצמם */ ;7-0 ,0- פתג /* פהס!פתסת1 ת50286 */ ;צאבה |אאה שג ,בסהגופחנת מסותצפנא | הנבעתגז צהפונמדעת פב ספ 101578 (ססה68פתנטם:קת 4 6 ו | פוא ו 10606 מ110810פקם הצממ ב(ף צב155חָטת // 8 ו ;מתתספתט 05 | אתתמםהא 05 = 8 /* מס1ששמנת 6ס4ה1א */ ק00צקםמא (ססהפמותו) ו ₪ 01 ₪ 0 /* בסהבופה1 18ת: 50 ש1בתגת /*‏ ;מסתםםפתדת = = פסתבספתדת סט ;( שממאקפת2פק1 ,ססהבמפהדת )10881000 0 /* 16ע59 00ש) */ הת 10 10 ו /* 1ע8 צספפגם *] ; (ב+אססווצוו ה0נסס) (מפטהפט) = במספף80%מעמת סט /* מחמה 1858ט א קסהגומקת52מ1 = במגאטהס2פם1 סט ו60ת1 */ קסהפאמקת2פמ1 = שהם201258%פם1 סט ( 95אצא 18 | 41 ( ( 06פ )8601466501095! ) 15 | פפמת )תצטם? ] ( ( 606 )8601866:01888 | 15 6186 ( תת | 20 פרק 11: עבודה בגרפיקה = 295 6 32371חאו ומבוא ל-ספו ב ,אס ,ב מב 5 1801ב סו 1521 ססר 85006 108501 סט .95 8אסה1ן עס? פממסה1ם 4068 // 0 2 - (55ה:סטוח)) 812005 = 005126 אסס ("םנתעפ" ,68ת8:פחדה. אפסא)ה1086160 = מפמ00נת אסס |( 86068 )860186650185988 תפגטם> 15 תג 95 פמסבה1א ע 681158 18 מסנססתגת גמד */ /* פטפנף 86פפשה סת5 מסע, 58008פשת ,הבפגתא אתתתקה ,ספמו עמצט (במות כומות | עבמ אסהמננתס צנטפמתנ ( הגפגפן עתתתק1 ספמ ספת הק ד טתדפעוונתק ;הנסה ,מפקאס1נטצת ,תסקפטנפת ,מסקהססעסה ,הפק0סהת אפ 262610 /* ש[שהגת 460166 [מטסעגט שמ5 שע0:ם */ ;סבתסת ססא 252610 /* מפתסום [בטספנט שמף בע0םם */ ;שגמת תנמא 2:2610 /* 41הגת תפטעם שמץ 55026 */ קמפטעמבנסת ,תפועמת מפטתמא 562610 07 = סע ,0 = 6%עם שה1 5:2610 ( מ )01 / 6 ( )00 = אמ תפצ מ5) 0662105ה506ע005 = צאמת /* 804108 ססגה) שעסתשה 16ע1םמקמ0ם ג בעמת */ (8) ₪60 = ספה 26500 = ס חס (צאגת ,אצבה ,ססמ) 80ה0861016810ה2045000 = שגפמ ( 0 016000 ; (מפטתם מעעאא) 0%8600%00[606ם (אפטתםא) = הפטעפה ( ג 0 01600 (289008% ,צאפה (אצה ,0 ,0 ,סהתסת)%נפוגק פרק 11: עבודה בגרפיקה = 297 8 32371חאו ומבוא ל-0פו פרק וז: עבודה בגרפיקה = 299 0 זקה2בחו/ו ומבוא ל-0=ו פרק 11: עבודה בגרפיקה 301 |02 קת2בח//ו ומבוא ל-80ו ,סנפ מאאא ) ווסעת אסממונתס ענטפפתת ה וט הבטבפאו החתפו (198580 שתפתס ב (85808שת) 160 6 ; (פטתת) מצ6? 0 0 886 (מ8פמפא) מפסא10 | 46 פא הסוס | | 80110 ; (מטח?) מעגסם, ו פע תרשים 11.3: פלט לדוגמה מתוכנית לקביעת מצב המיפוי, הגדלות ונקודות מוצא שונותת בפרק הבא נשוב לנושא הפקדים, ונתחיל בבדיקת הפקדים הנפוצים של חלונות א9. פרק 11: עבודה בגרפיקה = 1303 וק 12 פקדים משותפים בפרק זה יוצג אחד הרכיבים המלהיבים ביותר של חלונות 9%: פקדים משותפים (פוסחס0 חסוחוחסס). בפרקים הקודמים למדת אודות הפקדים התקניים שנתמכים עלל ידי חלונות 9% וגרסאות מוקדמות יותר של חלונות. הפקדים החדשים משפרים מאוד את ממשקי היישומים השונים מבחינה תפקודית וחוותית כאחד. הם משלימים את הפקדים התקניים ומקנים למחשב גמישות ויתר עוצמה. בעורתם נראה היישום כאילו "ינתפריי במיוחד לצרכיךך הטבלה הבאה מתארת את הפקדיס המשותפים בהם תומכת חלונות אפ. טבלה 12.1: תיאור הפקדים המשותפיט בהס תומכת חלונות אפ. פקד תיאור תיבות גרירת רשימות = | תיבת רשימה שמאפשרת גרירה של פריטים. פקדי כותרת. כותרות טורים. פקדי "מקשים חמיסי = | תומכים במקשים חמיס (קיצורי דרך) שיוצר המשתמש. רשימות של תמונות. רשימה של תמונות גרפיות. פקדי תצוגת רשימות = | רשימת סמלים וטבלאות. סרגלי מצב. אמצעים חזותיים לציון מצב השלמת המשימה. גליונות תכונותת תיבת דו-שיח של תכונות. פקדי עריכה מתקדמים | תיבת עריכה מתוחכמת. חלונות סטטוס. סרגל המציג מידע שקשור ליישום. פקדי כרטיסיה תפריט מבוסס-כרטיסיה (דומה ללשוניות של תיקיות. קבצים) סרגלי כלים. תפריט מבוסס על גרפיקה. 4 321חווו ומבוא ל-ספו פקד תיאור תווית הלחצן תיבות טקסט זעירות שנפרשות במקום בו מוצב הסמן. מיועדות בדרך כלל לתיאור לחצנים בסרגל הכלים. סרגלי עקיבה פקדים שמבוססים על וחלן (מזכירים פס גלילה, אך דומים לפקד העוצמה של מערכת סטריאו). פקדי תצוגת ע' תצוגה במבנה של עץ. פקדי למעלה/למטה. חיצים בכיוון מעלה ומטה. כשהם קשורים לתיבת ו עריכה הם נקראים פקדי חוקף. פקדים אלה נקראים פקדים משותפים (ט0זוחס חסוחוז0ס), מכיוןך שהם מייצגים. קבוצה גדולה שמנוצלת על ידי מספר גדול של יישומים. בוודאי פגשת בפקדים אלה אור בחלקם במהלך עבודתך בחלונות. פרק זה עוסק בתיאוריה וביישוס של פקדים משותפים בתוכניות. בנוסף הוא מטפל בסרגלי כלים ובתוויות הלחצן (בהמשך נעסוק בפקדים משותפים נוספים) 1 הכללה ואתחול של פקדים משותפים בטרם תוכל להשתמש בפקדים המשותפים, עליך לכלול בתוכנית את קוב הכותר התקני חזוסוווזס6. בנוסף, עליך לוודא שספריית הפקדים המשותפים מקושרת אל התוכנית שלך (בעת כתיבת הספר, ספרייה וו נקראה 00/01/32.18, אך מומל שתעיין בתיעוד של המהדר שברשותך). יישומים העושים שימוש בפקד משותף אחד או יותר, חייבים לקרוא תחילה לפונקציה. ()וסחססחסוחוחס0כ6וח .1‏ פונקציה. וו מבטיחה את טעינת ספריית .גוס של הפקדים המשותפים מהדיסק, ואת אתחול תת-מערכת הפקדים המשותפים. להלן משפט ההגדרה לפונקציה (001) 01 00 מס 284 1 המקום המתאים להצבת הקריאה לפונקציה זו הוא אחרי המחלקה של החלון הראשי בתוכנית. פקדים משותפים הם חלונות בטרם תמשיך, חשוב להבין שכל הפקדים המשותפים הס חלונות-בנים. יוצרים אותם. באחת משלוש הדרכים הבאות: על ידי קריאה לפונקציה ()אוס6חו/9%ו3סזס, על ידר קריאה לפונקציה ()00005ו//0/6309, או על ידי קריאה לפונקציית ממשק תכנות יישומים (לא) ייחודית לפקד (הפונקציה ()אַאס6חו/6:6316 מאפשרת לציין מאפיונר סגנון רבים). פקדים משותפים הם למעשה חלונות, לכן ניתן לנהל אותם באופן דומ לוה של חלונות אחרים בתוכנית. פרק 12: פקדים משותפים ‏ 305 פקדים משותפים רבים שולחים לתוכנית הודעות מסוג סאהואואסש שא אר אזדסא ואו כשהמשתמש מפעיל אותם. במקרים רבים מגיבה התוכנית על ודי הודעת פקודה באמצעות פונקציית 1 שנקראת ()5606/%655309. להלן ההגדרה לפונקציה זור ,0 פאנצט ,תוומ סא8) 60685896מ50 צמטפמתג (מ1858 מנפתק1 ,ה8פמקש ממהתתקה במקרה זה, שחאווח היא ידית הפקד, ויו היא ההודעה שברצונך לשלוח אל הפקד, והפרמטרים וחפזגלאו ו-וחפּזהק! מכילים מידע נוסף שקשור להודעה. הפונקציה מחזירה. תגובה מהפקד, אם יש כזו. סרגל הכלים הפקד המשותף הנפו ביותר הוא סרגל הכלים (00031). רכיב וה הוא במהותו תפריט. גרפי שאפשרויות הבחירה שלו מיוצגות על ידי סמלים בצורת לחצנים. לעיתים קרובות. מתלווה לסרגל הכלים תפריט תקני המהווה אמצעי חלופי להפעלת אפשרויות שונות. ליצירת סרגל כלים, הפעל את הפונקציה ()0315ו016319100, לפי דוגמה זר סתסא ,456/16 מתסוום ,טמא כאחחת) םעפמ 001ד68)0צס פוחו 6פמתת מסותלפוד ,פתסם:טפתטת פמ1 ספטמ פע ,תנקתה סתסט 0 טפתותת פח+ ,1006 אהס6סטם 5ה1 ,מ186אה60סטם שח+ ספוא %ח1 ,ת66נאקא שחג (5596 צמוצט במקרה זה, חח היא היידית של חלון האב שסרגל הכלים שייך לו. הסגנון של סרגל הכלים מועבר באמצעות 6%56/86. סגנון סרגל הכלים חייב לכלול את. 0 5+ ויש אפשרות שיכלול גם סגנונות כגון 808058 5/צ או 151815 א קיימים שני סגנונות ייחודייס לסרגל כלים שתוכל לכלול. הסגנון 101195 =/דפמד למשל, מאפשר להציג תוויות לחצן לרכיבי ההפעלה השונים (בהמשך הפרק נרחיב בנושא התוויות). הסגנון > וקו 785/15 מאפשר להציג סרגל כלים ארוך. הפרמטר 10 מעביר את המזהה 1600086 שקשור לסרגל הכלים. הפרמטר טוט מעביר את מספר הלחצנים שבסרגל הכלים. הפרמטר זז מעביר את. ידית המופע של היישום. הפרמטר 8710 מעביר את המוהה של משאב מפת-הסיביות. שיוצרת את סרגל הכלים. פחסזוט8 מצביע אל המבנים (69ז60ט50) של המערך דד880ד, שאליו מועברים נתוני הלחצנים. פחסשטפוחטא מציין את מספר הלחצנים שבסרגל הכלים. 8 מכיל. את הרוחב של הלחצן, ו-וחסשאחסטט8 מכיל את גובהו. חוטווקוא מכיל את רוחב הסמל של הלחצן, ו-וחסאקו8 מכיל את גובהו. אס משתני הרוחב והגובה של הלחצן מכילים את הערך 0, התוכנית תתאים בעצמה את מימדי הלחצן לגודל מפת-הסיביות. הנתונה. 5056 מכיל את גודל המבנה של אסדטפד. 6 כו ומבוא ל-ספו הפונקציה מחזירה ידית לחלון של סרגל הכלים. לכל לחצן קשור מבנה אסדדטפפד אשר מגדיר את תכונותיו השונות. להלן המבנה אסדדטפפד | אסצצטמטע 565006 6465מעט 110 486 1 + מצצם 1 מצצם פא פהסאום 15 פח4 סט ממ [ קסזו8: מכילל את האינדקס של תמונת מפת-הסיביות של הלחצן. האינדקס של הלחצנים מתחיל ב-0, והם מוצגים משמאל לימין הפקודה הקשורה ללחצן נמצאת ב-6חפוחוח600ו. הלחיצה על הלחצן יוצרת הודעת. סאאויוויוסס ו אשר נשלחת אל חלון האב. הערך המספרי של 806וחוח000 נשמר בחלק הנמוך של המילה וזאי המשתנה 8550306 מכיל את המצב ההתחלתי של הלחצן. הוא יכול להיות אחד, או יותר. מהערכים שמציגה הטבלה הבאה. טבלה 12.2: הערכים של המשתנה 550366 מצב משמעות 0116050 פדאד85ד | לחצן לחו. ₪ ופאש דהד5פד | לחצן פעיל. אפספזו 185116 | לחצן מוסתר ובלתי פעיל. שדהאזואהמדטסא פדד85ד | לחצן אפור ובלתי פעיל. 851108855606ד | לחצן לחו. קההא מדאד5פד | הלחצנים הבאים נמצאים בשורה חדשה. פרק 12: פקדים משותפים | 307 המשתנה 56/5 מכיל את סגנון הלחצן, ויכול לקבל צירוף חוקי כלשהו מתוך רשימת. הערכים הבאים. טבלה 12.3+ הערכים של המשתנה 55/6 סגנון משמעות אסדדטם ם ודספד | לחצן תקני = .יד85ד | הלחצן מחליף את מצבו ממסומן ללא-מסומן. ולהיפך, בכל פעם שלוחצים עליו 0880668000 = דד | לחצן סימון שהוא חלק מקבוצה בלעדית. טס וו ק680 = ידפפד | לחצן תקני שהוא חלק מקבוצה בלעדית. 56 6/ד95ד | מפריד לחצנים (בסגנון שחפוחוח600! חייב לקבל. את הערך 0 שים לב לסגנון 56 85115ד. סגנון וה משמש לקביעת מרווח בין לחצנים בסרגלל הכלים, ומאפשר להפריד את הלחצנים לקבוצות. השדה 6030 מכיל נתונים המוגדרים על ידי המשתמש. השדה פַו0פ! הואא אינדקס. המחרוות הקשורה ללחצן. אם איין ברצונך להשתמש בו, קבע לו את הערך 0. תצורת המחדל של סרגלי הכלים מאפשרת להם לפעול באופן אוטומטי לחלוטין ללא כל צורך בהתערבות מצד התוכנית. יחד עם ואת, ניתן לטפל בהם ידנית באמצעות. שיגור הודעות בקרה (16553065! וסחס0ס) מפורשות בעזרת הפונקציה ()5001655906. להלן שלוש הודעות שכיחות. טבלה 12.6: הודעות בקרת (16553065! (סעוחמ) הודעה אסדד 06008 8ד אסדדטפם ₪81 8ד אסדדטפסזוו 8ד 8 3271חווו ומבוא ל-ספו משמעות. לחיצה או מחיקה של לחצן. וחפזפל/ו חייב להכיל את. מספר הציהוי של הלחצן. וחפזהקו יקבל ערך שונה מ-0. עבור לחיצה, או 0 במקרה של מחיקת לחצן. קביעת מצב הפעילות של הלחצן. וחפזס/ו חייב להכול. את מספר הציהוי של הלחצן. וזזקו יקבל ערך שונה. מ-0 להפעלת הלחצן, או 0 לביטול הפעלתו. הצגה או הסתרה של לחצן. וחפזלוו חייב להכיל את. מספר הזיהוי של הלחצן. וחּזק! יקבל ערך שונה מ-0. להסתרת הלחצן, או 0 להצגתו. סרגלי הכלים גם מסוגלים ליצור הודעות שתפקידן להסב את תשומת ליבה של התוכנית לפעולות שונות הקשורות בסרגל הכלים. אם סרגל הכלים פשוט, אין צורךך להתייחס להודעות אלו (כל ההודעות מסוג וה מתחילות במחרוות -א18, ניתן ללמודד עליהן באמצעות קובץ הכותר ת.אשוחוחסס, או מתוך תיעוד ספריית ממשק תכנות היושומים, ז0א), יצירת מפת-סיביות של סרגל כלים כדי להשתמש בסרגל הכלים עליך ליצור תחילה את התמונות הגרפיות שמכילים. הלחצנים, בעזרת עורך הדמות. תהליך יצירת הגרפיקה של הלחצן דומה ליצירת סמל בודד. עם ואת, יש להביא בחשבון נקודה חשובה: קיימת רק מפת-סיביות אחת שקשורה לסרגל הכלים, ועליה להכיל את כל דמויות הלחצנים. מכאן, אס סרגל הכלים מכיל שישה לחצנים, אצי מפת-הסיביות שלו חייבת להגדיר שש דמויות. לדוגמה, מפת-הסיביות של סרגל כלים שמכיל שישה לחצנים שכל אחד מהם בגודל. 6 סיביות, תהיה בגובה של 16 סיביות ובאורך של 96 סיביות (6416). סרגלי הכלים המוצגים בפרק זה כוללים שש דמויות, כל אחת בגודל 1615 סיביות. כלומר, יהיה עליך ליצור מפת-סיביות בגודל 1696 סיביות. תרשים 12.1 מראה כוצד מציג עורך הדמויות את מפת-הסיביות שיוצרת תוכנית ההדגמה שמובאת בפרק זה סרגל הכלים ישמש כתפריט חלופי עבור תוכנית הגרפיקה המופועה בפרק 11. שמור את מפת-הסיביות בקובץ בשם קוו8. 88 ו100. הוה ושע 8 [ א תרשים 12.1: מפת-הסיביות של סרגל הכלים במצב עריכה. פרק 12: פקדים משותפים ‏ 309 תוכנית לדוגמה של סרגל כלים פשוט התוכנית 016001412 הבאה (נמצאת בתקליטור 12ַספאו03012) מוסיפה סרגל. כלים לתוכנית הגרפיקה שבפרק 11. סרגל הכלים מכפיל את אפשרויות התפריט, ומאפשר להציג שורות, מרובעים ואליפסות. ניתן גם להזיו את ראשית הצירים, להגדיל את התמונה ולהציג תפריט עזרה. להלן התוכנית של סרגל הכלים. 0 106 < 1 > 1006סה1 <.565188> 166סה1 <.56810> 166סה1) "ת.12טעסקאם1/" שבטבסה1 ".2050208" 01006ה /+ .פטת8סאם מעסמאש1ט שמ 884 אסמת1א שמ) ,סה בהנמפפה שמף 68פ */ (132א) 46110680 48 מטפץ 32אצא 15 4867106 8 פפנתף 32אדא 15 שת44671 0 (0%80000000 > ()99100ם660) (001ם) 66 32אתאן ד פוה 15 367106 6 א 15) !) (001ם)- 66 2באנא 18 25באצא 15 4069186 ((4> ( (() 655108 65) פהסאס1) צעמ ) 2באתאו 15 66 ((325אדא 15)! 66 (מא 18)!) (מססם) = 5פאצא 15 שה%8671 310 065ת68פה) ממסעצטם //‏ ;פפחדת מסאתת5) ( סאם1 *5פהתסטוהו 8)א0 | 0186020195 מססם ( 1016001085 18 ;"ססתעפו" = בהפוקקתפפק1 תפפסק1 2" 012מ0גט פרק 12" 1529161 8שפפסט1 /* פחַת1ע0פ ממוקסטס 18סה */ ;[255] 862 צבתם /* 10080108 מטקטוס מהמצצטם */ 7-00 ,0-א פהג /* פמס!פהסת1ם ה0286ב */ ;צצבת ,לאה פתג ממ פוחו [5 סנ ןתטא!] ‏ סש שגומ אספייטם עד קת32ח/ו ומבוא ל-0פו פרק 12: פקדים משותפים ‏ 311 2 סלאו ומבוא ל-ספו 0001<-0אפ1 = 4>מא0150טם, אסס 10-00 = בעסאמבה0פם אססט 06ה2ספהזת<-0אק1 = בסהב)פחזת אססט = סו 0 ת<-0א1 = 100 אס 186-540 = 5046%950088טת, אססר הק 1<-סש1 = שחבאנוה5200ק1, אססר ;2018550886פק1<-6שק1 = 6ה5201458%4ק1 אמסא .95 8088ה1ן עס? פממסה10ם 54068 // / : 0 (59ה:סטוח)) 512005 = 5126טס אסס ;("תנתעם" ,פסה8םפחדה. אפסא)ה1086160 = מפת00ס1ת אסס |( 66068 )8ם8601866201859 תפטם> 15 תג 95 פשסבה1א עע 681158 18 מס1טסתגת גמד */ /*. פטפטף 80פפשת סת5 הסע: 8068פמת הצקא אתתתפה ,ספפגו פמדט ,במות כומוט | 0ספפבחח אסהמננתס נטפטתת ( הגפגפ1 עתתתק1 ספ ספ ד טתעפעוותק ;הנס ,תשמאס1נסעמ ,מסקפטנפת ,הסקמססעסת ,הסמטסהת אמק 10סבמט /* שנשמגת 460108 [מטטעגט סמש 6ע0:ם */ סבתסת ספא 56261 /* מפתפגם [הטסענט שמ: 6026פ */ ;שגמם קמותנמא 202616 /* ב[4הגת תפטעם שמ 55026 */ קמפמעמבנסת ,מפועמת אפטתמא 512610 07 = לַע ,0 = 6%עם שה1 262616 ( ו )1 4 0 6 ( )60 = אמ תפצ 5) 2105 0595068066 = צאמת /* 809108 ססגה1 עעכתפה 10מ1סבקמסם ב בלמת */ 8 660 = ספה 0 026 = חס פרק 12: פקדים משותפים | 313 4 הלבחו ומבוא ל-ספו פרק 12: פקדים משותפים ‏ 315 6 7א32חאו ומבוא ל-ספו פרק 12: פקדים משותפים 317 8 3271חאו ומבוא ל-0פו פרק 12: פקדים משותפים ‏ 319 0 32371חאו ומבוא ל-0פו רוב הקוד בתוכנית אינו דורש הסבר נוסף. נתאר אותו בקצרה (וכור, כל שורות הקודד שאינן מתייחסות לסרגל הכלים, הוסברו בפרק 11). נתוני סרגל הכלים שמורים במערך 5חטוש8פ). הפונקציה ()6100/831וח1 מאתחלת את המערך. שים לב שהמבנים החמישי והשביעי במערך הם למעשה, מפריד לחצנים. הפונקציה ()חוג!וחוו קוראת. לפונקציה ()ו0ח0סחסוחוח660וח1. לאחר מכן, נוצר סרגל הכלים וידית משוייכת ל-0חאפו. כל אחד מלחצני סרגל הכלים מקביל לאפשרות בחירה בתפריט הראשי. ליתר דיוק, כלל לחצן (למעט המפריד) קשור אל מספר מזהה (פ1) בתפריט. כשלוחצים על לחצן כלשהו, המספר המוהה הקשור אליו נשלח אל התוכנית כחלק מהודעת ‏ 00 יוא כאילו בחרו באפשרות התפריט המקבילה. למעשה, אותו משפט 6356 מטפל בלחיצות. הלחצנים ובבחירה מתוך התפריט. סרגל הכלים הוא חלון, ולכן ניתן להציגו, או להסתירו ככל חלון אחר באמצעות הפונקציה ()60%חו/00ח5. להסתרת החלון, בחר באפשרות ‏ 66וובתוך. זפטוסטד (הסתר סרגל כלים) בתפריט אוו (אפשרויות). להצגתו מחדש, בחר אסחפ ‏ בתוך זגטפסד (הצג ססרגל כלים). מאחר שסרגל הכלים חופף חלקית את אזור הלקוח בחלון. הראשי, עליך לאפשר למשתמש להסיר את סרגל הכלים אם אין צורך בו. ניתן לראות. בתוכנית שפשוט מאוד לעשות זאת. ראוי לציון נקודה נוספת בתוכנית. שים לב לקוד המופוע תחת המשפט 6356 דטספא, אפ1. כשבוחרים וספ (עורה, באמצעות התפריט הראשי, או בלחיצה על לחצן ק|6), נשלחת ההודעה אסדדט8א0/180 .8 וגורמת ללחיצת הלחצן וז שבסרגל. הכלים. לאחר שהמשתמש טוגר את תיבת ההודעה 60 חוזר הלחצן באופן ידני. מנגנון זה מאפשר ללחצן להישאר במצב לחוץ, כל עוד מוצגת תיבת ההודעה קפא כך. הדגמנו כיצד ניתן לטפל בסרגל הכלים באופן ידני במסגרת התוכנית. תרשים 12.2 מציג פלט לדוגמה של תוכנית סרגל הכלים. 0 ו םאט תוס וש מ | - ומ תרשים 12.2 ולט לדוגמה של תוכנית טרגל הכלים. פרק 12: פקדים משותפום ‏ 321 הוספת תוויות לחצן בוודאי הבחנת שחלונות 9% מציגה על המסך חלונות טקסט זעירים כשסמן העכבר שוהה על גבי סרגל הכלים במשך שנייה בקירוב. חלונות אלה נקראים תוויות לחצן (פקטוססד). תוויות הלחצן אינן חיוניות לפעולתו, אך יש לכלול אותן ברוב סרגלי הכלים, מכיון שהמשתמש מצפה לראות אותן. בקטע זה נוסיף תוויות לחצן לסרגל. הכלים. כדי להוסיף תוויות לחצן לסרגל הכלים, עליך לכלול תחילה את הסגנון 005 דד בעת יצירת הסרגל. סגנון זה מאפשר שיגור הודעות אנדס ואר כשהסמן שוהה מעל לחצן כלשהו במשך שניוה בקירוב. עם קבלת הודעת זהנדסא א/וו, יצביע וחפזפקו אל מבנה דאפדק1ד001ד, המוגדר באופן הבא: 5 [ ות האור 1 תתקב [80] 599686 טבמ פסונתלפוונ 15פט פאצט 1 הסט [ האיבר (ז6פוח6!!) הראשון של דאפדק1דו00ד הוא המבנה 8פו!ו', המוגדר כך. 565006 6465פעט [ /* בסצמתסם 08 418מה */ קהסעת4תאת סאמ /* מז 1מעמתסם */ /מ0עק18 מאצט /* 006 ה1116610מסת */ 20867 פאצט ;תסו ן כשמגיעה דרישה להצגת תווית לחצן, 6066 יכיל את זאפדספפא אד ו-6500 וביל. את המספר המוהה (10) של הלחצן הנדון. קיימות שלוש דרכים להצגת תווית הלחצן המבוקשת; ניתן להעתיק את הטקסט של התווית אל המערך ‏ 86זא9 של זאשזק1דו00ד, להצביע אל הטקסט בעורת :216%פק!, או לספק את המספר המזהה של משאב המחרוזת. כשבוחרים באפשרות משאב המחרוות, א26ק! מקבל את המספר המוהה של המחרוות ו-ופחוח חייבת להיות הידית של משאב המחרוות. הדרך הקלה ביותר היא להצביע בעזרת זאטז;פק! אל מחרוות שמספקת התוכנית. לדוגמה, משפט 6 הבא מגיב לבקשה של תווית לחצן בתוכנית הגרפיקה. 2 כו ומבוא ל-ספו /* םע מ500151 0 בהסספם: */ 194580 (47פצט10100101) = מאשמעם (צאממסמפון אע == 0086.ע08<-56%1ע1) 18 (608ע18, ש₪ם<- 966 160 5 856 1 נ"68ת11" = 6א8296ם1<-מאמשעעי וע תע ספת 100 856 : ;"806168 טסה" = 8270%6כ1<- :אמ אמצ פפד מס 100% 856 "21110865" = 5א6ל42ם1<-0א66עצ הפצ 1 /"050 שמהגתס" = 5296%5ם1<-:4לד 8%פצ 1 18 886 "8186 088" = 429686ם1<-מאש6עעי 8%שצ (%מסעם לאחר שנבחר הטקסט המתאים והשליטה חורה למערכת ההפעלה, תוצג תווית הלחצן באופן אוטומטי. אין התוכנית צריכה לבצע פעולה נוספת כלשהי. כפי שנוכחת לדעת, השימוש בתוויות הלחצן הוא אוטומטי ופשוט מאוד להוסיפן ליישומים. תוכנית סרגל הכלים בשלמותה, כולל תוויות לחצן לפניך תוכנית סרגל הכלים ₪ -12זזסקאוטוט בשלמותה, כולל תוויות לחצן. גירסה זר מנצלת את קובץ המשאבים וקובץ הכותר ששימשו את הגירסה הקודמת. התוכנית. נקראת 0 12מזסטוושו והיא נמצאת בתקליטור 5 12אזסקאושש12ק6. תרשים 12.3 מציג פלט דוגמה של התוכנית. 1008 < 91 > 106סה1 <565180.3> 01066ה1 <56810.5> 166סה1 "ה.ם 12פעסמאם1ע" בהטבסה41 ".2650268" 1006סה1 פרק 12: פקדים משותפום ‏ 323 /* .פפתסמאם מעסקאםנט שמ: 4ת2 אסתנא ש) ,סת הַהנקקגה שמש 6%ם */ (1832א) 46018680 418 מטהד 32זאן 19 4401106 8 מפתתס 32נן 15 4401106 3 (0%80000000 > ()מ10פעםע600) (נססם) 26 2באצת פד תא 15 40:10 6 (צא 15) !) (001פ)/ 66 2באנא 15 325אצא 15 שה40661 ( (4> (() 65508 0) הסוס ) 20 2 15 56 ((25באצא 15)! 66 (פא 18)!) (נססם) ‏ 95אצא 15 בה40681 =סתמספה1 מהסעעמם // = קמפחדת מסאתדפאצת ( 6אם1 *5פהןסטוחן 7פאא0 | 0186020195 מססם 2 ( 1016200185 18 "ממתעון" = בהפאמקת2פק1 תעפפסק1 8ש1מ01סם מט1א 12מעסמא0גט פרק 12" 52101 8עפפסקב /* 10020108 שמקטטס מהשעצמס */ 7-02 ,0- פתג /* פהס!פתסת01 ה50266 */ ;לצבה ,לאה שג ממ פאחו ; וסינ מוזטו!] 8 מסמטגופמ>. אספיטם מע פסוותדפאונ ,בסהבופהנת מסותצפַנא ) תןבעתגח צהפנמנעת 5ב 16 ,8ת651ה0ק1 תל5לק1 ,ססהגופה1שםצקת 0 |[ פה 6 ו | פע 55 נספו? .01858 606ה₪1 מ1108610מקם הצממ ש(ף צב5פ1חָסת // - ;אתהספחט 05 | התתסטתם פס 8 /* מס1ששחנת 6ס8ה1א */ ק00צקםתא (ססהפפותו) ו = 00א0180מ0 סט = 8ש6אש4ת0מ0. 0 /* בסתבופה1 18ת: 0 15התגת /*‏ ;מסתם6פתדת = | פסתבספתדת סט 4 לכהו ומבוא ל-ספו פרק 12: פקדים משותפים ‏ 325 6 ה32חו ומבוא ל-ספו 15 תג 95 פשסבה1א ענ 081158 18 מסנססתםת גמד */ /*. פטפמף 86פפשה סת5 מסע: 58068פשת הבפגתא אתתתפה ,ספמ עתצט (4מות סומוה ) 00פפבחח אסהמננתס נטפמתנ ( הבטגפ1 עתתתק1 פמ ספ סע אפ 1 סספקת ד טהץפעוותק ,0068ס3+611 ,תשקשטנם( ,מ6קה0566( ,השמטשאת אפפא 568610 0 /* שנשהגת 460166 1פטסעגט שמ5 6ע0:ם */ קסבתסת ססא 25261 /* מפתסום [בטספנט שמ: 0026 */ ;שגמת פמותזמא 2:2:16 /* ב[4הגת תפטעם שמ) 55026 */ קמפטעמבנסת ,מפועמת אפטתמא 512610 07 = צפעס ,0 = 6%עם מה1 262616 ( פַפ )1 [ תפ 0 858 ( ו )00556 = אמ 0 )6105 ה5ע05 0 = לקמה /* 809108 סִסגה1 עעסתשה 10ע1סבקתסם ג בלמת */ (8ו) ₪60 = ספה 268000 = ס חס (צאגת ,אצבה ,ססמ) 80ה0861016810ה2045000 = שגפמ (18 ,₪46שה) 1605003668 ; (מפטתם מצעאא) 6%5600%00[666ם (אפטהטא) = הפטעפה (מגעם ,)1605003665 (289008% ,אבה ,הצפה ,0 ,0 ,סבתשת)16פוגק (((68)55,100,80ת ,1 ,50015 פק)מסקם"סעם = ה6ק0שחה ;((8)0,255,0ת ,2 ,50210 0268)25:בשעם = תסקהטשעמה ;((968)0,0,255 ,3 ,50119 5ק)ת0246096 = מסקסטנמה ;((0 ,255 ,255)מת ,4 ,דם50 5ת)ה08:20עס = השקש110צה /* תשק 8558016 שמש *] (ה8606ו ,66ח6ה) 8616060060 (אפפא) = משקטבסת 01 01000 פרק 12: פקדים משותפים | 327 8 32371חאו ומבוא ל-0פו פרק 12: פקדים משותפים 329 0 זקת2בח/ו ומבוא ל-60ו פרק 12: פקדים משותפים ‏ 331 + צטספה 10% 486 /*208860ק 88 מספסטם עוסמם אסמם */ תק 1) ,אסאס מע ,האס ) 58806 (1 (מאהתקא) ,צטסמה סד ,"אסמ6טסמה" ,6פה1ם | א0פף10ה1ם ( גוסה (00פ10ם) /* הססומכ מנשג פמ) 6שפשח */ וס 6586 (06 פוא ודטספת סד ה [שפט א 108 486 ( 8 6 0 1 וצ /* 26086 מת1גקסת ב 06685עם */ נעאדתק ומן ספמ /* 6ם 668 */ ;(ססטעץפםה1גם2 ,6תאת) מת1גפה1סם = ספת /* 46608 מעסאט1ט 84ב 806ה1 ,במסה הַהנמקגת 50% */ ונת וע ו ; נממטא ,200 ,200 טא ,ל 0 0 6 נטות ,00 ,פע )001 /* מ66עספ סמתס בהַגה1 עעסחסה עמסס ואסה */ ;(צ580009 ,0 ,0 ,66תשח ,צאפה ,אאת ,0 ,0 ,סעמ)6נמוגם /* ספ 18886שע */ ;(ססמעם58ת81ק2 ,במות) מת1בקבתם %צ + צסמצפפם 06 856 (מקמשתה) 808 61650001 10 (מ6ט81) 80% 0001 610% ( 10 1 )808 61050003 /* 860105 עעסתסת סמ5 8816%6 */ <; (ס4הפה) 00ט1סם (0 0 %צ 616 ;( ( מבצגק1 ,תבנהקא ,הפמו ,המאת ) 00שק40ת0001ם | תעמ ם? 0 2 זא2בחווו ומבוא ל-ספו פרק 12: פקדים משותפים ‏ 333 114 ?2 = 080ש181 [2]שה0םםממם ו /5פפפנמתם עת1 = 6מ8מת1800 [2]שה0םמממם ,ממתפתום מפתל85? = 1830266 [2]שהסםםמממו ;וסצצטם ממצל5פץ = 183616 [2]שמס>םמממם = 460868 [2] 608 :מממ ף ;0 = הַת3ע155 [2]שמס6םמממם /* ע0מבעג00פ הסססטמ *] ;0 = 080ז181 [3]שה0םםממם ו / = 0888ת1400 [3] פה0םםמממף ,ממתפתום מפתלפםץ = 1830260 [3]שהסםממםף ;פמ ממצע85ת = 1856/16 [3]שהסםםמממף = 6868 [8]3ה60םטמםף ;0 = אַת1ע155 [3]פתס6םטממף ;3 = 080ש181 [4]פת60םממםף /128פ עפז = 4מ88ת1800. [4]פה0ממממף ,ממתפתום מפתלפמץ = 1830266 [4]פהסםםמממו ;וסמדטם ממצלפפץ = 183616 [4]שהס6םמממף = 88868 [8]4ה0)םטמםף ;0 = אַת1ע155 [4]פתס>םמממף ;4 = 1810080 [5]פתסםממםף ;08 עפ = 888ת1800. [5] פהסםמממם ,ממתפתום מפתלפםץ = 1830266 [5]פהס>םמממף ;וסידטם ממצלפפת = 183616 [5]שהס>םמממף = 868פא8. [5]פה60םטמם 3 ;0 = אַת1ע155 [5]פתס>םטממם = 080ז181 [6]פהס6םמממם / = 140080884 [6] פה0םםמממם ;ממתפתום מעתלפהץ = 1850266 [6]שה0)ממממו ;פמ ממעלפהץ = 1856/16 [6]שהס)ממממם = 82868 [8]6מ0)םמממם ;0 = הַת1ע155 [6]שתס>םמממף 5 = 088ז181 [7]שה60םמממם ;צטסמג עפז = 14000888 [7]שת60םטממם ;מממפתום מפתלפמץ = 1830266 [7]שה0ממממו ת32ח/וו ומבוא ל-0פו ;ווסצצטם ממעעפמץ = 1826/16 [8]7ה60ממטמף 0 = ב6מסא8. [5]7ה60םטממף = 1859186 [8]7ה60םטממף ₪ 0 קל ומהומהוסטאהם אפ שנמם, ואום ומר אם, ו 3 תרשים 312.3 לט דוגמה של תוכנית סרגל הכלים בשלמותה, כולל תוויות הלחצ בפרק הבא תמשיך לחקור את הפקדים המשותפים, פקדי מעלה-מטה (שנקראים ג פקדי חוק5), פסי עקיבה (5וג8 1136%) ופי התקדמות (8315 הק פרק 12: פקדים משותפים ‏ 335 פיק 13 פקדים משותפים נוספים בפרק וה תמשיך לסקור את הפקדים המשותפים של חלונות א9. כאשר תתמקד בפקד מעלה-מטה (חוסס-ק0), פס העקיבה (ז7136698) ופס ההתקדמות (ז83 סק 1 פסקדי מעלה-מטה אחד הפקדים השימושיים ביותר הוא פקד מעלה-מטה ((סשחס0 חווסס-ק0). פקד זה הוא, למעשה, פס גלילה (ז83 ו/50) ללא הפס! הוא מכיל רק את החיצים שבקצות פס. הגלילה, אך אינו מכיל את הפס שביניהם. בוודאי הבחנת כי קיימים יישומי חלונותת שפסי הגלילה שלהם קטנים ולמעשה, חסרי משמעות. קיימים גם מצבים שאינם מתאימים לעקרון של פס גלילה, אך מפיקים תועלת מהשימוש בחיצים. כדי לתת מענה למצביט כדוגמת אלה, יצרו מפתחי חלונות 9% את הפקד מעלה-מטה, הדומה מאוד לפס הגלילה. ניתן להפעיל פקד מעלה-מטה באחת משתי דרכים: כפס גלילה עצמאי, ובשילוב עם. פקד נוסף, שנקרא חלון חבר (ווסטחוו /8066). חלון החבר הנפוץ ביותר הוא תיבת עריכה (80% 56). במקרה זה, נוצר פקד חוספ (או זשחחופ). כשמשתמשים בפקד חוסף, המערכת מספקת את כל התקורה הדרושה לטיפול בפקד באופן אוטומטי, ולכן קל מאוד להוסיפו ליישומים. בפרק זה נציג שתי דוגמאות לפקדי מעלה-מטה. בדוגמה הראשונה ניצור פקד עצמאי, ואילו בשנייה נשלב את הפקד עם חלון חבר, כדי לקבל פקד חוקפ. להזכירך, פקד ח/קפ הוא למעשה, פקד מעלה-מטה מקושר לתיבת עריכה. יצירת פקד מעלה-מטה ליצירת פקד מעלה-מטה, הפעל את הפונקציה ()/0ח60חאו0סק003160. המתוארת. להלן ו 16 0 6ת1 0 46 סהסוופ) 01 תס הסט טטם+ה6צס. פוחו ,0 6ת1 ,6תמעגתת סוחות ,מא שב אגות שת1 ,קמטטפת קוחהו ,מפתדת מסַתצפאצ נ(50428208 שה1 (מגת ממ4 6 321חווו ומבוא ל-ספו כאן, הפרמטר 50/6 מציין את סגנון הפקד. פרמטר זה חייב להכיל את הסגנונותת מוזו פו, 15185 פא ו-8שסחס .פ/ו, ויכול להכיל גם סגנון אחד, או יותר מאלה המופיעים בטבלה 13.1. המשתנים א ו-ץ מעבירים את הקואורדינטות של הפונה השמאלית-עליונה של הפקד. שוש ו-וחִסטו מצלינים את רוחב הפקד וגבהר זחפזפקה מעביר את הידית של חלון האב. המספר המוהה הקשור לפקד מוגדר על ודי הפרמטר 19. חח מעביר את ידית המופע של היישום. 8066 מעביר את ידית החלון. החבר. אאם לא קיים חלון חבר, פרמטר זה חיייב לקבל ערך טא. טווח הפעולה של הפקד מועבר על ידי הפרמטרים 8%/) ו-חו/ו. אם אפו! קטן מ-חווא, הפקד ינוע בכיוון ההפוך. המיקוס ההתחלתי של הפקד (חייב להיות בתחום שהוגדר עבורו) מועבר על ידי 180905 הפונקציה מחזירה ידית אל הפקד. טבלה 13.1: הסגנונות של פקד מעלה-מטה. סגנון משמעות. א16\, פס | מיישר את הפקד לצידו השמאלי של החלון החבר. ד א16א. פס | מיישר את הפקד לצידו הימני של החלון החבר. 5פ)שסהאא 5 | מאפשר הפעלה של מקשי החיצים (כלומר, מאפשר להזיו את הפקד בעזרת מקשי החיצים). יססטפסדטא 5פט | החלון החבר הוא החלון הקודם בסדר החלונות. 2 5פט | פקד מעלה-מטה הוא אופקי (תצורת המחדל של פקדים אלה היא מאונכת). פפואפטסודסא 5סט | אין שימוש בפסיקי הפרדה בערכים גדולים (ישים לפקדי חוספ בלבד). דאז/יססטפד55 005 | מארגן אוטומטית את הטקסט בחלון החבר כשמשתנה. מיקום הפקד, מאפשר לחלון החבר להציג את המיקום. הנוכחי של הפקד. תאצ 005 | מיקום הפקד יחוור להתחלה בעת ניסיון להציזו מעבר לנקודת הסיום. פרק 13: פקדים משותפים נוספים ‏ 337 הודעות פקד מעלה-מטה כשלוחצים על אחד מחיצי הפקד, הוא שולח הודעת 90801 אוו אל חלון האב שלו. וחמזגק| יכיל את הידית של הפקד. הודעות 0568011 וא עשויות להישלח על ידי פקדים שונים, ולכן יש לבדוק אס ההודעה שב-וחפּזפק! נוצרה על ידי פקד מעלה-מטה. לקבלת המיקום החדש, שלח הודעת 651005 | אל הפקד (נייתן לשלוח את הודעות. הבקרה באמצעות ()596%655396). הפונקציה מחזירה את המיקום הנוכחי של הפקד. בנוסף להודעת 661905 0%%, פקדי מעלה-מטה מגיבים להודעות נוספות. טבלה 13.2 מציגה את ההודעות הנפוצות ביותר. לדוגמה, התוכנית יכולה לקבוע את מיקום הפקד בעורת הודעת 561005 וסט. טבלה 13.1: הודעות מעלה-מטה מקובלות. הודעה 338 6618 וסט וט וט 5 וסט וסט ד ופט משמעות. מקבלת את הידית של חלון החבר, שנמצאת בחלק הנמוך. במילה של הערך המוחזר. ב הק/ו הדא 0. ג הוא 0. מקבלת את המיקוס הנוכחי, שנמצא בחלק הנמוך במילה. של הערך המוחזר. וחב ב// הדא 0. ג הוא 0. מקבלת את התחום הנוכחי. הערך המקסימלי נמצא: בחלק הנמוך במילה של הערך המוחזר, והערך המינימלי נמצא בחלק הגבוה במילה של הערך המוחזר. ב בק// הדא 0. ג הוא ס. מגדירה חלון חבר חדש. מחזירה את הידית של החלון החבר הישן. חבז בקע הוא הידית של החלון החבר החדש. וק הוא 0 קובעת את המיקום נוכחי. חב בלו הוא 0. 3 173 הוא המיקום הנוכחי החדש. קובעת את התחום הנוכחי. וקו הווא 0 1331 הוא החלק הנמוך של המילה מכול את הערך. המקסימלי; החלק הגבוה של המילה מכיל את הערך. המינימלי. ת32ח/וו ומבוא ל-0פו הפעלת פקד מעלה מטה התוכנית חושספקט הבאה יוצרת פקד מעלה-מטה עצמאי בתוך תיבת דו-שיח. בדוגמה. זו הפקד אינו מקושר לחלון החבר. תחום הפקד הוא 0-100, ומיקומו ההתחלתי 50. כל. פעם שמשנים את מיקום הפקד (באמצעות לחיצה על החץ), מוצג המיקום החדש באזור הלקוח של תיבת הדו-שיח. התוכנית בשלמותה נמצאת בתקליטור חוססקט13קו) . (הבסיס לתוכנית זו היא 0 תיבת הדו-שיח בתוכנית מכילה את הפקד מעלה-מטה. תרשים 13.1 מציג דוגמת פלט. של התוכנית. הפקד נוצר כאשר מאתחלים את תיבת הדו-שיח באמצעות הקוד הבא: 8 0268 = 8 (מתמנפזט פא | תפפהסם בא | מתזאס פוף ,10 10 עגפת אסספט פד 6פמצת טר 50 ,0 ,100 עס 37 גלט של תוכנית הדוגמה הראשונה של פקד מעלה-מטה. פרק 13: פקדים משותפים נוספים ‏ 339 הקריאה לפונקציה ()סטחסחווססקטפו6/63 יוצרת פקד מעלה-מטה במיקום 10,10 בתוך תיבת הדו-שיח. גודל הפקד בפיקסלים הוא 50א50. הפקד הוא חלון-בן של תיבת. הדו-שיח, ולכן הידית שלה (6חו0) מועברת כידית אב. המספר המזהה של הפקד הוא: אעוססקט פ1. הדוגמה שלפנינו היא פשוטה ואינה וקוקה לערך זה, אך תוכניות אחרות עשויות להזדקק לו. וזו היא ידית המופע של התוכנית. הפרמטר החבר מקבל ערך 011 כיון שאין כאן שימוש בחלון חבר. תחום הפעולה של הפקד הוא 0 עדד 0, והמיקום ההתחלתי הוא 50. כל פעם שניגשים אל הפקד, נשלחת הודעת 058011 וז אל תיבת הדו-שיח. הקוד שמטפל בהודעה יוצג בהמשך. וחפזגלו מכיל את הידית של הפקד. הידית נבדקת ומוחזרת על ידי הפונקציה ()סטתסחווססק90ו63ז6, במטרה לוודא את והות הפקד שיצר את ההודעה. הדוגמה שלפנינו כוללת פקד אחד בלבד, ולכן הפעולה נראית. מיותרת. לעומת זאת, יישומים מעשיים עשויים להכיל פקדים רבים, שכל אחד מהם. מסוגל ליצור הודעה, ולכן עליך להקפיד לבדוק את והות הפקד. /* 01עתסס מ806-ט תב 06658עק ע1בפמהבת /*‏ :0/5001 אא 456 (חבשבק1 (סומומ) ==6תא8) 15 ((0 ,0 ,פספדמ6 מפט ,0708ט) 08555800ה56 = סקט ; ( (סקמט) ס8סו10 ("%0" ,65)52005562מ1צקפט ( גפ )8600 = ספמ ספ 0 " ,30 ,55 ,ספה)5ס6 אע ;((168)82005552עץפ ,42805562 ,30 ,55 ,ספמ)5טסמאמל (ספו ,6 נסמ) 1589600פת 0 / לקבלת המיקום החדש של פקד מעלה-מטה שולחים הודעת 661905 00% באמצעות. ()56001695306. המיקום נמצא בחלק הנמוך של הערך המוחור, והערך מוצג באזור הלקוח של תיבת הדו-שיח. 2 יצירת פקד חוק5 אין רע ביצירה של פקד מעלה-מטה עצמאי ובשימוש בו, אך בדרך כלל הוא קשור לתיבות עריכה. כשפקד מסוג וה משולב עם תיבת עריכה, נקרא פקד חופפ. חלונות אפ. עושה שימוש נרחב בפקד חוקפ, והיא מספקת אמצעי תמיכה מיוחדים עבורו. למעשה, פקד חוק> הוא אוטומטי לחלוטין ואין צורך לייעד לו משאבים כלשהס מתוך התוכנית. כדי ליצור פקד חוף, עליך להגדיר פקד עריכה כחלון חבר של פקד מעלה-מטה. לאחר מכן, יוצג המיקום החדש של הפקד בתיבת העריכה בכל פעם שיחול שינוי כלשהו בפקד. בנוסף, אם תשנה ידנית את הערך שבתיבת העריכה, יתבטא הדבר מייד בפקד. 0 321חווו ומבוא ל-ספו תוכנית לדוגמה של פקד חוק5 יצירת פקד חוספ היא תהליך פשוט המתבצע בשני שלבים. ראשית, הוספת תיבת עריכה. לקובץ המשאבים של התוכנית. שנית, העברת ידית התיבה כחלון חבר בעת יצירת פקד. מעלה-מטה. התוכנית בשלמותה נמצאת בתקליטור חוקפ13קַ3ת0. תרשים 13.2 מציג דוגמת פלט של התוכנית. | מא תרשים 13.2: דוגמת פלט של תוכנית ההדגמה של פקד חוסף. כדי להבין כיצד נוצר פקד חזסף, עיין בקוד של 06נסדנוון ו 6350 להלן 1 0 56 1 10 ,66868מ)6650191%68 = במאאסמפת 00 = מ | פנמנפנט ₪5 | תפסהסם פא | פתזאס פא ,685נמאסצמת פפט | פאצעססטמצפט פפט 1010 0 ,אאספפט פד 1 0 1000 1 תיבת הדו-שיח מוגדרת בקובץ המשאבים, ולכן התוכנית חייבת לקרוא לפונקציה (ְ1ְָ610 כדי לקבל את הידיות שלה. להלן ההגדרה של ()00/0106. (18 6מ1 ,18108עמ סאחם) 6501016 פומ הפונקציה וַחִפוזָפ661 מחזירה ידית אל הפקד שנבחר. הידית של תיבת הדו-שיח שמכילה את הפקד מוגדרת ב-פטווסו. 10 מעביר את המספר המוהה של הפקד. במקרה של שגיאה, מחזירה הפונקציה ערך 1וטא'. פרק 13: פקדים משותפים נוספים ‏ 341 ברגע שהתקבלה הידית של תיבת הדו-שיח, היא מועברת כחלון חבר אל הפונקציה ()00ח60חאו016316000. ברגע שנוצר הפקד בשילוב עס תיבת העריכה בתור החלון החבר שלו, חל קישור אוטומטי של השניים, ונוצר פקד חוקף. 3 פס העקיבה אחד הפקדים המצודדים ביותר מבחינה חוותית, הוא פס העקיבה (זהטאגזד), שנקרא: לעיתים גם פקד גררה (5/691). פקד זה מוכיר בצורתו את הגררה המצויה בסוגי ציוד אלקטרוני רבים, כגון מערכות סטריאו. פקד וה מכיל מתג שנע בתוך מסילה. התוכנית. מטפלת בו באופן דומה, למרות שמראהו שונה לחלוטין מפס הגלילה. פסי עקיבה שימושיים במיוחד כאשר שתתוכנית מיועדת לפיקוח על התקן אמיתי לדוגמה, פסי עקיבה הם אמצעי מעולה לשליטה באקוולייור גרפי וקביעת עקומת התדרים שלו. ליצירת פס עקיבה, השתמש בפונקציה ()630600/, | או בפונקציה ()64ו000ו/0103161.. האחרונה. מספקת מפרט מוגדל יותר של סגנונות. אין צורך במפרט הסגנונות המוגדל עבור פס העקיבה בדוגמה שתוצג בפרק, אך ייתכן שתמצא לו שימוש ביישומים שתכתוב. מחלקת החלון (0859 אוסחו/) של פס העקיבה הוא 5 800888ד, ולמעשה זהו העיצוב של החלון. סגנונות של פסי עקיבה מגוון סגנונות עומד לרשותך ביצירת פס עקיבה. הנפוציס שבהס מופועים בטבלה 13.3 ברוב המקרים תכלול את הסגנון 5א16דסדטא ‏ 85ד, מכיון שהוא מציג סימני מידה ועירים לצד מסילת הגררה. סימנים אלה הס הסרגל (סקאלה) של פס העקיבה. טבלה 13.3: אפשרויות הטגנון של פס העקיבה. סגנון האפקט החזותי שלו דא 85ד | סימני מידה לצד מסילת פס העקיבה 2 85ד | פס עקיבה אופקי (ברירת המחדל) דחפ 85ד | פס עקיבה אנכי סדדספ 85ד | סימני מידה בתחתית הפס (ברירת המחדל) קסד 85ד | סימני מידה מעל הפס. דפ 85ד | סימני מידה משמאל לפס. 16 85ד | סימני מידה מימין לפס. הדספ 85ד | סימני מידה משני צידי לפס. 2 זא32חווו ומבוא ל-ספו משלוח הודעות פס העקיבה בדומה לפקדים משותפים אחרים שפגשת, גם כאן מעבירים הודעות אל פס העקיבה באמצעות הפונקציה ()5600%/699306. טבלה 13.4 מציגה את ההודעות הנפוצות של פס. העקיבה. קיימות שתי הודעות שיהיה עליך לשלוח כמעט תמיד. 5578865 וד ו-561905 18%. הודעות אלו קובעות את תחום הפעולה של הפקד ואת מיקומו ההתחלתי, בהתאמה. לא ניתן לקבוע מאפיינים אלה בעת יצירת הפקד בעורת 0 ( טבלה 13.6: הודעות אופייניות של פס העקיבה. הודעה ד הד אד 60 פד 5 ד ב 566 אד 566 פד משמעות. קבלת המיקוס הנוכתי. וחבו לאו וא 0. וקו הצא 0 קבלת התחום המקסימלי של פס העקיבה. בבק הא 0. וק הדא 0. קבלת התחום המינימלי של פס העקיבה. וב לאו וא 0. ו ק! הדא 0. קביעת המיקום הנוכחי. וח בובא מקבל ערך שונה מ-0 לצורך ציור הפקד מחדש, או 0 בכל מקרה אחר. ₪3 03| מכיל את המיקום החדש. קביעת תחום הפעולה של הפקד. וח בובא מקבל ערך שונה מ-0 לצורך ציור הפקד מחדש, או 0 בכל מקרה אחר. ₪3 03| מכיל את תחום הפעולה. קצהו התחתון של. התחום נמצא בחלק הנמוך של המילה, ואילו חלקה. הגבוה מכיל את קצהו העליון. קביעת התחום המקסימלי. הח בהאי מקבל ערך שונה מ-0 לצורך ציור הפקד מחדש, או 0 בכל מקרה אחר. ₪ 03| מכיל את הערך המקסימלי של תחום הפעולה. קביעת התחום המינימליי חוזהקווי מקבל ערך שונה מ-0 לצורך ציור הפקד מחדש, או 0 בכל מקרה אחר. חוּזהל! מכיל את הערך המקסימלי של תחום הפעולה. וחגז3ל! מכיל את הערך המינימלי של תחום הפעולה. פרק 13: פקדים משותפים נוספים ‏ 343 טיפול בהודעת פס עקיבה כשפונים לפס העקיבה, נוצרת הודעת הגלילה )8080 /. החלק הנמוך של המילה. וחבזבקאו מכיל ערך שמייצג את מהות הפעולה. וחפזגק! מכיל את הידית של פס העקיבה. שיצר את ההודעה. טבלה 13.5 מציגה חלק מההודעות המקובלות של פס העקיבה. טבלה 13.5: הודעות ח00063000ח אופייניות של פס העקיבה. הודעה משמעות. ואסדד80 8ד | נלח מקש סאפ ; הגררה הגיעה עד לערך המינימלי דסא ד | סיוס פעולת פס העקיבה. אצוסספאז פד | נלח מקש חץ ימינה או חץ למטה. לטסא ד | נלחץ מקש ח שמאלה או חץ למעלה או0פפ6. 8ד | נלחץ מקש 060%, או לחיצה בעכבר לפני הגררה. אק 8ד | נלחץ מקש 60ק, או לחיצה בעכבר אחרי הגררה. אסנדן05קפויוט1ד פד | הגררה הוזוה בעזרת העכבר. א6חדפויוטזד ד | הגררה נגררה בעזרת העכבר 0 8ד | נלחץ מקש פואסו? תוכנית הדגמה של פס העקיבה התוכנית 113 הבאה מוסיפה פס עקיבה לתוכנית הקודמת של פקד חוקף. כשתריי אותה, תיווכח לגלות כי כל שינוי בפס העקיבה גורר שינוי מקביל בפקד חוף, ולחיפךך באופן וה ניתן להדגים שליחת הודעות וקבלתן על ידי פס העקיבה. תרשים 13.3 מצוגג דוגמת פלט של התוכנית. התוכנית בשלמותה נמצאת בתקליטור 13וא638013. ה תרשים 13.3 יוגמת פלט של תוכנית פס העקיבה. 4 321חווו ומבוא ל-ספו עם הצגת תיבת הדו-שיח נוצריס הפקדים חוף ופט העקיבה. תחום הפעולה של פס. העקיבה נקבע ל-0 עד 10 בעת יצירתו, והגררה מוצבת על הערך 5 (התחום והערך ההתחלתי האלה ניתנים גם לפקד חוק). שים לב שהתחום נקבע בעורת המאקרו (560א//, אשר מצרף שני ערכים שלמיס (ִזטפח1) לערך שלס ארוך. זוהי תבנית. הפקודה ; 49 פפסא ,106 סתסא) סאסזפאתוו ספסוום הפרמטר אופ! מכיל את החלק הנמוך של המילה הכפולה של הערך הארוך, והפרמטר. סח מכיל את חלקה הגבוה. המאקרו ()6806/% שימושי מאוד במקריס שיש צורך. לקודד שתי מילים לערך שלם ארוךך כל שינוי בפקד חוף גורר הודעת 2508011 ו ושינוי מיקומו של פס העקיבה בהתאם /* 1סע6ת0ם 80₪8-קט 206585 */ :0/5001 א 450 | ( עב (פצשוא) ==08 )1 ((1 ,תנטא ,1ממ 10 ,ַבפת)5תדת86010156 = 5ס0%0ב2ף ,1 (עתהתקאו) ,507708 אב 0 ; (פ0ס80% (נתהתקם) 1 מצטטם, משפט 636 שתואר מקבל את הערך החדש מתיבת העריכה באמצעות קריאה לפונקציה ()00זוח9ז1/פ601. הפונקציה זהה לפונקציה ()ַאפדוַחִפוזְָו660, שלמדת בפרק 5, למעט העובדה שהיא מחזירה את הערך השלם השקול לתוכן בתיבה, ולא טקסט. לדוגמה, אם התיבה מכילה את המחרוזת 102, ()8ה0610/010671 תחזיר את. הערך 102. מובן שהפונקציה ישימה לתיבות עריכה שמכילות ערכים מספריים בלבד. ווהי התבנית שלה. 12 הג ,100ג1קת )16 ת60 0101 (510068 מסס₪ ,ע0עעס* מססם ומוס מעביר את ידית האחיזה של תיבת הדו-שיח שמכילה את פקד העריכה. פד מעביר את המספר המזהה של תיבת הדו-שיח. אם תיבת העריכה אינה מכילה ערך. מספרי חוקי, תחויר הפונקציה את הערך 0, שהוא ערך חוקי לכל דבר. לכן, הצלחת. הפונקציה, או כשלונה מובעים על ידי משתנה שהמצביע אליו נמצא במשתנה זסזזם. משתנה וה יקבל ערך שונה מ-0 במקרה שהערך המוחזר הוא חוקי, ו-6 במקרה של שגיאה. אס תעדיף להתעלם משגיאות מסוג וה, תוכל להגדיר )ש! במקום הפרמטר בפונקציה. הפונקציה תחזיר ערך עם סימן (6חפ50) במקרה שהפרמטר 6ַ6חִחפ שונה. מ-0, או ערך ללא סימן בכל מקרה אחר. לאחר שנשלמו ההגדרות בתיבת העריכה, הן מועברות לפס העקיבה באמצעות הפונקציה ()5600%655306. כך, כל שינוי בערך פקד חוספ יתבטא באופן אוטומטי בפס. העקיבה. פרק 13: פקדים משותפים נוספים ‏ 345 כל תנועה של פס העקיבה גורמת לקבלת הודעת )456804 א/, שמטופלת כך. /* 20512668 פא עבמא0ב) */ :םתסת50ג אא 450 /* צגמאסםצם ססה */ (אשעם (מב:גק1(קאום) =! במאאסגצצה) ,1 | ( (מ8צבפא) פתסא10) 166 0-ל 56 /* ש1מהמאם 18מם עמק +/ 0 ל 86 /* 6ם 0111 מ0ף80פפפת בנג */ אאספמטד1 מל 486 /* 806 שץ ת1 68868סמצם */ /* .ע04 */ :אסצצנפספמעטמץ פע 480 המעט מע 456 וטפד1 29 6886 ופטפסתק ל 486 אאספפסתק 25 486 ,087905 מע ,800000:תג) 8608005580 = 08 א0געם 0 ;(1 ,08ק6%גע: ,1מם פד ,ַנפמ) 50:010160016 1 6 כשהמשתמש מציו את הגררה של פס העקיבה, מתעדכן המיקום באופן אוטומטי, והתוכנית פטורה מלטפל בכך. התוכנית מקבלת את הערך החדש של פס העקיבה לאחר הזותו, ומנצלת אותו לעדכון פקד חוקף. הערך שמכילה תיבת העריכה של פקד זה נקבע בעורת הפונקציה ()8ח1וסו5610/01. הפונקציה מבצעת את הפעולה ההפוכה. של הפונקציה ()%ח6610/01861 שתוארה לעיל. וכך היא נכתבת ,12 6ה3 ,4100 נפת סאא) 5650101660186 מססם (66ת510 מסס ,4108ט פאוצט הפרמטר פָסוגוסח מעביר את ידית האחיוה של תיבת הדו-שיח, שמכילה את פקד העריכה. 10 מעביר את המספר המוה של תיבת הדו-שיח. טופ מכיל את הערך שיש. להציב בתיבת העריכה. א הפרמטר 50066 מכיל ערך שונה מ-0, ניתן להעביר מספרים שליליים. אחרת, מתייחסים לערך שהוא מכיל כמספר ללא סימן (6חפפח) במקרה של הצלחה מחזירה הפונקציה מספר שונה מ-0, ובמקרה של כישלון היא מחזירה 0. בדוגמה, ניתן להויו את פס העקיבה בעורת העכבר, או המקלדת. למעשה, המספר הגדול של ההודעות מסוג = 18 מיועד לתמוך בממשק המקלדת. נסה לבטל מספר הודעות ובדוק את התוצאות. הזיקה בין פס העקיבה ופקד חוקפ בתוכנית שהצגנו היא שרירותית לחלוטין, ונועדה. לצורך המחשה בלבד. ניתן לשלב ביישומים פסי עקיבה שפועלים בצורה עצמאית. 6 321חווו ומבוא ל-ספו 4 פס התקדמות פס ההתקדמות (88 695ז00זק) הוא אחד הפקדים הפשוטים מתוך הפקדים המשותפים החדשים. בוודאי ראית כבר פס כוה בפעולה. פס התקדמות הוא חלון צר וארוך שמציג את התקדמות הביצוע של משימה ממושכת. לדוגמה, פסי התקדמות מקובלים מאוד בתוכניות התקנה, תוכניות העברת קבצים ותוכניות מיון יוצרים | את פס ההתקדמות בעורת הפונקציה ‏ ()00310000000, = אר ()0000/86ו/6703161, בעזרת הגדרת מחלקת חלון 855 01 55פ068הק. שיגור הודעות פס התקדמות התוכנית מנצלת את הפונקציה התקנית ()5606655306 כדי לשלוח את הודעות פס. ההתקדמות (פס ההתקדמות אינו יוצר הודעות כלשהן). בדרך כל יישלחו הודעות. לקביעת תחום הפס והצגת מהלך התקדמות המשימה. טבלה 13.6 מציגה אחדות. מההודעות הנפוצות של פס ההתקדמות. תחום המחדל של פס ההתקדמות הוא 0 עד 100, אך ניתן לתת לו כל ערך בין 00 ל- .65,535‏ הצגת התקדמות המשימה תועשה בדרך כלל באמצעות הודעת דןקסד5 8ק. ההודעה גורמת לפס להתקדס במנות קבועות מראש, שנקראות פסיעות. (5009). גודל המחדל של פסיעה הוא 10, אך תוכל לשנותו לפי הצורך. הפס ילך ויתמלא ככל שתקדם את מיקומו. פס ההתקדמות משמש להצגת ההתקדמות בביצוע המשימה, ולכן במצב מלא הוא מייצג השלמת המשימה ב-100% תוכנית פשוטה של פס התקדמות התוכנית פפפַזפַָסזם הבאה מדגימה כיצד משתמשים בפס ההתקדמות. התוכנית יוצרת. תיבת דו-שיח שמכילה פס התקדמות ולחצן שנקרא פ655זסָסזק. תחום פס ההתקדמות. הוא בין 0 ל-50, וגודל הפסיעה שלו 5. בכל פעם שלוחצים על הלחצן, מתקדם פס ההתקדמות פסיעה נוספת. ברגע שהפס מלא, נעלמת תיבת הדו-שיח מהמסך באופן אוטומטי. טבלה 13.6: הודעות נפוצות של פס ההתקדמות. הודעה משמעות 5 ומק | מקדם את פס ההתקדמות בפסיעה בגודל מסוים. מוחזר המיקוס הקודם. וחפזמקאו מכיל את גודל הפסיעה החדשה. חובּזבק| הוא 0. 5505 ואפק | קביעת המיקום של פס ההתקדמות. מוחזר המיקום הקודם. וחמּזקאו מכיל את המיקום החדש. חוּזבק! הוא 0. פרק 13: פקדים משותפים נוספים ‏ 347 הודעה משמעות 8 98% | קביעת התחום של פס ההתקדמות. התחום הקודם מוחזר. כשערכו המקסימלי בחלק הגבוה של המילה, וערכו המינימלי בחלקה הנמוך. הדא 0 וחהּזהק! מכיל את התחום. ערכו המקסימלי בחלק הגבוה של. המילה, וערכו המינימלי בחלקה הנמוך. קפד5ד56 אק | קביעת מנת ההתקדמות (הפסיעה). מוחזר גודל הפסיעה. הקודם. חזהזהל/ו מכיל את הפסיעה החדשה. הבוק הוא 0. דקפז5 ואפק | קידום הפס בהתאם לגודל הפסיעה. וחפזמקוו הוא 0. חובזהק! הוא 0. תרשים 13.4 מציג דוגמה של פלט התוכנית של פס ההתקדמות. [; 11001655 3 816 וכ ו תרשים 3.4 יוגמה של פלט התוכנית של פס ההתקדמות. התוכנית בשלמותה נמצאת בתקליטור 655זָזק13תס. יש לוכור שפס ההתקדמות נועד לתת למשתמש ביטחון שהתוכנית מתקדמת באופן תקין. לכן אתה צריך לעדכן את פס ההתקדמות בתדירות גבוהה. וכור, המשתמש. סומך על המידע שמציג פס ההתקדמות, שמעיד שהתוכנית עדיין פועלת. אס תשנה את. הפס לאט מידי, משתמש קצר רוח עלול לאתחל את המחשב במחשבה שהתוכנית. קרסה! בפרק הבא תמשיך ותלמד על פקדים משותפים נוספים: שורת המצב (850 518005), פקד הכרטיסיה ((סטחס6 טבד) ופקד תצוגת העף (ו0חס6 אאסוע סוד 8 32371חווו ומבוא ל-ספו וק 14 מבט נוסף על פקדים משותפים בפרק זה תוצג סקירה נוספת על הפקדים המשותפים של חלונות א9. נתמקד הפעם. בחלון המצב (וווססח!/ 53005), פקד הכרטיסיה (וסשחס6 טגד) ופקד תצוגת עץ (6פזד חס אוסוש). לתשומת לבך, חלונות א9 כוללת פקדים משותפים נוספים שאותם. תרצה בוודאאי לחקור בעצמך. 1 חלון המצב לעיתים יש צורך לדווח למשתמש על מצב משתנים, מאפיינים או פרמטרים בתוכנית. בעבר הגדירה כל תוכנית לעצמה את הדרך בה נעשה הדבר. חלונות 9% הנהיגה פקד תקני למטרה זו, שנקרא חלון המצב (ו00חו 513005) אר שורת המצב (880 513005 חלון המצב הוא שורה שמוצגת לרוחב תחתית המסך, וכוללת מידע הקשור לתוכנית. תיווכח לדעת שקל ליישם את שורות המצב. שילוב שורת מצב ביישוס כרכיב שגרתי מאפשר ממשק עקבי להצגת מצב חיישום. יצירת חלון מצב ניתן ליצור שורת מצב בעורת הפונקציה (010300502005/0002. בנוסף, יש להביא בחשבון ששורות מצב הן חלונות, ולכן ניתן ליצור אותן בעורת ()10306/006000 אר (00/ו60חו616306,. בציוך מחלקת החלון ש51810501//59%. כדי להמחיש. זאת, ניצור שורת מצב בעורת הפונקציה ()00ח//9ו0163 (תוכל, כמובן, לעשות זאת בכל' דרך אחרת). חלון מצב יהיה בדרך כלל חלון בן. יוצרים אותו בעזרת הסגנון 151815 5ו, ולכן הוא: גם יוצג באופן אוטומטי. הקוד הבא יוצר חלון מצבב 55 5070501) 0566601860 = 8מאפטט 568 /* 68פט ססת */ ,"" ,מתפנפנט בא | סמנאס פף /* 1000268 ת10פ1פסק הג 8128 */ ,0 00 ,0 00 פרק 14: מבט נוסף על פקדים משותפים ‏ 349 /* מהסעגם 01 1שהגת */ ,המאת טא /* 388816 שסמ4מפה1 */ ,%פמצת טא כפי שמשתמע מההערה בתוכנית, לא מעבירים את הפרמטרים של גודל החלון ומיקומר אל הפונקציה ()אוַחוו6:6319. חלון המצב מתאים את עצמו אוטומטית לחלון האב, ולכן אין צורך בפרמטרים אלה. חלון המצב מתחלק בדרך כלל לחלקים (למרות שאין כל פסול בחלון שמכיל חלק אחד. בלבד). ניתן לכתוב טקסט בכל אחד מחלקי החלון בנפרד, כאשר ההתייחסות לחלקים. השונים נעשית באמצעות אינדקס (האינדקס של החלק הראשון הוא 0). הודעות חלון המצב חלון המצב אינו יוצר הודעות כלשהן, אך התוכנית יכולה לשלוח הודעות מצב באמצעות הפונקציות התקניות ()5600/695308. טבלה 14.1 מציגה. את ההודעות. הנפוצות של חלון המצב. טבלה 18.1: ההודעות הנפוצות של שורת המצב הודעה 150 קד 58 ד 58 משמעות. קבלת הקואורדינטה של צד ימין של כל אחד מחלקי החלון. מחזירה את מספר החלקים של שורת המצב. וחבזפקוי מציין את מספר חלקי חלון המצב. וחפזבק! הוא מצביע אל מערך של מספרים שלמים (0ח1) שיקבל. את הקואורדינטות של צידו הימני של כל חלק. גודל המערך צריך להיות לפחות כמספר החלקים בשורה. קבלת הטקסט מהחלק שצויין. המילה הנמוכה בערך המוחזר מכילה את מספר התווים בטקסט. המילה הגבוהה מכילה ערך. שמתאר כיצד להציג את הטקסט. אם היא מכילה את הערך 0, הטקסט יוצג בגובה נמוך מהחלון. אם היא שווה. ל-דט0ק20 -581, הטקסט יוצג גבוה החלון. אס היא שווה ל-0885ה080 -581, הטקסט יוצג ללא גבול (80106). זאו מציין את האינדקס של החלק המבוקש. ובזק! מצביע אל מערך תווים שמיועד לקבל את הטקסט (ודא: שהמערך גדול במידה הדרושה ויכול להכיל את הטקסט). קת32ח/ו ומבוא ל-0פו הודעה משמעות. 55 58 | ציון מספר החלקים בשורת המצב. מחצירה ערך שונה מ-0. במקרה של הצלחה, ו-0 במקרה של כישלון. ובלוו מציין את מספר החלקים. ובזק! הוא מצביע אל מערך של מספרים שלמים, שמכילים. את הקואורדינטות של הצד הימני של כל אחד מחלקי השורה. דאפדדק6 58 | הצגת הטקסט בחלק השורה שנבחר. מחזציר ערך שונה מ במקרה של הצלחה, ו-0 במקרה של כישלון. וחבזבּל/ו מציין את האינדקס של חלק השורה אשר יקבל את. הטקסט ואת אופן הצגתו. התוכנית מבצעת פעולת 0 בין האינדקס וערך התצוגה. אם ערך התצוגה הוא 0, אזי הטקסט. יופיע בגובה נמוך מהחלון (ברירת המחדל). אס ערך התצוגה הוא דטסק0ק 581, הטקסט יוצג גבוה מהחלון. אם הוא: 0805 -581, הטקסט יוצג ללא גבול (801690). אם ערך התצוגה הוא שוההסחטוזצוס -581, יוצג חלון האב. וחבזפק! הוא מצביע אל מחרוות המיועדת להצגה. כמעט כל היושומים שולחים הודעות 551985 58 שתפקידם לקבוע את מספר החלקים של שורת המצב, ג זאפדז56 58 שכותב טקסט בחלק מוגדר של חלון המצב. להלן התהליך הכללי ליצירת שורת המצב. 1. צור את חלון המצב. 2. קבע את מספר החלקים בחלון בעורת הודעת 5610815 58. 3. כתוב טקסט בכל אחד מהחלקים, בעזרת הודעת זאודד55 58. מרגע ששורת המצב עברה את שלב האתחול, תוכל לעדכן את חלקיה השונים בהתאם. לצורך, על ידי שיגור הודעת דאפדד59 58 הפעלת שורת המצב התוכנית 93 .50365 הבאה (בתקליטור 6₪8014) מציגה את ההגדרות של תיבת הדו-שיח באמצעות שורת מצב. תיבת הדו-שיח מכילה פקד חוק5 ושתי תיבות סימון 8069 6866%). בכל פעם שחל שינוי באחד הפקדים, מתעדכן הסטטוס שלו בשורת. המצב. פרק 14: מבט נוסף על פקדים משותפים ‏ 351 להלן תוכנית שורת המצב (ז9פ 569805). תרשים 14.1 מציג פלט לדוגמה של התוכנית. <ה. 5916008 101086 <ה. בשףשמחסם> 41001886 "מ צבט פש5580" 4301086 <ה.55016> 43061086 מטפד 1832 15 6ה40661 /* .צגכ פט21:ם ב ב6ב+ןפהסחסם */ 3 פפהתקחטות 4401106 356866 מהמפעגם // פפחדה פסונתלפווצ "808ט8680" = בהפאסקתפפק1 ת0957ק1 ("צגם 8ג80ב5פ ב הַתנפע" | = 271:16פק1 תעפפסק1 (0ש1 *5פת1ססומ פאסס) 0186820195 מססם ; [8 הלפט ספא 486 ; (בתזזת פעמוא) 1016568005 18סט מעםסאם 5 פחו מסוותפפות3 ,הספת מסותפפאנה) תובעתגז צהפונמנעת 45 (שסתפ4תסת 186 ,סהנמנתסק1 1057 ,ססהגופה1טםצקת 4 ח סאחור 55 תסו קאתהסמחע 05 | אתתספפע פס 8 40 מ (ססתקפזהו) ב 01 ₪ ₪ ו 0 ₪ (סמבאמסת82ם1 ,68מ5:8הדמ) ת1088160 0 וספת 100 ,)0800 ו ; (1+אספוננאו הסמסס) (מפטתפ2) = במטספףס8מעמת סט ;במפאקקתלפם1 = סמגמטהס2פ1 סט ;סמפאממת182 = 1820128088 סט 2 3271חו ומבוא ל-ספו פרק 14: מבט נוסף על פקדים משותפים ‏ 353 4 הלבח ומבוא ל-ספו )| (685888ת) 160 1 /* עגט 8ג8ב86 בגט 1811181126 */ ;(שנקה) פט6ם9%ם1תד ;(881 מז ,ַַמ)מ8602181%6 = במאאסממה 0568660000 = שמאמט | מממדפנט ₪5 | הפסהסם פא | סנאס פה ,108האסצנת פפט | צאצצספטמעפ פסט 10 10 7 ,וטספ פד 1 0 ; (2/מ316 ,106 ,משגת ; (פט9פ) מעםם, /* בסצשת0ס 8008-קט 88מססעק */ :ם01ת50/ 10 56ם ) (הע בק (סמום) ==886ג) 45 ;(1 ,תמטא ,גמם פז ,מנסה)%מ1ת060010155 = פסקשט (8סקטט ,"%6 :מ606-קט" ,ע51)85ת1צקב 50 58 ,5626506 ) 0655806 ;56 (מתתתע1) ,0 (אתתתקא) 1 ג (פטתע) מעמסע 0 5 | ( (מ8צבפא) פתסא10) 180פ /* 1 א0מ0%שתש 88מססעק */ :081 10 פמ ,1 פ1 ,16סת) 801016080658806ת36 = 568005081 :(0 ,0 ,אספאסספם עמ ;("אס 1 הס1סמס" ,51)865ת1עספ (80205081) ,1 ;("9פ0 1 מס1סמס" ,51)852ת1עק5 156 5 55 ,6 05806 :56 (מתתתפ1) ,1 (אתתתקק) ; (פטתפ) תעטםם, /* 2 אסמאסהם 8פשססעם */ :082 10 286 ,92 פ1 ,סנסה) 80101608/6658896מ56 = 258008082 :(0 ,0 ,ספאסספם אמ ;("אס 2 הס1סמס" ,51)869ת1עספ (80205082) ]1 ;("פפס 2 מס1שמס" ,ע51)85ת1עקט 186 5 5 ,6 05806 :56 (משתתתפ1) ,2 (אתתתקק) ; (פטהפ) תעטשם, פרק 14: מבט נוסף על פקדים משותפים ‏ 355 6 זקת2חו/ו ומבוא ל-60ו 5 5 5 (פספגם (ותתתסם) ,פצהתקמטוו (אתתתקאה) ,0 (אתפתפא) ,1פעע50 58 ,6מ88ט0 1568 855806 (("10 :0אס-קט" (אתתתסם) ,1 (אתפתפ) ,%1םעע50 58 ,6מ88ט5680ת) 6048058806 ;("צש0 :1 תס1שקס" (שתמתסם) ,2 (אתהתפ) ,דמעמ 58 ,3568008886 855806 ;("פש0 :2 הס1סקס" (אתמתסם) לתוכנית דרוש קובץ המשאבים הבא: <ה. 4008ת01> 0106ה1ף "ה 56865" פט1סה1ף טאפו טאוועצת |[ שנס 158 ,"6018108" מפענטופע פמפא עפ1 ,"6861" מפשנטופע סט טסה טונמונצ [ צפאצאנט ,6סמגזט עמז ,2ע אט צפאצתנט ,פמסא עם1 ,1ע אא 2 ,50 ,18 ,18 מסמתנם מסצע "ש8ם 58608 8 866ש6פמסהשם" א10עעמס טופמפצט ₪5 | אסצצפהס פ₪ | פטפספ פא | מאהתענתססות 8ם מתצלפ |[ ,4 ,37 ,34 ,92 ,חמפפא 10 ,"משמשמ" אסעצטמאפטפ פסצפמאל פ₪ | מממדפנט פא | סמצאס פא ,4 ,37 ,53 ,92 ,1008 ,"אס" אסעצטמאפטפ פסצפמתל פ₪ | מממצפנט פא | סמצמס פא | פנצאס פא | 1899 ₪5 ,12 ,30 ,10 ,10 ,גמם סד פאמצטנסם הפמתסה ₪5 | מתמנפנע פף 2 ,48 ,40 ,10 ,1מס פד ,"1 תס1טקס" אסמאסטאססצטת 2 ,48 ,60 ,10 ,02 10 ,"2 מס1טפס" אסמאספאסספטת פרק 14: מבט נוסף על פקדים משותפים ‏ 357 קובץ הכותר דרוש גם הוא לתוכנית:א. 636 0 פסמתזק פד 385110 11| פתסא מז 4401108 12| אוסספט 1 401108 13 1מם פז 4001108 14 1 פז 4001108 15 2 מז 3001108 6 צספסת מז 4401186 5 ₪ ₪-- | 2 הפונקציה ()05/305ח1 שמופיעה בתוכנית, יוצרת את חלון המצב ומאתחלת אותו שורת המצב מחולקת לשלושה חלקים שווים. חלוקת השורה מתבצעת בעורת פונקציית 871 שנקראת ()0860ח681016. הפונקציה מקבלת את הגודל הנוכחי של אזורר הלקוח של החלון שנבחר. זוהי תבנית הפקודה. (600הק1 פסמתפ1 ,שמא סוחאא) 58606ה650116 מססם שוח הוא הידית של החלון הנדון, ו-866פ! הוא מצביע אל המבנה ז856, אשר מקבל את מימדי אזור הלקוח של החלון. שורת המצב מורכבת משלושה חלקים, ולכן רוחב תיבת הדו-שיח מחולק לשלושה (הרוחב. מתקבל באמצעות הפונקציה ():8860ח60/0). תוצאת החלוקה מתורגמת. לנקודות הקצה של חלקי החלון, אשר מוצבות במערך 5זק. זכור, יש להעביר לחלון. המצב את נקודת הקצה של כל אחד מהחלקים, ולא את רוחבם. לאחר שנקבעו חלקי. השורה, ניתן להציג בהם את הטקסט. הפונקציה ()פָסו מעדכנת את הטקסט שבכל אחד מהחלקים, בכל פעם שחל שינוי בפקד. הדבר נעשה על ידי משלוח הודעת ז6%ד551 58 לחלק הקשור אל הפקד ששינה את מצבו. 8 3271ח/ו ומבוא ל-ספו נקודה נוספת אודות חלונות מצב: אם משנים את גודל חלון אב, הוא יקבל הודעת 8 ו עליך לשלות הודעת 5126 תא אל חלון המצב בעורת הפונקציה ()0%/655306ח56, כדי לאפשר את שינוי גודל חלון הבן במקביל. לדוגמה, אס ברצונך לאפשר שינוי אוטומטי בגודל חלון המצב שבדוגמה הקודמת, כאשר חל שינוי בגודלל תיבת הדו-שיח, הוסף את משפט 6356 הבא לפונקציה ()טפָסוום. עליך, כמובן, ליצור את תיבת הדו-שיח בעורת הסגנון 512580% 5או. 56 (ממצ8פ1 ,עתתתקא ,5128 104 ,80 )8058806 8%פצ תוכל לנסות להוסיף זאת בעצמך, אך וכור שהשיטה לא תגרום לחלקים עצמם לשנות. את גודלם. השורה תתארך עד שתמלא את החלון. כדי לשנות את גודל החלקים, עליך. לשלוח הודעת 56108815 58 בציון גודלי החלקים החדשים. 2 פסקדי כרטיסיה אחד הפקדים המעניינים ביותר מבחינה חזותית, הוא פקד הכרטיסיה ((סשחס6 טגד. פקד הכרטיסיה מתפקד ככרטיסיה של תיקיית קובץ. בחירה בפקד זה מציגה את התיקיה הקשורה אליו בחזית התצוגה. הפעלתו של פקד הכרטיסיה קלה ופשוטה, אך מסובך במקצת לתכנת אותו. בסעיף זה נציג את את העקרונות הבסיסיים של פקד הכרטיסיה, ובסעיף הבא נמשיך ונעטוק בתכונות נוספות שלו. יצירת פקד כרטיסיה יוצרים פקד כרטיסיה באמצעות הפונקציה ()ו00חו16916 אה ( 0 ובציון מחלקת החלון 148608180% 6ע. פקד כרטיסיה יהיה בדרך כלל חלון-בן. הוא: יווצר בעורת הסגנון 151815 פו, ולכן יוצג אוטומטית. הקוד הבא יוצר פקד כרטיסיה = ב חזומו עו 0סם, ]- ,סתזאס ₪5 | פסצפמהל ₪5 | מנמנפנט פא 0 /* מהפצגק 05 ב1ההמ */ ,המאת וט /* 18התגת מסמ2:פה3 */ ,זפהדת מפטא / לאחר יצירת הפקד, ניתן לשלוח הודעות מהיישום אל פקד הכרטיסיה, או בכיווך ההפוך, בכל פעם שניגשים אל הפקד. פרק 14: מבט נוסף על פקדים משותפים ‏ 359 פריטי כרטיסיה מוגדרים על ידי מבנה אפד1 6, המוצג להלן ואט וט וט 1 46 7 מבצהק1 וותתתק1 0 ן הערך שמכיל המשתנה אפטחז קובע אס איברי המבנה ט1קפק, 11306 אר חחמזמקו מכילים נתוניס חוקיים, כאשר המבנה מקבל נתונים מפקד הכרטיסיה. המשתנה או יכול להכיל אחד, או יותר מהערכים הבאים. ערך במשתנה 185% משמעות. 16 =ז0ד | 516%, 96פחז1! ו-וזהזבק! מכילים נתונים. 8 1615 | 11₪0896 מכיל נתונים. הפאק =01ד | זבזבל מכיל נתונים. זאטד =01ד | 5218%%ק מכיל נתונים. בעת הגדרת כרטיסיה, מצביע 5216 אל המחרוזת שתוצג בה. כשמתקבל כל המידע אודות הכרטיסיה, יצביע זאטזקפם אל מערך שיקבל את הטקסט. במקרה זה, הערך שב-א600161%0 מצלין את גודל המערך שאליו מצביע זא6ד2פם. אס הפקד קשור עם רשימת דמויות, אוי יכיל טוח את האינדקס של הדמות הקשורה לפקד שנבחר. אם הפקד אינו קשור לרשימת דמויות כלשהי, 6טָטוחו חיוב לקבל את הערך 1-. חזבּזהק! מכיל נתונים שמוגדרים על ידי היישום. שיגור הודעות אל פקד כרטיסיה הפונקציה ()5606/%655306 מאפשרת לשלוח מספר סוגי הודעות אל פקד הכרטיסיה. טבלה 14.2 מציגה חלק מההודעות הנפוצות ביותר. ההודעות נשלחות באופן תדיר, ולכן הונהגו פקודות מאקרו מיוחדות שמפשטות את שליחתן. להלן פקודות המאקרו המתאימות להודעות שבטבלה 14.2. בכל המקרים, 6ח/וטגזח היא הידית של פקד הכרטיסיה. 0 321חו/ו ומבוא ל-ספו פספהק1 (ה10מצעפקס מססם ,בהאמגצת פאאא) מסםתספטנת בצוסמגע פצסטי ה ; (חזומפג פוחוא) 1568 1666811 בע שסמנגעי מססם (1086 %ה1 ,4הממבפמ סאאא)ה660166נסס בפשסמגתי מס ( מב שחו ) 066002501 2 ,א66מ1 16 ,תאמגתת פאאות) 6651660 1עוסמגע מססם (תאומ ית פזת80) הגוסמ 80, ;1560 8שצ: 1070 פאס ,46%ת1 מת1 , סטמ מ168םעספד (א1886 16 ,ההאמבפת סאזוט) 506002501 486 0 ; 1568 שפד : 0 46 486 0 46 0 (1668 מפד סעקם ,166% פמ1 ,מהממגסת כותות) 5662660 בפוסמגע מססם בעקרון, קל יותר להפעיל את המאקרוס מאשר לקרוא לפונקציה ()5600//655306. טבלה 14.2: ההודעות הנפוצות ביותר של פקד הכרטיסיה. הודעה משמעות ד0פדפטנסא. 10% | תרגו מימדי תצוגת הפקד לגודל החלון. זאו מציין את הפעולה. כשהוא מקבל ערך שונה. מ-0, מתקבל מלבן החלון. כשהוא 0, מתקבל אזור. התצוגה. וחבזפק! מצביע אל מבנה 8501 שמכיל את. הקואורדינטות של האזור המיועד לתרגום. בסיוס. הפעולה יכיל המבנה את הקואורדינטות המתורגמות. פאפד \ופדם ופפ סד | ביטול כל כרטיסיות הפקד. מחזירה ערך שונה מ-0. במקרה של הצלחה, ו-0 במקרה כישלון. בק הדא 0 חובזהק! הוא 0. אפדנפד9 ופפ סד | מוחקת את הכרטיסיה שנבחרה. מחזירה ערך שונה מ-0. במקרה של הצלחה, ו-0 במקרה כישלון. וחבּזמקו+ מצ"ין את האינדקס של הכרטיסיה המיועדת. למחיקה. חובזהק! הא 0. 661008586 0%ד | מחצירה את אינדקס הכרטיסיה הנוכחית שנבחרה. אם. לא נבחרה כרטיסיה, תחזיר את הערך 1-. חקו הדא 0. חוּזבק| הוא 0. זט סוט דנד66 סד | מחצירה את מספר הכרטיטיות. חקו הדא 0. הבוק הוא 0. פרק 14: מבט נוסף על פקדים משותפים ‏ 361 הודעה משמעות 61 6 | מקבלת מידע על הכרטיסיה שנבחרה. מחזירה ערך. שונה מ-0 במקרה של הצלחה, ו-0 במקרה כישלון. חובּזקו+ מציין את האינדקס של הכרטיסיה. הפקו מצביע אל מבנה 118 16 שמקבל את נתונר הכרטיסיה. אפדנדה1855 יסד | יוצרת (מכניסה) כרטיסיה חדשה. מחזירה ערך שונה. מ-0 במקרה של הצלחה, ו-0 במקרה כישלון. חובּזקו+ מציין את האינדקס של הכרטיסיה. וחגזפק! מצביע אל מבנה 118% 76 שמתאר את הכרטיסיה. 5610858 0%ד | בוחרת כרטיסיה. מחזירה את האינדקס של הכרטיסיה. הקודמת שנבחרה. מחצירה 1- אם לא נבחרה כרטיסיה כלשהי לפני הכרטיסיה הנוכחית. ובלוו מציין את האאינדקס של הכרטיסיה הנוכחית. שנבחרה. הבוקו הא 0. אפדנד56 סד | קובעת נתונים בכרטיסיה שנבחרה. מחזירה ערך שונה. מ-0 במקרה של הצלחה, ו-0 במקרה כישלון. חובּזקו+ מציין את האינדקס של הכרטיסיה. חגּזהק! מצביע אל מבנה ואפ1 .76 שמכיל את המידע אודות הכרטיסיה. פקד כרטיסיה אינו מכיל כרטיסיות כלשהן בעת יצירתו, ולכן התוכנית חייבת לשלוח. אליו לפחות הודעת !ושדוד568א1 100 אחת. קיימת הודעת פקד שלמרות שהיא שימושית, היא אינה כלולה באף אחת מהדוגמאות שבפרק זה: 6פמדפטנס, ואסד. הודעה זו מיועדת לקבל את מימדי אזור התצוגה של פקד הכרטיסיה. זכור, החלון שלל פקד הכרטיסיה שאתה יוצר כולל את הכרטיסיות וגם את האזור שבו יוצג המידע, אד תיפתח תיבת דו-שיח. אזור התצוגה הוא החלק של חלון הפקד שאינו כולל את הכרטיסיה (כלומר, האזור בו ניתן להציג פריטים אחרים). מאחר שזה האזור בו מוצג מידע הקשור לכרטיסיה, תצטרך לדעת את מימדיו הודעות 008630000 של הכרטיסיה כל גישה אל פקד הכרטיסיה יוצרת הודעת /קנדסא א (אד ח6300הטסא טבד 6., פקדי כרטיסיה יכולים ליצור שני סוגי קודים של הודעת שינוי בחירה 6 -חסוו :)50‏ 58000865 אסד = ו-שאז6אאה500 אסד. | ההודעה 5810616 אד נשלחת כאשר בחירת הכרטיסיה ‏ עומדת להשתנות; 8 אד נשלחת לאחר שנבחרה כרטיסיה חדשה. 2 1א32חווו ומבוא ל-ספו עם קבלת הודעת 011% א/, יצביע וחמזבק! אל המבנה ₪ו1. השדה 6006 המהווה. חלק ממבנה זה יכיל את קוד החסטג6טטח. הידית של פקד הכרטיסיה שיוצר את ההודעה, נמצאת בשדה חחסז0חאוח. תוכנית הדגמה פשוטה של פקד כרטיסיה לפניך תוכנית 401ח69טמד קצרה ופשוטה להדגמה של פקד כרטיסיה. (התוכניתת נמצאת בתקליטור |סשחסססגד3014ה6) . התוכנית יוצרת פקד ובו שלוש כרטיסיות. הכרטיסיות מסומנות בטקסט 6ח0, סאד ו-6סזחד. כשבוחרים כרטיסיה חדשה, משתקפת העובדה בהצגת הודעה מתאימה. תרשים 16.2 מציג דוגמת פלט של התוכנית. 1008 < 1 > 101006 <56810.5> 66בסה41 סט ת0סמבע" 106סה1 מטהד 32נאן 18 401106 3568006 מהמפעגם // 1 פסאתץ5: ו פאחו גצ פוחו /"ם1עשחסם" = שהבאסקתפפק1 ת57פסק1 "מ1168610פעת 6810מ06" | = 15291616 10298 ₪ (0ש1 *5פתנססומו עפאסס) 95ת8018%8201ה מססם מסוותפפות3 (ססת8םפתזת מסוותפפאנה) תובעתוז צתפונמדקת 46 (שסמ45תסה 186 ,סהןמנתסק1 10578 ,ססהגופה1שםצקת פל 0 ו 5 סתז עסמה קאתהסמחע 05 | אתתספאע פס = 8 ;ססעפטהא(ססהפפוה/) = | ססעקבמאת:ם1 סט = ע0א0180מ0 סט = בעסאמבתחמם סט > תס ; (חמאזקת2פק1 ,6סה2מפהנת) מ1080100 = 0 ; (סתהה 100 ט )08 = ו פרק 14: מבט נוסף על פקדים משותפים | 363 4 קלחו ומבוא ל-ספו פרק 14: מבט נוסף על פקדים מטותפים ‏ 365 6 הכח ומבוא ל-0=ו תרשים 4.2 גלט לדוגמה של התוכנית הראשונה של פקד הכרטיסיה. טרם יצירת הפקד, קוראת התוכנית לפונקציה ():6610/60860, כדי לקבל את גודלל החלון הראשי. הפקד שנוצר לאחר מכן מתאים בגודלו לאזור הלקוח של חלון האב וממלא אותו בשלמותו. הדבר נעשה באופן שרירותי, אך מקובל למדי. לאחר יצירת פקד הכרטיסיות, נוצרות בו שלוש כרטיסיות. הפונקציה ()06ז1/007 מציגה הודעה באוור התצוגה של הכרטיסיה, ומדווחת על בחירת כרטיסיה חדשה, כל פעם שההודעה הזדסוא /או מקבלת קוד מסוג ד 3 הפעלת פקדי כרטיסיה קל להפעיל פקדי כרטיסיה, אך יצירתס מסובכת למדי, מכיון שלכל כרטיסיה קשורה. בדרך כלל תיבת דו-שיח. כל פעם שבוחרים בכרטיסיה חדשה, יש להסיר מהתצוגה את. תיבת הדו-שיח הנוכחית, ולהציג תחתיה תיבת דו-שיח חדשה. כמו כן, לרוב צריך להתאים את תיבות הדו-שיח השונות לאזור התצוגה של פקד כרטיסיה. פקדי כרטיסיה ותיבות הדו-שיח שלהם כרוכים בנושאים נוספים ומסובכים שאינס כלולים. בספר. למרות ואת, נלמד בסעיף זה שיטה כללית לשילוב פקד הכרטיסיה ביישומים. אס תבין את העקרונות הבסיסיים, תוכל להוסיף ולשפר בעצמך את פקדי הכרטיסיה. ביישומים שתכתוב. העובדה שניתן לבחור כרטיסיה חדשה בכל עת, מרמות על כך שיש לשלב תיבות דו-שיח לא-מודאליות 006/659/).. תיבת: דו-שיח. לא-מודאלית מאפשרת להפעיל חלקים אחרים ביישום מבלי לסגור אותה לפני כן (בניגוד לתיבת דו-שיח מודאלית, אותה יש לסגור כדי להפעיל חלקים אחרים בתוכנית). בדרך כלל, כשבוחרים כרטיסיה. חדשה, היישום סוגר את תיבת הדו-שיח המוצגת ולאחר מכן מפעיל את התיבה הבאה. ניתן לסגור תיבת דו-שיח בכל עת, ולכן צריך לנקוט בפעולה המתאימה (כגון שמירת. ההגדרות שלה) בטרם מציגים את התיבה הבאה. פרק 14: מבט נוסף על פקדים משותפים | 367 נעבור לתוכנית 800/2ד (בתקליטור 30002ז608014) אשר תאפשר לנו ללמוד כוצדד להפעיל פקד כרטיסיה. התוכנית יוצרת פקד ובו שלוש כרטיסיות: פחסטקס, חשוק ו-526 6סָּ0. כל אחת מהכרטיסיות קשורה לתיבת דו-שיח לא-מודאלית. הראשונה היא מהסוג שיצרנו בתחילת הפרק עבור שורת המצב (ו83 519005). שתי הכרטיסיות. הנוספות הן ריקות ולמעשה, רק תופסות מקום (9ז86000/06), אותן שילבנו לצורך. ההדגמה. תרשים 14.3 מציג פלט לדוגמה של התוכנית. <. 0184008 בסה < 1 65ה0> 101066 <56810.5> 166סה41 "12.8ַסמת" בבסה מטחד 32ַזאן 18 345110 3 פפהתקאטת 3051106 ; (מותתתק1 ,ממתהתקאן ,חוד ,תומ/א) בסתגת טנס אסתם1זתס מססם ; (מותתתק ,ממתהתקא ,חווד ,סזמ/א) 2סתגת טנס אסתם1מתס מססם ; (מותתתק ,מממהתקאן ,קאד ,תזמ/א) 3סתגת טנס אסתם1נתס מססם 2 (4חזות פעחוה) 1015868008 18ס 35686 מההצפצטם // 6פחדת פסונתלפוננ ו פאחו הדי פאחו פא <מנטו (מאאא) = פנתמ פומ /"10עשהסם" = שהפאסקתפפמ1 ת7פפסק1 ;"מ1168610קקת 10ש6ה06" | = 15291616 אפפסק1 ; (60ש1 *1855ספואא דפאסס) 8018%6201295ה מססם ; [פתתקצוטו 95 46 מסוותפפות3 (ססתםפתצת מסותפפאנה) תובעתגז צהפונמדקת 46 (שסמ45תסה 186 ,סה1מנתסק1 10578 ,ססהגופה1שםצקת פע 10 4 55 נספוו ;אתהפמתט 05 | אתתספפע 09 = 8 8 מ קפוהו ב ₪ 6015 8 3271חו ומבוא ל-ספו פרק 14: מבט נוסף על פקדים משותפים ‏ 369 0 323חאו ומבוא ל-ספו פרק 14: מבט נוסף על פקדים משותפים ‏ 371 2 לבחו ומבוא ל-0פו /+ 1 אסם 360% 85שססעק */ :081 ם1 פמ ,1מס פ1 ,מנסמ) 801016080658806ת50 = 218005081 ;(0 ,0 ,אספאסצפם אם ;("אס :1 הס1ממס" ,ע1)86>ת1עמפ (85205081) ,1 ;("פפס :1 מס1פםס" ,51)858ה1עק5 156 50 58 ,505086 055806 :56 (ממתתפ1) ,1 (אתתתקק) 1 מס /* 2 אסט 360% 88מססעם */ :02 ם1 שממ ,082 פ1 ,מנסת) 8010160800658806ת36 = 558005082 ;(0 0/0 ,אספאסצפ אפ ;("אס :2 הס1סקס" ,51)86%ת1עקט (8020802) 15 (("פפס :2 מס1מםס" ,51)858ת1צק5 156 5 5 ,6 05806 ;(מ56 (מתתתפ1) ,2 (אתתתקאן) 1 מעםם, /* פמסגמםס 86ש: */ :למפתת 10 886 (2/ מש1 (מנפתקם) ,0 ,51208 עמ ,608 0 ,0 (שתפתטא) ,50 5 ו 0 ; ("10 :מ406-מט" (עתתתקם) ,1 10 ,ַע) 660655806 5660101 :(0 ,0 00פ08לפם אמ ,2 ד ,301) 016000655806 56601 :(0 ,0 06פסלפם אמ ,1 (שתהתקא) ,תדל 50 5 ,6 0580 ("פעס :1 מס1טמס" (עתתתקם) ,2 (שתפתט) ,דל 50 5 ,6 050 ("פעס :2 מס1שמס" (אתתתקם) 1 מס 856 1 10 856 0 0 1 תעםם, 1 0 פרק מבט נוסף על פקדים משותפים ‏ 373 374 הלבחו ומבוא ל-ספו "תתא" /* עבש 262005 ג ם6בשצס */ 105015 תיפ) 080 86001ספם = האפטס ספת /* [קהפאם 18ת: 1 64פג ססת */ ,"" ,מתפנפנט בא | סמנאס פא וו ה טא תת מנטת 58 ,5 5 ג (פמפמס (ותתתקת) ,פצהתקמטוו (אתתתפאה) ,0 (אתפתפא) ,%1פעע50 58 ,6מ88ט80 156 855806 ("10 :חאסם-קט" (אתפתסם) ,1 (אתאתפש) ,דאמעל50 58 ,6מ88ט5680ת) 606858806 ;("צש0 :1 תס1סקס" (שתמתסם) ,2 (אתהתפ) ,דמעמ 58 ,8880ט25680) 6048658806 ;("צפס :2 הס1סקס" (שתמתסם) (סשיב *88ה1סטאוו עפומסס) 860586690195 מססם. [ 558% 1סטוהת 1 = ו ;06עקבתאמ8ם1<-סאמ1 = = ססעקנהאהזק1 אססט 0-00 = 001 סה ב סו 1 ו לב סו ב 100 אס ,פס מממה<-סאמ1 = = 8תט0ע4ַא80מצעת אסס 1 ב 11 אס ,82018580806מ1<-6אמ1 = 52012580206ק1 אססט ( )12005 ו 188 אםסמ) 1088100 סה 8608 ) א8598 8601866501 תפגטם> פרק 14: מבט נוסף על פקדים משותפים | 375 התוכנית וקוקה לקובץ המשאבים הבא |66 108 בה "ה.מ8ם" =0ט1סת43 86 ,16 ,2 ססמזם במסצע הפמתסה ₪5 | מנמנפנט בא | תצאס פאלם [ ,4 ,37 ,34 ,92 ,ספא 10 ,"565שת" אסעצטמאפטפ פסצפמגד ₪5 | מממצפנט פא | סמצמס פא ,37 ,53 ,92 ,1008 ,"אס" אסעצטמאפטפ פסצפמתד פ₪ | מממצפנט פא | סמצאס פא | נצאס פא | 1899 ₪5 ,12 ,30 ,10 ,10 ,גמ סד פאמצענסט הפמהסה ₪5 | מתמזפנע פו 2 ,48 ,40 ,10 ,1מס עד ,"1 מס1טפס" אסמאספאסספטת 2 ,48 ,60 ,10 ,082 מ1 ,"2 תס1טפס" אסמאספאססצטת 6 ,158% ,16 ,2 ססמתזס 2מסצע תפמתסם ₪5 | מתפנפנט פא | סמזאס ₪5 מתצצם [ ,4 ,37 ,53 ,92 ,1008 ,"אס" אסעצטמאפטפ פסמפמתד ₪5 | מממצפנט פא | סמצאס פא 12 ,10 ,10 ,1 ,"מ160ע מפססמס" צאמעב 2 ,8 ,40 ,10 ,נפת סד ,"01668 תסָא" אספצטמסנסתתספטת 2 ,52 ,60 ,10 ,2מת 10 ,"מ9166 הג01א" אספעטמסנסתפספטת 12 ,48 ,80 ,10 ,882 סד ,"תס16ע שסם" אספצטמסנסתתספטת 866 ,16 ,2 6סמתזם במסצע תפמתסם ₪5 | מתפנפנץ פא | סמזאס 5 מתצצם [ ,4 ,37 ,53 ,92 ,1008 ,"אס" אסעצטמאפטפ פסצפמתל פ₪ | מממצפנט פא | סמצמס פא 702 ,10 ,10 ,2 ,"8126 מַ 8‏ שפססמס" צאמעב 2 ,48 ,40 ,10 ,83 סד ,"11צחפ" אספצטמסנסתתספטת 2 ,48 ,60 ,10 ,4מת 10 ,"601" אספעטמסנסתפספטת 2 ,48 ,80 ,10 ,95 ס1 ,"מ" אספשטמסנסתתספטת קת32ח/וו ומבוא ל-0פו לפניך קובץ הכותר ח.15: 0 מסעתזק פד 4401108 11| פתסא וז 4401188 12| אוסספט 1 4801108 13 1 מז 3001106 חח 1 פז 4001108 15 2 מז 3001108 6 ספת מ1 4401188 07 1מת 5 3401106 18 עפת מז 4001108 109 בת פז 4001108 0ב רו 1 5 15 3001108 החלק המעניין בתוכנית נמצא במשפט דסא א// 6356, של הפונקציה ()06זקטחוא, שמוצג כאן פעם נוספת לנוחותך. 5 380ע198 (הסמומוק1) = עטקמה | (פסותא5010 אס == 00688<-עפקחה) ]1 40 1אעס5 פס (ְשַנסה) 18 < (מסשפ4מאת<- צמפחת (סאאם) ) ב6פענס 65 1עמסמגת = צממתטחמם) ( )160 8 ,"נמסצע" ,6פה1ת) 056866014100 = פנסת (61מט81009 1 ,6מאמגצת 9 1 ,"2ממצע" ,31886 056866014108 = נסת (62מ1810090ם ,6מאמגעת 2 ,"מע" ,3188%) 05686601810 = בס (63מ1810090 ,6מהמגצת וע 1 0 שני אירועים קורים בכל פעם שבוחרים כרטיסיה חדשה. הפונקציה (50001060%סם. מסירה מהמסך את תיבת הדו-שיח הקשורה לכרטיסיה המוצגת (כידוע, לסגירת תיבת. דו-שיח לא-מודאלית יש לקרוא לפונקציה ()אוסטחווץסט5טס, ולא ל-()פסוגומחם, פרק 14: מבט נוסף על פקדים משותפים = 377 כמקובל בתיבות דו-שיח מודאליות). בשלב הבא מתקבלת הבחירה בכרטיסיה הנוכחית והפונקציה (6:63100/990 יוצרת את תיבת הדו-שיח שלה (וכור, או הדרך ליצור תיבות דו-שיח לא-מודאליות). בטרס תתקדם, עליך להפעיל את התוכנית במצבים שונים, כשאתה משנה את תיבות. הדו-שיח ופקדי הכרטיסיה. ניתן לקשר תוויות לחצן (100/005). לפקדי כרטיסיה, משימה רבת-אתגר שתוכל לנסות בעצמך. - יי ו ו ו 4 פסקדי תצוגת עץ הפקד האחרון שיסוקר בפרק זה הוא פקד תצוגת עץ ((סשח00 אופוצ 66זד). פקד זה משמש להצגת מידע באמצעות מבנה עץ. רשימת הקבצים של ז6זסוק סו מהווה דוגמה לפקד תצוגת עץ. עץ מרמו על מבנה היררכי של נתונים, ולכן. יש להשתמש בו להצגת מידע היררכי בלבד. פקדי תצוגת ע הינם רבי-עוצמה ותומכים. במגוון אפשרויות גדול. למעשה, ניתן לכתוב ספר שלם שיעסוק בפקדי תצוגת עצ בלבד! לכן, יתמקד סעיף וה ביסודות של פקדי תצוגה אלה. כאשר העקרונות יחיר נהירים לך, תוכל לשכלל את השימוש בפקדי תצוגת עץ ולשלב בהם רכיבים נוספים. יצירת פקד תצוגת עץ פקד תצוגת ע הוא חלון אשר נוצר באמצעות הפונקציה ()/0030600600. אר ()84ו0103161/:000, ומבוסס על המחלקה שוַ56/18חד 6/+. פקד תצוגת ע הוא בדרך. כלל חלון בן שנוצר באמצעות הסגנון 151816 -5//, ולכן הוא מוצג באופן אוטומטי 18507 05 אף הוא כלול אוטומטית בפקד. תצוגות ע מאפשרות לכלול סגנונותת קרובים בעת יצירתם, ראה למשל בדוגמה הבאה. 8 :כו ומבוא ל-ספו סגנון משמעות. 5 5/ד | שורות מקשרות בין ענפי העצ. דססדא5פוו1! 5/וד || שורות מקשרות בין השורש והענפים. פאסדד580/ 5/ד | לחצני כיוץ'/הרחבה משמאל לכל ענף. שילוב הסגנונות 8511085 5ד ו- דססהזה55א1/ 5/ד גורם להצגת שורות לכל אחד מהמרכיבים בעץ, וכך למעשה מתקבל המראה האופייני של העף. שילוב הסגנוך פווסדדט58 5/וד מאפשר להוסיף את לחצני ההרחבה והכיווץ התקניים. לחצנים. אלה מציגיס את הטימן + אס ניתן להרחיב את הענף להצגת רמה נוספת אחת לפחות,, או את הסימן - במקרה שהענף הורחב במלואו. ניתן גם ללחוץ על הלחצנים כדי להרחיב את הענף או לכווץ אותו. בעת יצירת הפקד נכללים כל שלושת הסגנונות. הקוד הבא יוצר חלון תצוגת עץ תקנית עשת 3 | סתנאס בא | פסצפמתד ₪5 | מנמנפנט פא פאספלטמפתא 5 | 5מאצמפתא פט ד תפמ 75 7 /* הצק 05 ב1ההמ */ ,שמת וט /* ב1התגת פסתגספה3 */ ,ספהצת ממטא / ברגע יצירתו, פקד תצוגת העץ ריק מפריטים. בסעיף הבא נתאר כיצד למלא את העץ בתוכן שיגור הודעות אל תצוגת עץ פקדי תצוגת עץ מגיבים להודעות אחדות. טבלה 14.3 מציגה כמה מהנפוצות שבהן. תדירות השימוש בהודעות פקד תצוגת העץ גבוהה מאוד, ולכן קיימות לשם כך פקודות. מאקרו מיוחדות. להלן פקודות המאקרו שמקבילות להודעות בטבלה 14.3. בכל המקרים, 6ח/6זדח מכיל את הידית של פקד הכרטיסיה. (מפפצת ממפדממתפה ,שתקססעעת כו/8)מ610:0168 80168מצע מססם 6דת אמדמםהצא ,6מהמסנעת תומוא הבא 2600108 001 (מש6נת מצד שתקם (במקסשנתת פאאא)ה1:0מסם 00108שצע מססם צסטתצפנתפפתד טצק1 ,סמאססעתת כוהזא) מסםנסעספה1 אבגטבסעע ממנטממתקה 4 (מ10מסג פנדט (הספצת אמְדמםהצא ,6מקשסנעת סומאא) 561608 2600188 .מס [מ0810ג תו פרק 14: מבט נוסף על פקדים משותפים | 379 תוכנית הדוגמה שבפרק מכילה שתי הודעות בלבד, ‏ חשחנדה6פא1 הזד סאאקא8 ואד. מובן שהיישום שלך יכול להכיל הודעות נוספות. טבלה 16.3: הודעות נפוצות של תצוגת העץ. הודעה דוד מ .אד סאאאקא אוד 6 אד ד אד 5050 משמעות. מוחקת ריט מתוך רשימת העץ. מחזירה ערך שונה מ-0. במקרה של הצלחה, ו-0 במקרה כלשלון. חוּזהק! הא 0. וחּזבק! מכיל את הידית של הפריט המיועד למחיקה. מרחיבה או מכווצת את רשימת העץ ברמה אחת. מחזירה. ערך שונה מ-0 במקרה של הצלחה, ו-0 במקרה כישלון וחפזבקו מציין את הפעולה. הפעולה חייבת להיות אחת. מהפעולות הבאות. פא ו0ספעיד (כיוו העץ), 05685507 | 0פ/רד (כיווץ הע ומחיקת פריטי הבנים), טלא 6/ד (הרחבת העץ), אד 5 ד (מעבר בין שני מצבים). חוּזהק! מכיל את הידית של הענף ברמה הגבוהה יותר (ענף. אב מקבלת את מאפיוני הפריט. מחזירה ערך שונה מ-0 במקרה. של הצלחה, ו-0 במקרה כישלון הבוקו הא 00 חמק מכיל את המצביע אל מבנה 118% /יד שמקבל את המידע אודות הפריט. מכניטה פריט לעץ. מחזירה ידית אל הפריט שהוכנס לעץ, אר וטא במקרה שהפעולה נכשלה. בוק הדא 0. חבזבק! מכיל את המצבוע אל מבנה 1855815180 ד שמכיל את המידע אודות הפריט. בוחרת פריט מתוך תצוגת העץ. מחזירה ערך שונה מ-0. במקרה של הצלחה, ו-0 במקרה כישלון. וחבזפקו+ מציין את הפעולה שמתייחסת לפריט שנבחר. במקרה של 6381 א6ד, הפעולה תהיה בחירת פריט. במקרה של 6ד 0₪07011‏ א6/ד, הפריט יסומן לצורך גרירה ושחרור (סוס-חה-חָבּזס). במקרה של 1857/1518 אסעד, התצוגה תיגלל כדי שהפריט שנבחר יופיע בראש הרשימה. וחפזם?! מכיל את ידית הפריט. 0 321חווו ומבוא ל-ספו ו כשפריט מסוים נבחר, המידע עליו יופיע במבנה 1558151806 עד הבא בק עמ ם הקט (עסם)תשעספהנם אמצממהקה ה קת ל סנ )חפזפקה היא ידית אל אב הפריט. אם לפריט אין אב, אזי שדה זה צריך להכיל את ד0סא 1/ד. הערך שב-וחטוזטספוזו! קובע את אופן הכנסת פריטים לעץ. אם הוא מכילל את הידית של הפריט, הפריט החדש ייכנס לע לאחר הפריטי. אחרת, וח9ז611פחזח יכול. לקבל אחד מהערכים הבאים. ערך המשתנה ו60ז5911ה1ת משמעות. זפפזז 1/ד | הכנסת פריט חדש לראש הרשימה 5 | ד | הכנסת פריט חדש לסוף הרשימה. 501 1ד | הכנסת פריט חדש לפי סדר האייב. התוכן של וזו מתאר את הפריטי. זהו מבנה ופד1. עד, שמתואר להלן | אפצז ץע מסטע וט מע מם הק 7 פאצט אנט 1 6 7 1 011 46 מצ8ק1 ותהתק1 ן הערך שמכיל המשתנה ₪5 קובע מי מאיברי המבנה 118% ד מכיל נתונים חוקיים. כשהמבנה מקבל מידע מפקד תצוגת העץ. להלן הערכים שהוא יכול לקבל. ערך במשתנה 1856 | | המשתנה (או משתנים) שמכיל(ים) את הנתונים. = וסאגו ד | וחפוזת פד הד =ז/וך | 50316, 100035%מ51 פד ד | 1 דפק, 60 פרק 14: מבט נוסף על פקדים משותפים ‏ 381 ערך במשתנה 35% | | המשתנה (או משתנים) שמכיל(ים) את הנתונים. ד | 96חנר ד 581 =ז/רד | 6סַ08ה1501601601 א וז אנד | סוחס תהק | אנד | החבזקו האיבר 5136 במבנה מכיל את המצב של פקד תצוגת העץ. להלן מספר מצבים נפוצים. סטטוס משמעות. 15850 .15/ד | פריט מבוטל. סמדווזוקס. 5זעד | פריט מסומן לצורך פעולת גרירה ושחרור סאקא עד | הענף שמסתעף מהפריט הורחב במלואו (ישים. לפריטי אב בלבד). טקא 115 | הענף שמסתעף מהפריט הורחב כדי רמה אחת, א יותר (ישים לפריטי אב בלבד). 00550 15ד | פריט בפוקוס. 580780 115 | פריט נבחר. המשתנה 513009256 קובע איוה מצב כרטיסיה יש להציב, או לקבל. זה יכול להיותת אחד, או יותר מהערכים בטבלה הקודמת. כשמכניסים פריט לעץ, ז19%;פק מצביע אל המחרוות שתוצג בעץ. כשמתקבל המידע הנוגע לפריט, חייב 216% להצביע אל המערך שיקבל את הטקסט. במקרה זה מציין 6016 את גודל המערך ש-אט1;פק מצביע אליו. ‏ אחרת, אין התייחסות ל- :6 אס קיימת רשימת דמויות שמקושרת עם פקד הכרטיסיה, 16 יכיל את האינדקס. של התמונה הקשורה אל פקד הכרטיסיה. אם לא קיימת רשימת תמונות, וזו יכיל. את הערך 1-. 906ו56/669010! מכילה את הסמל שנבחר מתוך הרשימה, אס קיים כזה. כאשר מתקבל מידע אודות פריט כלשהו, יציין 6006 את מספר הבנים הקשורים. עימו חבּזבק! מכיל נתונים שמוגדרים על ידי היישום. 2 זא32חווו ומבוא ל-ספו הודעות של תצוגת העץ כשנכנסים אל פקד תצוגת עצ נוצרות הודעות וזדסא ואאו, כלומר, העץ העץ שולח הודעות (6993065/// ח800063000). קיימות מספר הודעות מהעץ הקשורות אל פקדי תצוגת עצ. להלן ההודעות הנפוצות ביותרר הודעת הסוג06 00 = | משמעות. דודש ו אשד | פריט נמחק. 6אנסואקאשויופד .אוד | ענף עומד להתרחב, או להתכווץ. ספסאאקאפויומד ,אשד | ענף הורחב, או כווץ. 58106 אעד | פריט חדש עומד להיבחר. 8650א/0 58 אד | נבחר פריט חדש. כשמתקבלת הודעת קזדסא אע יצביע חזמוגלו אל המבנה זפפהד /אא. לפניך הקוד של המבנה ע18/ספהד אא 565066 6465מע 5 פאר 0010ב פאצט ומצע שד 15 אמצ ער ספ ן השדה הראשון של /ו5918חד %א! הוא המבנה התקני סחויוא. קוד ההודעה ייכנס אל. השדה 6006 של הסוזואו'. השדה וחסו=6חאוח באותו מבנה יכיל את הידית של פקד העא אשר הפיק את ההודעה. השדה 86000 מכיל מידע ייחודי להודעה מהפקד. המבנים 80/0 ו-או6וחפא מכילים. מידע אודות הפריט הקודם שנבחר (אם ישים) ושל הפריט החדש שנבחר (אם ישים) פופוק מכיל את נתוני המיקום של העכבר בעת הפקת ההודעה. במקרה של ההודעות 5610106186 אד ו-048650 561 אעד, מתאר 19016 את. הפריט שנבחר קודם, ו-אושאוחפזו מתאר את זה שנבחר וה עתה. במקרה של ההודעות. 6אזסאאקאפואפד עד ו-ססאהקאפואסד1 א/יד, האיבר אושאוחפאו מתאר את הפריט. שהוא האב של הענף שהורחב. במקרה של ההודעה |וטד1ד6 06 א/יד מתאר 0/6וחפא: את הפריט שנמחק. פרק 14: מבט נוסף על פקדים משותפום | 383 תוכנית הדגמה של תצוגת עץ התוכנית 6% .1766 הבאה (בתקליטור ו 96זד8014) מדגימה פקד תצוגת עצ. היא יוצרת פקד ולאחר מכן מכניסה אליו חמישה פריטים. התוכנית גם כוללת תפריט. שמאפשר להרחיב ענף בודד, את העץ כולו, או לכווץ ענף יחיד. כל בחירה של ענף חדש. בעץ באה לידי ביטוי בחלון התוכנית. תרשים 14.4 מציג דוגמת פלט של התוכנית. 0 106 <. 1 > 1006סה1 <.565180> 166סה1 "ת.1מ שמשל" ממטבסת1 (81832) 4601868 418 מטתע 32וצא 15 6ת001+ 8 פפנתת 32מנא 15 6ה001+ 3 5 ו 16 ספה מהמפעמם // 1 פסונהץ 5 /"ם1עסהסם" = שהבאסקתפפק1 ת57פסק1 "11085108מקת 0210ה00, 1529161 לספ (0ש1 *55תנססומ פאסס) 0186520195 מססם 018 10169566 )0046( ; ;(5* 38% ,46 ססא)מעסק0ע 18 שפצ פוחו ; [אטוז] 604 שמימ טמהמ ץע 0ם6צעם 4מננמפהצ מסוותפפאונ3 ,ססתבםפתנת מסותפפאנה) תובעתגאז צהפונמדעת 48 (שסתפ4תסת 18% ,סהנמנתסק1 10578 ,ססהגופה1טםצקת 14 4 ור 55 נספוה קהנפת1ח צסמת תת םואת ת32ח//ו ומבוא ל-0פו פרק 14: מבט נוסף על פקדים מטותפים ‏ 385 16 "אפ" /* 0098ב800102 1088 */ ה ("טאפועצוו" ,ססתבםפהזת) 8ע1084800810:8%0 = בשססתת ה סמ קט 00 550 55 בר ו 0 ד 1 [ (888ק. 856) תעגם, (שב *55ה1סטאאה עפאס0) 6918%6581895 מססם [ סא 558% נססוה? ב ו 1ב 11 ססר 01ב 001 אס ב סו 1 0 לב 1 סו ב 0 שגס1, אס ,סע ףסגמעמה<-סאמ1 = = 4הטסעףַאמ8מצעם אססט 6הםוטה2פם1<-סאמ1 = | סתבאמהםו2פק1 אססט ,82018580806מ1<-סאש1 = = 0206מ5ב8201ק1 אססט ( סו 12005 ו )10100 1 סור (א06א6) א86018669018598 תפגטם, ,הבעגתא אתתתפה ,ספמגו עמדט ,4מות כומו | סספפבחו אסהמננתס נטפמתת (88ש198 שתפתט ב 6 [56166108]80 89תם 68616ם לש סממה* תפפור 50 5טת1גם צסטהצפצוונתק 46 קת32חו/ו ומבוא ל-0פו 8 1 ו 0 0 886 ( (מבפא) הסוס ) 160 [ + סאתפאם 108 0886 ,66 פמ660פעם ,566%840601עה) המהקאם 960168 ; (סאתפאם משצ פע מ אופא 10% 886 (++1 ;שטא16 502)1-00 ,401 סש עצם) הבא 001%עם ; (פאתפאם פט ופ םס 18% 886 ,6מ6פמ660פעם ,40661הא66פעה) בממקאם 960168 ג (מפפה 011 משצי ופ צפפל 188 886 פע צעאם 188 0886 (8 מש פע [ צ סו 0 86 1239800 (הסאעוק1) = פטשמת | (ממסוות5050 ותוד == 0068<-עטקמה) :1 ;(1 ,מצטת ,6תמ)1162608608בטחד פה אםאהס35<- (עטקמה (הפנטממהל עאשם) ) )15 (".שתס" ,861600108) עקסעסט = 11668 א6אחם16<- (מססחה (ממצשממהל מוקם) ) )11 196 ("-80ת" ,581600108) 56 ( 17 פה ([2] מופסעצת == משטדה. אסאה155<- (עטקתה (מפצטממהץ עאקם)) )15 ;(".6פעמע" ,מ86160010) עקסעטט 18 אשאהס25<- (עטשמה (מפנטממעהל עאשם) ) )15 ;/(". צטסת" ,מ86160810) עסעטם 19 500 2<- (עסקמה (הפצטממהל עאשם) | )15 /(".שט1ת" ,ת86160810) עקסעסט 1 60 156<- (ףקמת (אפצטממתץ עא12)) = 6ה6שנ600פעה 1 פע 07 ( 666 131( 7 ( פרק 14: מבט נוסף על פקדים משותפים ‏ 387 8 הכח ומבוא ל-0=ו התוכנית וקוקה לקובץ המשאבים הבא להלן קובץ הכותר ה.6ש: פרק 14: מבט נוסף על פקדים משותפים ‏ 389 [<זם- ] מ בו זט 15 01601100 תרשים 16.4: דוגמת פלט של פקד תצוגת העא. הפונקציה )1061166 מאתחלת את פקד תצוגת הע. שים לב שהידיות של כל הפריטים. נמצאות במערך 0ח/6%פודח. ידיות אלו משמשות לויהוי פריטים בעת בחירתם מרשימת העץ. זחפזז0טטזדח מזהה את הפריט הנוכחי שנבחר. ידית זו נועדה למקרה. שהמשתמש מרחיב, או מכווץ ענף כלשהו בעורת התפריט. הפונקציה ()06זקח/ מטפלת בהודעות +01 או שמתקבלות בעת בחירת פריטים. חדשים. ערכו של אפאחפאא נבדק כנגד רשימת הידיות של הפריטים שבמערך 6ח/סזדה. כאשר נמצאת ידית תואמת, מדווחת הפונקציה על הבחירה החדשה. הדוגמה שהבאנו ממחישה את ההיבטים הבסיסיים של פקדי תצוגת העץ, ומציגה את. הנושא באופן כללי ביותר. לדוגמה, תצוגת העץ מאפשרת לגרור פריטים מע אחד ולשחרר אותם בעץ אחר. נושא זה ואחרים תוכל לחקור בעצמך.. 0 זקתכבחווו ומבוא ל-ספו פרק 15 ניהול זיכרון 1 מודל הזיכרון 32חו/ כפו שאולי הצלחת לנחש מסעיפים שכבר למדת, מודל הזיכרון של 32חו מקל מאודד על ניהול הזיכרון. המודלים קטן (03ח5), גדול (ְפָז3)), וענק (ָספָטז) אינם קיימים עוד בגרסת 32 סיביות של פאוסטחוו (פאוסטחוו אפ-32). מכיון שאין מודלים של זיכרון, תוכניות 2חוו אינן מבדילות יותר בין זיכרון קרוב (/3) ורחוק (31?). בלי סגמנטים (פזח6וח559), התוכנית והנתונים שלה ממוקמים באותו זיכרון ליניארי, שהופך את הטיפול בתוכניות גדולות ובקטעי נתונים לפשוט וקל יותר. בסביבת העבודה של 2ּחווו, לכל תהליך יש מרחב כתובות וירטואליות של 32 סוביותת משלו, שמגיע עד ארבעה ג'יגה-בית (468, 6035195 4). 5ו0חו) מקצה למשתמש שנר גייגה בית בויכרון הנמוך (00000000א0 עד =799958א0), ושומרת על שני גייגה בית: בויכרון הגבוה (80000000א0. עד =קקקקת:קאס) עבור גרעין המחשב (5'ס)טקוחס0. 61חזסא). הכתובות שמשתמשים בהן התהליכים אינן מייצגות עוד מקומות פוסיים: ממשיים בויכרון. במקום ואת, גרעין מערכת ההפעלה (התוכנה הבסיסית של מערכת. ההפעלה ששולטת במעבד, בויכרון, במטלות, ועוד) מחזיק עבור כל תהליך מפת דף 090 מק ששתמשת לתרגום כתובות וירטואליות (800/65595 |גטטזוע). לכתובות. פיסיות, כפי שדרוש. תהליך (0099זק). אינו יכול לכתוב מחו למרחב הכתובות שהוקצה לו (וכך יש הגנה מפני פגיעת תהליך אחד באחר). פא 32חואו, ממשק התכנות של 32 סיביות, תומך בפונקציות ההקצאה 6ו1א610931. ו-1063/106. בסביבת 32חוו, הקצאות גלובליות ולוקליות והות למעשה. בסביבת 6חו, הקצאה לוקלית (חסטגססוא !6063 היתה במרחב הכתובת של התהליך והקצאה גלובלית (חסטגסטו1 ו3פ0ו6) היתה מחוץ למרחב הכתובות שלו. בסביבת 2 מערכת ההפעלה מקצה את שני סוגי הזיכרון במרחב הכתובת של התהליך. עצמו, וכך היא מאפשרת לגשת לשני סוגי הויכרון ישירות מתוך התוכניות, על ידר שימוש במצביעים בני 32 סיביות. עם זאת, כמו שנלמד בהמשך, ייתכן שהקצאה לוקלית תורמת לכך שקל יותר להבין את התוכניות, ואסור לזלול בהיבט זה. פרק 15: ניהול זיכרון ‏ 391 סביבת העבודה של חואו מציגה שתי שיטות חדשות שבהן יכולות התוכניות לנהל את. הזיכרון: מנהל זיכרון וירטואלי (6סָח8ז! ץזסוחסו! וגוז ומנהל ערימה לוקאלי (זסֶח3! 630 10631). פונקציות 1 לניהול הזיכרון הווירטואלי דומות לפונקציות. זא המטפלות בניהול הזיכרון הגלובלי, אלא שהתוכניות יכולות לקבל מלאי (8690006) בלוקים גדולים של זיכרון וירטואלי ואחר כך להקצות אותם כנדרש. מנהל הערימה (130996 3630 החדש שונה ממנהלי הערימה שמשתמשים בהם בדרך כלל. מנהל הערימה החדש מאפשר לתוכניות ליצור ערימות רבות (05ס 6וקטוט!) וגם: ערימות. נפרדות (16205 31316ק56). הערימות הרבות מאפשרות שימוש יעיל ופשוט להקצאת כמויות קטנות של ויכרון (כמו הזיכרון שדרוש למצביע בודד). בסעיפים שיבואו בהמשך, תלמד יותר על הדרך שבה פווסוחוא מנהלת את הציכרון. כמו כן, תלמד עלל חלק מהפונקציות שמשתמשים בהם בתוכניות כדי לנחל בצורה יעילה את הזיכרון הגלובלי והווירטואלי של פשוסטחזו. 2 זיכרון גלובלי וזיכרון לוקלי בסעיף קודם למדת שבמודל הליניארי בן 32 הסיביות של יישומי 32ח/, פאוס6חואר (ולכן גם התוכניות שלך) אינה מבדילה בין זיכרון גלובלי לבין ויכרון לוקלי. כתוצאה מכך, 5סחוו (ולכן ג התוכניות שלך), אינה מבדילה בין ערימה גלובלית לבין ערימה לוקלית. על כן, האובייקטים של הציכרון שהתוכניות מקצות על ידי השימוש. בפונקציות 3/0106פס!6 ו-06ו16318 הינם זהים. פווסחוו מקצה את הזיכרון כפרטי (פופאוזק ח1), בדפים שמורים (פסמָּ ספשוחזוחס6, כלומר: דפי זיכרון שאינם נגישים. לתוכניות אחרות) עם אפשרות גישה לקריאה/כתיבה. זיכרון פרטי (עזסוחס!י! פואוזק) הוא זיכרון שתוכניות אחרות, ואפילו תוכניות שרצות (או פועלות) כרגע, אינן יכולות. לגשת אליר הפונקציות 6/0930 ו-06ו/1.00318 יכולות להקצות בלוק של זיכרון בכל גודל שיכולל להיות מיוצג על ידי 32 סיביות ולהתאים לויכרון הקיים, כולל מקום האחסון בקובץ. הדפדוף 6 הפ שנלמד עליו יותר בהמשך. אובייקטי הזיכרון שמוקצים בתוכניות יכולים להיות באחד משני מצבים: קבוע (במקומות מסוימים בויכרוף) או בר- העברה (10/80/6א). כאשר מקצים אובייקט זיכרון קבוע, הוא יישאר במקום הנתון. שלו בזיכרון הפיסי למשך כל משך החיים שלו. את האובייקטים שניתן להעביר אפשר לסמן כניתנים למחיקה 08376300 ב- א.3 פווסטחו/%, אובייקטי זיכרון שניתנים להעברה היו חשובים לניהול הזיכרון לעומת זאת, ב-2ּחו, משתמשים בתוכניות בויכרון וירטואלי, ולכן המערכת יכולה לנהל את הזיכרון מבלי שתהיה השפעה כלשהי על הכתובות הווירטואליות. כאשר המערכת מעבירה דף זיכרון, 605חו ממפה את הדף הווירטואלי למקום חדש. התוכנית משתמשת בויכרון בר-העברה כדי להקצות זיכרון שניתן למחיקה, אשר התוכנית תשתמש בו לעיתים קרובות וגס תמחק אותו מדי פעם (למשל, עבור מערכים. קטנים, מצביעים, וכדומה). 2 זקא32חווו ומבוא ל-ספו 3 הזיכרון הווירטואלי בסעיפים קודמים הצגנו את המונח זיכרון וירטואלי (/חסוחסו! והוטזו/). בסעיף הקודם. הסברנו שמנהל הזיכרון הווירטואלי מאפשר לתוכניות לראות את זיכרון המחשב הפיסי, ואת קובץ הדפדוף (שהוא בדרך כלל גדול יותר) - כגוש אחד של זיכרון רציף. כדי לאפשר לתוכניות לנחל את הציכרון בדרך זו, מנהל הזיכרון הווירטואלי מאפשר לתוכניות לעבוד עם מפות (805). המתייחסות לציכרון הממשי, במקוס לעבוד עם. הזיכרון הממשי עצמו. מכיון שעובדים עם זיכרון רציף מדומה, ולא עם גוש זיכרון אמיתי רציף, המעצבים של פאוסטחווו קראו למודל הזיכרון הוה בשם מודל הזיכרון הווירטואלי 1066 עזסוחפוי ומוזוע). תרשים 15.1 מציג מודל לוגי, שמראה כיצד 5ו0חו/ו משתמשת בציכרון וירטואלי כדי לגשת לזיכרון פוסי. בתובות הזיברון הפיר ב וה משמן בנגה בתובות זיכדון וירטואלר 6-ו ץע וחור 1 == וקפוה השעמ 2 185 פפ +-------ץ 1006 תרשים 15.1 : 5ו60חו/ משתמשת בציכרון וירטואלי כדי לגשת לזיכרון פוסי. בגלל הדרך שבה 6005חו. מנהלת את הזיכרון הווירטואלי, מרחב הכתובות הווירטואליות של כל תהליך גדול הרבה יותר ממרחב הכתובות הפוסיות של כל התהליכים ג יחד. פווסחוא. משתמשת בכונן הקשיח כמקום אחסון נוסף, של הזיכרון הווירטואלי. כמות הזיכרון הכללי שעומדת לרשות תהליך כלשהו, הינה הסכום של הזיכרון הפיסי ושל מרחב המקום החופשי שבקובץ הדפדוף (₪6 הו של פאוס0חוו, שנמצא בדיסק הקשיח. קובץ הדפדוף הוא קובץ בדיסק ש-60%05חוא משתמשת בו כדי להגדיל את הזיכרון האפקטיבי של המחשב. סח מארגנת את מרחב הזיכרון הווירטואלי בדפים (סטָק), או יחידות זיכרון (חסוח6/ 07 פזוחט). גודל. הדף תלוי במחשב המארח (0050). באפשרותך לקרוא לפונקציה 0/ח1ו6615/510 כדי לדעת מה גודל הדף במחשב. למדת שבמודל הזיכרון 32חוו, מערכת ההפעלה מספקת לכל תהליך (06059זק) את. מרחב הציכרון הפרטי שלו. כאשר מטלה (6גזחד) מופעלת בתהליך, היא יכולה לגשת. לויכרון ששייך לתהליך שלה בלבד. הזיכרון ששייך לתהליכים האחרים נסתר מפני פרק 15: ניהול זיכרון = 393 המטלה הפועלת, ואין לה גישה אליו. מכיון שלכל תהליך יש מרחב זיכרון וירטואלי פרטי של 468, הוא יכול לראות את הזיכרון כאילו הוא נמצאא במרחב הכתובות. 0 עד שחקפקקא0. שני תהליכים שפועלים בו-ומנית יכולים לאחסן זיכרוך בכתובת 0412341234 מבלי לפגוע זה בוה. שימוש באותה כתובת לא היה אפשרי, אם: שני התהליכים היו משתמשים באותו מרחב זיכרון. במציאות, מנהל הזיכרון הווירטואלי ממפה את הכתובת הווירטואלית לכתובת פיסית. ממשית - שיכולה להיות בויכרון הפיטי של המחשב, או בקובץ הדפדוף. מה שחשוב הוא, שהיישום יתייחס לכתובת הזיכרון 012341234 - ולא משנה אם היא נמצאת בויכרון הפוסי ((/ה) בכתובת ממשית 00012345א0, או בסקטור 14352 שבכונן הדיסק. של המחשב. לכן, מנהל הזיכרון הווירטואלי מאפשר לך להפעיל תוכניות רבות. בו-ומנית, מבלי לגרום לך לבחון כל הזמן אם תוכנית אחת אינה פוגעת בויכרון של תוכניות אחרות שפועלות במקביל במערכת. ב- 5וס6חו%+, מערכת ההפעלה מחלקת את מרחב הזיכרון הווירטואלי בן ה-8א4 של כל. תהליך לארבע מחיצות. המחיצה הראשונה, במרחב הכתובות 0400000000 עד 00039008 (מחיצה של 4/8 בתחתית מרחב הציכרון הווירטואלי) מיועדת לשמירת. תאימות עם 15-05 ועם פווטוחו/וו בגרסת 16 הסיביות. אסור שהיישומים של לּחוא+ יקראו או יכתבו במחיצה זו. אס היישום מנסה לנשת לזיכרון זה, מערכת ההפעלה. מחוירה מצביע .)א והדבר עלול לגרו לאי-יציבות (שמובילה לנפילת התוכנית, נעילת מערכת ההפעלה, וכדומה). סח משתמשת במחיצה שבמרחב הכתובות 0400400000 עד -0790958 עבור החלק הפרטי של התהליך; זהו מרחב כתובות שאינו משותף 300/65 60ז8חפחו 6, תהליכים אחרים של 032וו אינם יכולים לקרוא מזיכרון זה או לכתוב בו, אד לנשת בצורה כלשהי לנתונים של תהליך אחר שמאוחסנים בחלק זה, שגודלו כ- 268 עבור היישומים שלך, אתה צריך להחזיק את רוב החומר של התהליך שלך בתוך אזר מוגן זה. 5ס0ח//ו משתמשת ב- 268 הנותרים של מרחב הציכרון הווירטואלי של התהליך כדי ‏ לאחסן בו קבצים משותפים וקבצי מערכת ההפעלה. כאשר עובדים עם הזיכרון במרחב הכתובת של התוכניות, צריך להימנע מהגישה למרחב כתובת שמעל ל- 80000000א0, אלא אם התוכנית שלך מנסה באופן מפורש לגשת לקובץ משותף או אל קוב מערכת. 4 מבט נוסף על ערימות (25ן163]) למדת בסעיף 15.3 ש-0008ח1/ מקצה מרחב כתובות וירטואלי של 468 עבור כל תהלוך. מופעל. פונקציות הערימה (פחסטסחט פבסו) של לח מאפשרות לתהליך ליצור ערימה פרטית 657 סוהאזק), שהיא למעשה בלוק של דף אחד או יותר במרחב הזיכרון של התהליך. הפונקציה 6300/0366 יוצרת ערימה בגודל נתון, והפונקציותת 6 ו-869ק68/ מקצות: ומשחררות את הזיכרון שבערימה. כאשר יוצרים ערימות בתוכניות פאוסחואו, הערימה מתחילה בכתובת 079955 וממשיכה לגדול, אס דרוש, בתחום ה-2/8 של הזיכרון השמור לתהליך ( 6 0055 06 4 321חווו ומבוא ל-ספו באפשרות האובייקטים מסוג ערימה לצמוח באופן דינמי בתוך התחום שהוגדר להם. בעת שנוצרו על ידי הפונקציה 46901638 הגודל המקסימלי של הערימה מגדיר את. מספר דפי הזיכרון שנמצא במלאי הערימה (₪656065 מ3ס). הגודל ההתחלתי מגדיר. את ההקצאה הראשונית של מספר הדפים השמורים (0פ)וחוחסס) לקריאה/כתיבה. וסחוו. מקצה אוטומטית דפיס נוספים מהמרחב השמור 50369 86507460) של הערימה, כאשר הדרישות של 7630/06 עוברות את הנודל הנוכחי של הדפים שכבר הוקצו פס 6סזאווחחזסס). כלומר, 5ואס6חו מקצה דפים חדשים לשימוש התוכנית. מתוך מלאי האיכרון שלה. לאחר ש-605חו מקצה (פטווחוחסס) דפים לערימה, היא אינה משחררת דפים אלה עדד שהתהליך מסתיים, ‏ או עד שהתוכנית מפרקת את הערימה עם הפונקציה 00500369. מכיון שלויכרון המוקצה בערימה על ידי התוכניות עם ₪680106 יש מקום קבוע במרחב הזיכרון הווירטואלי של התהליך והמערכת איינה יכולה לדחוס את. הערימה, צריך לכתוב את היישומים כך שיגרמו למינימוס של פיצול בערימה. הזיכרון של ערימה פרטית נגיש רק לתהליך שיצר אותה. אס תיקיות קישור דינמי (37זפ/1 אחו-6והחמחעם, בקיצור 11ס) יוצרת ערימה פרטית, 005חו. יוצרת. את הערימה הואת במרחב הכתובת של התהליך שקרא לתיקיית הקישור הדינמי (תחת. א9 605חו, מעל 8000000א0). אך רק התהליך שקרא לתיקיית הקישור הדינמי יכולל לנשת אל המידע של תיקיית הקישור הדינמי - הערימה הפרטית שנוצרה. פירוש. הדבר, שתהליכים רבים שמפעילים את אותה תיקיית קישור דינמי, יכולים לגרום. למספר רב של ערימות פרטיות שנוצרות לתיקיה זו, אבל כל מופע של תיקיה יכול לגשת לערימה פרטית אחת בלבד. 5 הקצאת בלוק זיכרון מהערימה הגלובלית למדת שבאפשרות התוכניות להשתמש במספר טכניקות כדי להקצות סוגים שונים של ציכרון בסביבת א9 פאוסנחוא ו- ד/ פואסטחו\. אחת ההקצאות הנפוצות היא הקצאת זיכרון מהערימה הגלובאלית, אשר דומה להקצאת הזיכרון שביצעת כבר בתוכניותת 5, באמצעות פונקציות כמו ₪306 ו-3106. משתמשים בפונקציה 6003/4166 כדר להקצות זיכרון מהערימה הגלובלית. פונקציה זו מקצה מהערימה את מספר הבתים. שפי שמוגדר בפרמטר שלה. כותבים את הפונקציה 6100341106 כמו בהגדרה שלהלן ) 6109181106 מתמסנטט 8001 8110080108 100% // ,138עט פאצט 1106 60 5שףעט 08 צסמחטה // ואט ₪ הפרמטר פס מגדיר כיצד רוצים להקצות את הציכרון. אם הפרמטר פס הוא: אפס, ברירת המחדל היא הדגל ספאז" 6%6%%. מלבד הצירופים שאינס תואמים, אשר מובאים בטבלאות שלהלן, כאשר התוכנית קוראת לפונקציה 06ו/ו6/093 באפשרותה. פרק 15: ניהול זיכרון = 395 להשתמש בכל שילוב של דגלים שמפורטים בטבלאות. כדי לציין אם הפונקציה הקצתה זיכרון קבוע (66א₪) או בר העברה (10030/6/), צריך להגדיר את אחד הדגלים. שמפורטים בטבלה 15.1 טבלה 15.1: סוגי הקצאת זיכרון לשימוש עס 61058181!06. דגל פירוש ספא ואפוא6 | מקצה זיכרון קבוע. התוכניות אינן יכולות לשלב דגל זה עם: הדגל 10/6886 616% אוו 6 01508081 %פ/6. הערך המוחזר מצביע לבלוק הזיכרון, כדי שאפשר יהיה לגשת. אליו פטס 6% | מקצה זיכרון בר-העברה. התוכניות אינן יכולות לשלב דגל. זה עס הדגל 1650 6%8%. הערך המוחזר הו ידית של. אובייקט הזיכרון, המייצגת ערך בן 32 סיביות, והיא פרטית. לתהליך הקורא. כדי לתרגם את הידית למצביע, צריך להשתמש בפונקציה 00311066ו6. הד | משלב את הדגל 1850 6% עם הדגל זזא2601 65% שבטבלה 15.2 6 | משלב את הדגל 815הפשסו 698% עם הדגל. דואז2680 66% שבטבלה 115.2 בנוסף לדגלים שמצוינים בטבלה 15.1, הפרמטר פסוט יכול להכיל כל ערך מהערכים. שמפורטים בטבלה 15.2, מלבד המקומות שהטבלה מציינת שאי אפשר לשלב את הדגל. עם דגל אחר. טבלה 15.2: ערכי דגלים נוספים לשימוש עם הפונקציה 61088181!06. דגל פירוש מהאוופפסס 6/8 | מקצה זיכרון שמשמש פונקציות חילוף נתונים דינמי (6פַה560 813 ווהפחץם, בקיצור פסם), עבור תקשורת. במסגרת חילוף נתונים דינמי. דגל זה שימושי לתאימות. עם יישומי 16חו. חלק מה*ישומים יכולים להשתמש. ב-0085%885 618% כדי לשפר את פעולות חילוף הנתונים הדינמי, ועל התוכניות להגדיר את הדגלל פס 66% אם הן ישתמשו בזיכרון לחילוף. נתונים דינמי. רק יישומים שמשתמשים בחילוף נתונים. דינמי, או הלוח (000316ו01) המשמש להתקשרות בין תהליכים, צריכים להגדיר את הדגל 05185 6/16%%. 1508085 611₪%% | מקצה ציכרון שאפשר למחוק אותו כשאינו דרוש עוד (והר זיכרון שאינו קבוע בכתובת ספציפית במרחב הכתובת. הווירטואלית של התהליך). התוכניות אינן יכולות לחבר. דגל וה עם הדגל 150 6/6%. ייתכן שחלק מהיישומים מבוססי 32חו/ו יתעלמו מדגל זה. 6 321חווו ומבוא ל-ספו דגל פירוש הפוצ | אפ | 2חוו מתעלמת מדגל זה. 871 32ח/% מספק דגל זה. לתאימות עם גרסאות קודמות של פוסטחווו. דסאקווס6סא פוא | אינו מדוחס או מוחק זיכרון כדי לספק דרישות להקצאת. אכרון. 150%0פסא 616% | אינו מוחק זיכרון כדי לספק דרישות הקצאת הציכרון. ספאאהם. דסא ואפויז6 | 32חוו מתעלמת מדגל זה. 871 32ח/% מספק דגל זהה לצורך תאימות עם גרסאות קודמות של פשוסחו/ זהנדסא ואוו | 32חוו מתעלמת מדגל זה. 1ק ₪032 מספק דגל זהה לתאימות עם גרסאות קודמות של פשוסטחזו. שה5 ישו | מקצה זיכרון שמשמש את פונקציות חילוף הנתונים. הדינמי 568 0318 6וחמחעם, בקיצור שספ), לתקשורת במסגרת חילוף נתונים דינמי. כמו הדגל. פס ו 25801 68% | מאתחל את הזיכרון באפס. בנוסף להגדרת סוג הזיכרון שעל הפונקציה 6/0036 להקצות, התוכנית חייבת. לפרט באמצעות הפרמטר 68/6055 את מספר הבתים שצריך להקצות. אם פרמטר שווה לאפס, והפרמטר חַגט מגדיר את הדגל 5 81פסו 6%6%, הפונקציה תחזיר ידית לאובייקט זיכרון ש-08חו מסמנת כניתן למחיקה. אם הפונקציה מצליחה, הערך המוחזר יהיה הידית של אובייקט הזיכרון החדש שהוקצה; אם הפונקציה נכשלת, הערך המוחזר יהיה וטא אם הערימה אינה מכילה די שטח חופשי כדי לספק את הדרישה, 6100341106 מחזירה. וטא. מכיון ש-06או3פס/6 משתמשת בערך ₪011 כדי לציין שגיאה, פווסשחו/ו לעולם. אינה מקצה כתובת וירטואלית שערכה אפס. לכן קל לגלות את השימוש במצביע טא. פווסטחוו יוצרת את כל הזיכרון עם גישה להפעלה, ואינה מחייבת פונקציה מיוחדת כדי להפעיל באופן דינמי קוד שנוצר. פווס0חו// מבטיחה שציכרון שהוקצה על ידי התוכנית עם הפונקציה 6093/06 יקבע על פי גבולות של 8 בתים ‏ סוץ8 8 3 0005חו/ מגבילה את הפונקציות >סוהו3פס!6 ו-1063/0106 להקצות יחד עד 65,536 ידיות לכל תהלוך, עבור ציכרון 68866ש0! 616% (עבור זיכרון שמוקצה גלובלית) ועבור זיכרון 058845 15% (עבור זיכרון שמוקצה לוקלית). הגבלה זו אינה חלה. על זיכרון 0פא1 68% או ספאזי 8י). אם הפונקציה 6100841106 מצליחה, היא מקצה לפחות את כמות הזיכרון שנדרשה בקריאה לפונקציה. אס הכמות שבפועל ש-0ו/6/00810 מקצה גדול יותר מהכמות שנדרשה בקריאה לפונקציה, היושום יכולל להשתמש בכמות כולה. כדי לדעת את מספר הבתים שהוקצו בפועל על ידי הפונקציה 6, משתמשים בפונקציה 610931506. פרק 15: ניהול זיכרון = 397 כדי להבין יותר טוב את פעולת הפונקציה 06ואו6/008, = התבונן ‏ בתוכנית. 6 |8פס/6, = שנמצאת | בתקליטור = המצורף | לספר | וה | (בתיקיה 5פבת)8006559285). התוכנית מקצה זיכרון כדי לאחסן מחרוזת. כאשר מתחיל היישום, הקוד שמטפל בהודעה 685416 א/ יוצר מאגר בן 27 תווים (26 בתים וה-11 המסיים). כאשר המשתמש בוחר !6ד, התוכנית מציגה את המאגר ואת תוכנו על המסך. 6 שימוש ב-6!008]864!!06 כדי לשנות גודל ערימה באופן דינמי למדת בסעיף 15.5 שבאפשרות התוכניות להשתמש בפונקציה 60931806 כדי להקצות. ציכרון בערימה הגלובלית. אך פעמים רבות, התוכנית חייבת להקצות בלוק זיכרון מחדש, לאחר ההקצאה הראשונה. אפשר לעשות צאת על ידי הפונקציה 06ו61003/864. פונקציה וו משנה את הגודל או המאפיינים של אובייקט זיכרון גלובלי מוגדר. הגודל יכול לגדול או לקטון, בהתאם לקריאה. את הפונקציה 6003/863/06. כותבים: בתוכניות, כמו בהגדרה זר ) 1106ת4186מ₪10 מתמס1טט 60%מס עעסמסה 910281 שת: 50 ב1התמת // 00 10% סמ 05 5126 אשת // ,9868 סהסאם 001605 208110068 50 שמת // טפאט ₪ הידית וחשווח מוהה את אובייקט הזיכרון הגלובלי ש-6ו6003/861. מקצה מחדש. אחת משתי הפונקציות 6/003/0/06/ או 6/003/864106/ החצירו ידית ואת קוד הפרמטר 0408005 מגדיר את הגודל החדש, בבתים של בלוק הזיכרון. אם הפרמטר 5 שווה לאפס והפרמטר פסטוחט מגדיר את הדגל 5 8אפשס) ‏ 6%5%, הפונקציה. מחזירה את הידית של אובייקט ציכרון ש-פווסשחואו סימנה כניתן למחיקה. אם הפרמטר 08065 שווה לאפס והפרמטר 5סטוחט מגדיר את הדגל טסו שו6, פונקציית 01 מתעלמת מהפרמטר 08/065. הפרמטר פסָו מגדיר כיצד להקצות מחדש את אובייקט הזיכרון הגלובלי. אס הפרמטר פסטחט מגדיר את הדגל +תופסו 8%א6, הפרמטר פסטוחט מגדיר את המאפיינים של אובייקט הזיכרון, ופונקציית 1 מתעלמת מהפרמטר 8065ו6, אחרת, הפרמטר פסוט שולט בהקצאה. מחדש של אובייקט הציכרון. 8 71א52חוו ומבוא ל-ספו כאשר קוראים לפונקציה ,6/093/88%/06‏ התוכנית יכולה לשלב את הדגל +זנססוי אפוא6 עס אחד או שני הדגליס שמפורטים בטבלה 15.3. טבלה 15.3: דגלים שמתאימים לשימוש עס הדגל אנ סו 6%ו6. דגל 15 ו ב פירוש מקצה ויכרון שניתן למחיקה, כאשר מגדירים גם את הדגל 008% 6%5%. פווס6חו מתעלמת מדגל זה, אם. האובייקט הוקצה מקודס כבר- העברה (05א), אר אס הוגדר הדגל 10/5815 68%. עבור דא! פווסחו/ו בלבד: משנה אובייקט זיכרון קבועע לאובייקט זיכרון בר-העברה, כאשר מגדירים את הדגל. סו ו אם הפרמטר פסטט אינו מגדיר את +זזססו 6%6%, הוא יכול להיות כל שילוב של הדגלים שמפורטים בטבלה. טבלה 15.4: דגלים נוטפים עבו דגל ב ו 250 ו 14 ור הפרמטר בוח פירוש כאשר 0008065 שווה לאפס, 10068815 676% מוחק. את בלוק הזיכרון הקודם בר-ההעברה ואשר ניתן למחיקה. כאשר מונה הנעילה טחטסס 6066 של האובייקט אינו שווה לאפס, או אם הוא אינו בר-העברה וניתן למחיקה, הפונקציה נכשלת. כאשר 00895 אינר שווה לאפס, 10068865 6/16% ואפשר למערכת. להעביר את הבלוק שהוקצה שוב למקום חדש, מבלי לשנות את המאפיינים בר- העברה (פוסַסוו) או קבוע (80אח) של אובייקט הזיכרון. אס האובייקט קבוע, יכול. להיות שהידית אשר הפונקציה מחזירה תהיה שונהה מהידית המוגדרת על ידי הפרמטר וחסווח. כאשר האובייקט בר-העברה, התוכנית יכולה להעביר את. הבלוק מבלי לגרום לידית האובייקט להיותת בלתי-תקפה (9ו14806 שחד חַוְוּח1), אפילו אם. קריאה קודמת לפונקציה 6/03/6066 נועלת את. האובייקט כרגע. כדי להשיג את הכתובת החדשה של בלוק הזיכרון, צריך להשתמש ב-10031806%. מונע מ-65ו00חו/ מלדחוס או למחוק ציכרון לצורך. סיפוק דרישת הקצאת הזיכרון. גורס ל-5וס6חו/+ לאתחל את תוכן הזיכרון הנוסף. באפס, כאשר אובייקט הזיכרון גדל. פרק 15: ניהול זיכרון = 399 אם הפונקציה מצליחה, הערך המוחזר הוא הידית של אובייקט הזיכרון שהוקצה מחדש; אם הפונקציה נכשלת, הערך המוחזר הוא 1שא. אס 8906וגפס/6 מקצה מחדש אובייקט בר-העברה, הערך המוחזר הוא ידית של אובייקט הזיכרון. כדי להמירר את הידית למצביע, צריך להשתמש בפונקציה 60031106. אם 06ו0018601ו6 מקצה. מחדש אובייקט קבוע, הערך המוחזר של הידית יהיה הכתובת של הבית הראשון של בלוק הזיכרון. כדי לגשת לזיכרון, באפשרות התהליך פשוט להשתמש בהמרת סוג 6950) של הערך המוחור למצביע. אס 609318606 נכשלת, היא אינה משחררת את. הזיכרון המקורי, והידית והמצביע המקוריים יישארו תקפים. כדי להבין טוב יותר את פעולת הפונקציה 003186%06ו ,6‏ התבונן בתוכנית 6 61058 שנמצאת בתקליטור המצורף לספר זה (בתיקיה 018015). התוכנית. פועלת במידה רבה כמו התוכנית 1106 ו6/088. עם זאת, התוכנית ₪60/106 6/0931 גס מקצה מחדש עוד 27 בתים של זיכרון כדי להציג את האלף-בית באותיות קטנות כאשר המשתמש בוחר באפשרות 11650 7 מחיקת בלוק זיכרון שהוקצה בוודאי השתמשת בעבר בפונקציות 66 ו-661686. כדי למחוק (50316ו0). זיכרוך שהוקצה בתוכניות. כאשר מקצים או מקצים מחדש זיכרון מהערימה הגלובלית, צריך. להשתמש בפונקציה 6093108636 כדי לשחרר את הציכרון לאחר שהתוכנית סיימה את השימוש בו. הפונקציה 310/86316פס/6 מוחקת בלוק זיכרון גלובלי שהוקצה קודם. על ידי השימוש בדגל 0150880886 אפוא6. מונה הנעילה של אובייקט הזיכרון שרוצים למחוק חייב להיות אפס, או שהפונקציה תיכשל במחיקת הזיכרון. משתמשים. בפונקציה 6003101936 בתוכניות כמו בהגדרה שלהלן 10 תפנב 0% צפסתסת 16081 סט 0 16ממת // 15 הסט / הפרמטר שופ מצהה. את אובייקט הזיכרון הגלובלי שרוצים למחוק. אם הפונקציה מצליחה, היא מחזירה את הידית של אובייקט הזיכרון (כלומר, הידית חשופו0ח). אש הפונקצייה נכשלת, היא מחזירה את הערך )טא הפונקציה 5636וס!3מסו6 מוחקת רק אובייקטים גלובליים שהתהליך הקורא הקצה עלל ידי השימוש בדגל 015680815 6%/6%. אס התהליך מנסה למחוק אובייקט קבוע אור נעול, הפונקציה נכשלת. למרות שהפונקציה 5036ו0ו6/003 מוחקת את בלוק הזיכרוך של האובייקט, ידית האובייקט נשארת תקפה. התהליך יכול להעביר באופן עקבי את הידית אל הפונקציה 6100318806 כדי להקצות בלוק זיכרון גלובלי אחר שמוגדר עלל ידי אותה ידית. כדי להבין טוב יותר את פעולת הפונקציה 086316ו6003, התבונן בתוכנית 66 |8פס61 שנמצאת בתקליטור המצורף (בתיקיה 0115 0 321חווו ומבוא ל-ספו 8 הפונקציה 766-]1008 בסעיף הקודם למדת על הפונקציה 6/093/0186316, אשר התוכניות משתמשות בה, כדיי למחוק בלוקים של זיכרון שהוקצו קודס, ולהשאיר את ידית הזיכרון שנמחק לשימוש. בעתיד. עם זאת, כאשר יודעים שהתוכנית לא תשתמש יותר באותו בלוק זיכרון, ואם. רוצים לשמור על התוכנית מלהשתמש באותו בלוק זיכרון, או אם לא בטוחים אם התוכנית הקצתה את הציכרון על ידי השימוש בדגל 150880865 6/16%, התוכנית. יכולה להשתמש בפונקציה 8/65ו6/093. כדי לשחרר אובייקט זיכרון. הפונקציה 036 משחררת את אובייקט הזיכרון הגלובלי המוגדר וגורמת לידית האובייקט. של הציכרון להיות לא-תקפה. משתמשים בפונקציה 61003666 בתוכניות כמו בהגדרה. שלהלן מו .010881 ) פע 61081 הסט הפרמטר וחפווח מציין את אובייקט הזיכרון הגלובלי שרוצים לשחרר. כאן, לא כמו בפונקציה 0/863/6ו6/008, כאשר הפונקציה 6003/8169 מצליחה, הערך המוחזר הוא: 1וטא. אס הפונקציה 6003805 נכשלת, הערך המוחזר יהיה שווה לידית אובייקט. הזיכרון הגלובלי. חריגה מסוג הרס ערימה (חסווקטזזס6 קבטו או שגיאת גישה (חס0גוסו 00695א) = אסנזא סז 400855 אסנדק5סא6 - יכולה לקרות כאשר התהליך מנסה לבחון את הזיכרון או לשנות אותו, לאחר שכבר שחרר את הזיכרון קודם לכן. אס הפרמטר ויפוח שוזה ל- 1 15166פס/6 נכשלת והמערכת תיצור חריגה מסוג שגיאת גישה. שתי הפונקציות 6/0096 ו-1063/566 = משחררות ‏ אובייקט ‏ זיכרון ‏ נעול 00600 = עזסות6//-106666). = לאובייקט. ציכרון נעול יש מונה נעילה. גדול מאפס. הפונקציה 6003/06 נועלת אובייקט זיכרון גלובלי (המונע מפונקציה אחרת למחוק. את אובייקט הזיכרון) ומגדילה את מונה הנעילה של האובייקט באחד. הפונקציה 60031006 מבטלת את הנעילה של אובייקט הציכרון ומפחיתה את מונה הנעילה. באחד. לקבלת מונה הנעילה של אובייקט זיכרון גלובלי, צריך להשתמש בפונקציה סו + העדה: תתת זא פאסטחוו, אם היישום מופעל תחת מנפה שגיאות גירסה (086) של זא 5סחווו, כמ שמופץ בתקליטור ואסח פ6 אס5, הפונקציות 6003/5166 ו-063/5169. מכניסות נקודת עצירה לפנר שחרור האובייקט הנעול. דבר וה מאפשר למתכנת לבדוק בדיקה כפולה של ההתנהגות הדרושה. כאשר במצב וה מקלידים 6 בומן השימוש במנפה השגיאות (פפַפ060), תתבצע פעולת השחרור. פרק 15: ניהול זיכרון 401 9 הפונקציות 6/003/1.06% -16 0313 כאמור, באפשרות התוכניות להשתמש בפונקציות 6003166 ו-6100886806. כדר להקצות זיכרון מהערימה הגלובלית. אך כמו שראית, שתי פונקציות ההקצאה מחזירות ידית אל הזיכרון המוקצה. עם זאת, תרצה שרוב התוכניות תשתמשנה בויכרון עס מצביע. באפשרותך להשתמש בפונקציות 600316 ו-6/003/868/06 כדר להמיר בקלות את הויכרון שהוקצה למצביע וחורה שוב אל הידית. הפונקציה 6% נועלת אובייקט ציכרון גלובלי ומחוירה מצביע אל הבית הראשון בבלוק. הזיכרון של האובייקט. אין באפשרות התוכניות להעביר או למחוק את בלוק הזיכרו. הקשור עם אובייקט זיכרון נעול. עבור אובייקטים של זיכרון המוקצים על ודי השימוש בדגל 085 61416%, הפונקציה מגדילה את מונה הנעילה שקשור עם. אובייקט הציכרון. את הפונקציה 6/008106% כותבים כפי שמוצג לחלן. 6109811008 פצסטקת 60%נמס עפסמסה 610081 סת6 05 2882085 // 010 / הפרמטר וזח שבפונקציה 6/0931106% מצהה את אובייקט הזיכרון הגלובלי. אחת. משתי הפונקציות 6003101066 או 06וחוגפס/6. מחזירות. את הידית הזאת. אם הפונקציה 6ואו3פס|6 מצליחה, הערך המוחור יהיה מצביע לבית הראשון בבלוק הזיכרון; אס היא נכשלת, הערך המוחזר הוא א. מבנה הנתונים הפנימי של כל אובייקט זיכרון מכיל מונה נעילה שמאותחל באפס. עבור אובייקטים של ויכרון מסוג בר-העברה (6וטפעס!), 6/0991106%. מגדילה את המונה באחד, והפונקציה 6%טוחטופ6/0 מפחיתה את המונה באחד. עבור כל קריאה שהתהליך מבצע ל-6/09311066 = עבור אובייקט, התהליך חייב לבסוף לקרוא ל-06%/ח0ו6/093. התוכנית אינה יכולה להעביר או למחוק זיכרון נעול, אלא אם כן התוכנית מקצה מחדש את אובייקט הזיכרון על ידי שימוש בפונקציה 6ו003/864ו6. בלוק הזיכרון של אובייקטים נעולים נשאר נעול, עד שהתוכנית מורידה את מונה הנעילה של בלוקי הזיכרון לאפס, ואו באפשרות התוכנית להעביר, או למחוק את הזיכרון. לאובייקטים של זיכרון שהוקצו על ידי השימוש בדגל ס5אז 616% יש תמיד מונה נעילה שערכו אפס. עבור אובייקטים אלה, ערך המצביע המוחור שווה לערך הידית. המוגדרת. אס התוכנית מחקה כבר את בלוק הזיכרון המוגדר, או אם גודל בלוק. הזיכרון שווה לאפס בתים, הפונקציה 60931106% מחצירה 01. ערך מונה הנעילה של. האובייקטים הנמחקים הוא תמיד אפס. את הפונקציה 003106%ו6 כותבים בתוכניות. כמו בקטע הקוד שלהלן :(27 ,פאא6) 6108181106 = השעת מהמסנטט ת095ק1 ((מפעמ) 81506%מ610 (578ת1) = תסק) 65 משעת) :4 (מתט 2 זקה2בחווו ומבוא ל-ספו בקטע קוד וה מקצים ידית ל-27 בתים של זיכרון (המשתנה וחפואו), אחר כך נועלים. את הזיכרון הזה במצביע וחפוק והדבר גורס באותו ומן לחמרה לסוג מחרוות. כמו שלמדת, התוכניות משתמשות פעמים רבות ב-31106%פ6/0 כדי להמיר ידיות זיכרוך למצביעים. בדרך כלל, משתמשים בפונקציה 6003188006 כדי לחמיר מצביע לידיתת איכרון. הסיבה העיקרית להמרת המצביע חזרה היא ההכנה לפקודה 8108ו0/003. את. הפונקציה 6093/8066 כותביםם בתוכניות כמו בהגדרה זר ) 6104188018 מתמסנט 106% עעסחסה 010281 שמ% ס צסטמנסק //‏ מסאק מצסטסק1 לו הפרמטר וח6וום הוא מצביע לבית הראשון של בלוק הזיכרון הגלובלי. הפונקציה 06% מחזירה מצביע זה. אם הפונקציה 6093/888066 מצליחה, הערך המוחזר הוא, ידית של אובייקט הזיכרון הגלובלי המוגדר; אס הפונקציה 1003182066 נכשלת, הערך המוחזר הוא א כאשר הפונקציה 600306 = מקצה. אובייקט. זיכרון על ידי השימוש בדגל הטסו 6//6%, היא מחזירה את ידית האובייקט. הפונקציה 6093/106% ממירת ידית זו למצביע אל בלוק הזיכרון, ו-6/093/08006 ממירה את המצביע בחזרה לידית. בדרך כלל, כותבים את הפונקציה 6100318066 כמו שרואים בקטע הקוד שלהלן (מששם) 1008188816 = הסוא תמסט ( ו 10% מנט = מס ; (מממתפטסון ואפוע ,1+ (26*2) ,מפעת) 100נתסה81מ010 = השעת במקרה המסוים הזה, התוכנית יוצרת את הידית, ואחר כך מבטלת את הנעילה שלה. (שחרור הזיכרו. אחר כך, התוכנית מקצה מחדש את הזיכרון, כמו שנדרש. לעיתים. תחוור ותמיר את הידית שוב למצביע. 0 בדיקת זיכרון המחשב למדת ש-8וס6חו מחזיקה מידע אודות הזיכרון הפיסי ואודות הזיכרון הווירטואלי של המחשב. פעמים רבות, התוכניות תדרושנה מידע על גודל הזיכרון החופשי, אשר התוכניות ‏ (היישומים) ‏ יכולות ‏ לגשת אליו. ‏ אפשרות להשתמש בפונקציה 3 כדי להשיג מידע על המצב הנוכחי של ציכרון המחשב. בסיום. פעולתה, הפונקציה מחוירה מידע על הזיכרון הפיסי והווירטואלי. ‏ משתמשים בפונקציה 6/008116000/51365 בתוכניות כמו שרואים בהגדרה שלהלן 101 פצסטר עפסהפה שמ) 60 שפסתנסק //‏ 6%::ממק1 פטצהץפצהסונטעפ 1 // ו פרק 15: ניהול זיכרון ‏ 403 הפרמטר זמ!/8ק! מצביע למבנה 17%18%08%515705 אשר מכיל את המידע אודות. הזיכרון התקף שמוחזר על ידי 305ו5/מסוחסויוו003ו6. לפני הקריאה לפונקציה 6 03ס/6, התהליך הקורא צריך לקבוע ערך לאיבר חופַח0049 של מבנה וה. המבנה 108%515705א6 מכיל מידע על הזיכרון התקף כרגע. ממשק התכנות. קה 5סחווו מגדיר את המבנה 6/0₪%515705ו!, כמו בדוגמה זור | 05 תשפצהסעפם ‏ 565006 6465מעט (5 טפ תלפצהסוומונ) ‏ 515608 // פאס 8פג מ1 עעסהסה 05 שהסצסק // טאו עצסחסה 81ש1פצתם 0% בשמצט // 01 סהסאם עמ עפסחשה 81ס1פעתק ש6שף // שמא סהסאם יתנ 05 ששפעם // = /90:102000115אם סהסאם 6 198 05 פשפעם 5566 // = /869116ט1צפעת0 סאסאם קפ 2882685 05 8שפעמ עשפמ //‏ ;1הטטצ090:8101ם סהסאם =פפעם עספט 68ע+ //‏ ;1במטצנט831עמאם סהסאם ונפו [ כמו שאפשר לראות, המבנה 46/!08%515105. מאחסן מידע חשוב אודות זיכרוך המחשב הזמין כרגע. טבלה 15.5 מסבירה את איברי המבנה 5105ד5/הסואפו באפשרות היישום להשתמש בפונקציה 805ו5עוסוח/שומסו6 כדי לקבוע כמה זיכרוך ניתן להקצות ליישום, מבלי להתנגש עם יישומים אחרים. המידע שמחזירה הפונקציה. 036 משתנה במהירות, ואין הבטחה לכך ששתי קריאות עוקבות לפונקציה זו יחוירו את אותו המידע. טבלה 15.5: איברי המבנה 10₪515105פו איבר תיאור חוסָחו0 | מציין את גודל המבנה. על התהליך הקורא לקבוע ערך לאיבר זה לפני הקריאה ל-519005/ףסוח/א/טס/6. 56ץזסוחו | מגדיר מספר בין 0 ל-100 שנותן מידע כללי אודות הניצול. הנוכחי של הזיכרון. הערך 0 מציין שהציכרון אינו בשימוש. והערך 100 מציון שימוש מלא. תומוד | מציין את מספר הבתים הכולל של הציכרון הפוסי. עחל!ובּהוו0 |. מציין את מספר הבתים הכולל של הזיכרון הפיסי הזמין 6ו65חקו1סדוו | מציין אאת מספר הבתים הכולל שכל התוכניות יכולות לאחסן. בקובץ הדפדוף (6/₪ סָק). שי לב, מספר זה אינו מייצג את הנודל הפיסי הממשי של קוב הדפדוף בדיסק. 6וסָהקוומצהשונ. | ציין את מספר הבתיס הזמין בקובץ הדפדוף. 4 321חווו ומבוא ל-ספו איבר תיאור ובנטחוו13סדו₪ | מציין את מספר הבתים הכולל ש-6005חו/ו יכולה לתאר באצור. המשתמש של מרחב הזיכרון הווירטואלי של התהליך הקורא: והטטזוש!ובא/ו | מציין את מספר הבתים בזיכרון שאינם במלאי השמור. (65660זח) רשאינכו מוקצים (066א!וחוחס6חט) באזור. המשתמש שבמרחב הזיכרון הווירטואלי של התהליך הקורא. כדי להבין יותר טוב את השימוש בפונקציה 0/53005וח6/ו61003, התבונן בתוכנית. 95 וח6!! ו61003, שנמצאת בתקליטור המצורף לספר זה. התוכנית בודקת את מצב הזיכרון הנוכחי ומחזירה את גודל הזיכרון אל חלון התוכנית. 1 יצירת ערימה בתוך תהליך בסעיפים קודמים למדת להקצות זיכרון לתוכניות מהערימה הגלובלית. אך כמו שלמדת קודם, התוכניות מקצות גם בלוקים קטנים יותר של זיכרון מערימה לוקלית. (פרטית). הפונקציה 369006305 יוצרת אובייקט ערימה שהתהליך הקורא יכולל להשתמש בו. הפונקציה שומרת מלאי (65006ה) של בלוק רציף במרחב הזיכרון הווירטואלי של התהליך, ומקצה מקוס אחסון וירטואלי ראשוני מוגדר מבלוק המלאי. את הפונקציה 63016315 כותבים בתוכנית, כמו בהגדרה שלהלן. א מנפוותה 6 811008610 סמש // 10 סאסום מפשג 416181 // ,181815126מצאם סאסום 6 קפסת משת1אמה // 6 סאסוום ו הפרמטר פחסטקס! מגדיר מאפייני רשות (דגלים) לערימה החדשה. דגלים אלה ישפועו על הגישות הבאות לערימה החדשה, באמצעות קריאות לפונקציות הערימה סו ק3ס3!, 66זלבסאז, 6סווהפהקבסה, ו-5026כבסוא). באפשרותך להגדיר דגל אחד או יותר מהדגלים שמפורטים בטבלה 15.6 טבלה 15.6: הדגלים האפשרייס עבור הפרמטר 5חסוזק0. דגל תיאור אסנדק5סאם מדההםווס6 קגסוו | מגדיר שהמערכת תיצור הודעת חריגה, כדי לציין כישלון של פונקציה. לדוגמה, היא: תציין שאין מספוק זיכרון (/זסוח6/-01-וס), במקוס להחזיר טא פרק 15: ניהול זיכרון = 405 דגל תיאור 518 סו לאסו | מגדיר שהערימה לא תשתמש בפעולה הדדית מסוג חסופטואס ופנטוח, כאשר פונקציה הערימה מקצות ומשחררות זיכרון מהערימה. ברירת המחדל, כאשר לא מגדירים את הדגל. 6 0סא לאפאא, היא להפעיל גישה סדרתית אל הערימה. הסדרת הגישה לערימה. (406055/ 687 07 230000ו/50118) מאפשרת. לשתי מטלות או יותר להקצות ולשחרר זיכרון מאותה ערימה בו-ומנית. הפרמטר 6/1/0556 מגדיר את הגודל ההתחלתי של הערימה בבתים. ערך וה קובע את הכמות ההתחלתית של האחסון הפיסיי ש-630070366! מקצה לערימה. סז קבטו מעגלת את הערך כלפי מעלה, לגבול הדף הבא. כדי לדעת את גודל הדף במחשב המארח צריך להשתמש בפונקציה 0/ח1וח665500. אבו הפרמטר 56חחטח%2/ו אינר אפס, הוא מציין את הגודל המקסימלי, בבתים, של הערימה. הפונקציה טסְַטו1 מעגלת את הערך פקפחחטוח/5ווו₪ כלפי מעלה אל גבול הדף הבא, ושומרת בלוק מלאי בגודל הוה במרחב הזיכרון הווירטואלי של התהליך עבור הערימה. אם הפונקציותת 6 או 36986106 מבצעות דרישות להקצאות שעוברות את גודלה של כמות. האחסון הפיסיי ההתחלתית כפי שהוגדרה על ידי 56וג0וח1וו6, המערכת מקצה דפים. נוספים של אחטון פיסי עבור הערימה, עד לגודל המקסימלי של הערימה. בנוסף, אס 6קפחטוחואמ/וו0 אינו שווה לאפס, הערימה לא תהיה מסוגלת לצמוח, ומתקבלת הגבלה אבסולוטית : הגודל המקסימלי של בלוק זיכרון בערימה יהיה מעט. קטן יותר מ- 0400075968 בתיםי (גודל מרחב הכתובת הפרטי של התהליך). דרישות. להקצאת בלוקים גדולים יותר ייכשל, אפולו אם הגודל המקסימלי של הערימה מספיק גדול כדי להכיל את הבלוק. אם קפוחטוחואמוו6 הוא אפס, הוא מציין שהערימה יכולה לצמוח. רק שטח הזיכרון הזמין מגביל את גודל הערימה. דרישות. להקצאת בלוקים גדולים מ- 0400075588 בתים אינן נכשלות אוטומטית; המערכת. קוראת ל->סווגוו כדי להשיג את הזיכרון הדרוש לבלוקים בגודל כזה. יישומים החייבים להקצות בלוקים גדולים של זיכרון צריכים לקבוע לפרמטר 010506 את הערך אפס. כאשר הפונקציה מצליחה, הערך המוחזר הוא ידית לערימה החדשה שנוצרה; אם הפונקציה נכשלת, הערך המוחזר הוא וטא. כדי להשיג מידע מקיף יותר אודות השניאה, עליך לקרוא ל-ז351110 66%. הפונקציה 63006308 יוצר אובייקט ערימה פרטי, שהתהליך הקורא יכול להקצות. ממנו בלוקים של ציכרון, על ידי שימוש בפונקציה 6סואפא. הערך ההתחלתי שיהיה. יקבע את מספר הדפים השמורים (פפטָק 86שווחוחסס) שיהיו בהקצאה הראשונית של 8 עבור הערימה. הגודל המקסימלי קובע את מספר הדפים שבמלאי 9069 865766). דפים שמורים אלה, יחד עס הדפים שבמלאי, יוצרים בלוק רציף 6 321חווו ומבוא ל-ספו במרחב הזיכרון הווירטואלי של התהליך שבו יכולה הערימה לצמוח. אם 66ופפטו? מבצעת דרישות שחורגות ממספר הדפים השמורים, פִואסְחו/ מקצה אוטומטית דפים. נוספים ממלאי הדפים השמורים, בהנחה שאמצעי האחסון הפוסי צמין. רק התהליך שיצר את אובייקט הערימה הפרטי יכול לגשת לזיכרון שמאוחסן בערימה. הפרטית. אם תיקיית קישור דינמי (04) יוצרת ערימה פרטית, היא עושה ואת במרחב. הזיכרון של התהליך שקרא לה. יותר מכך, הערימה נגישה רק לאותו תהליך. המערכת. משתמשת בזיכרון מהערימה הפרטית, כדי לאחסן מבני תמיכה בערימה קפסו 505 0ס0ט5); לכן, לא כל הגודל של הערימה ומין לתהליך. לדוגמה, אם הפונקציה 11630406 דורשת 6468 מערימה שהגודל המקסימלי שלה הוא 64%8, הדרישה יכולה להיכשל בגלל תקורת המערכת. אס לא מגדירים את הדגל 56811176 סא לאשו (ברירת המחדל הפשוטה), הערימה תסדיר את הגישה בתוך התהליך הקורא. הסדרת הגישה (ח3000ו56₪) מבטיחה שלא תהיה התנגשות בשעה ששתי מטלות או יותר מנסות להקצות או לשחרר זיכרון בו-ומנית מאותה ערימה. קביעת הדגל 56818176 סו! קאשוו גורמת לביטול חסימת ההתנגשות ההדדית בערימה. ללא הסדרת הגישה, שתי מטלות או יותר שמשתמשות באותה ידית של הערימה, עשויות להקצות או לשחרר זיכרון בו-ץמנית, דבר שעלול לפגום בערימה. לכן, באפשרותך להשתמש בצורה בטוחה בדגל 56811126 סא קאפ רקי במצבים. הבאים %+ כאשר לתהליך יש מטלה אחת בלבד. + כאשר יש לתהליך מטלות רבות, אך רק מטלה אחת קוראת לפונקציות הערימה עבור ערימה מסוימת. 3% כאשר יש לתהליך מטלות רבות, והיישוס מספק מנגנון משלו לחסימת התנגשויות. (חסופטא והטטטו%) בעת גישה לערימה מסוימת. 2 ניהול הזיכרון של תהליך מוגדר באמצעות פונקציות הערימה כפי שלמדת, התוכניות צריכות להקצות כמות קטנה של ויכרון מערימת הזיכרון שמשמשת את התהליך. התוכניות משתמשות בדרך כלל בפונקציה 66וסַמט₪ להקצאת. בלון זיכרון כוה מתוך הערימה. הזיכרון שמוקצה על ידי 6908106 אינו בר-העברה. (סוטהצסו! ז00!). את הפונקציה 1/63/06 כותביםו בתוכנית כמו בדוגמה זר )681106 פצסטשת א6סנט מ4שת 866ע1פם שג 60 16שממת // ,64 שנסאתט 5 1סצטמסס 811068610 מפשת // סוס 6 60 668עם 05 ששמחטת // 65 ספסאום פרק 15: ניהול זיכרון = 407 טבלה 15.7: הדגלים עבור הפרממטר 95ַ5או. דגל פירוש 60515 מדהחשאס6 קהשו | מציין שמערכת ההפעלה תיצור חריגה. (חסטקססאם) כדי לציין כישלון פונקציה, ולא: תחציר +טאז, כמו למשל במצב שאין מספיק. זיכרון (עזסוחוא-ז0-וס). 5 סא לאפוו | מציין שהערימה לא תשתמש באפשרות מניעת. התנגשות (חסופטוטא |מוסט!א) כאשר הפונקציהה 6300 ניגשת לערימה. צהסוופוא 2580 קאה | מצלין ש-פאוסטחוו תאתחל את הזיכרון שהוקצה, בערך אפס. הפרמטר קבוח מגדיר את הערימה שממנה מקצה 160/06 את הזיכרון. פרמטר זה הוא ידית המוחזרת על ידי אחד משתי הפונקציות 4690070306 אר 1770095510087, הפרמטר 5סַ0 מגדיר מספר דרכים לשליטה בהקצאת זיכרון מהערימה. קביעת אחד משני הדגלים האלה עוקפת את הדגל שצוין בומן יצירת הערימה עס 6סוְַבסו באפשרותך להגדיר דגל אחד, או יותר, עבור הפרמטר פַג00₪, מאלה המפורטים. בטבלה 15.7 לבסוף, הפרמטר 08665 מגדיר את מספר הבתים ש-06ו1630%1 מקצה. אם הפרמטר. פס מגדיר ערימה "שאינה צומחתי, 000865 חייב. להיות פחות: מ- 7858א0. קוראים לפונקציה 63006366 עם ערך שאינו אפס, כדי ליצור ערימה "שאינה צומחתי". אם הפונקציה מצליחה, הערך המוחזר הוא מצביע לבלוק הזיכרון שהוקצה; אס הפונקציה נכשלת והדגל 005011085 פדאהפא66 קהשוא. לא הוגדר, הערך המוחזר הוא 1א. אם הפונקציה נכשלת והדגל 605711085 60616 קפוא לא הוגדר, הפונקציה אולי תיצור חריגה עם ערך של שגיאה, כפי שמפורט בטבלה 15.8 טבלה 15.8: ערכי השגיאה של הקצאה שגויה בערימה. עוך פירוש צחסוופוא סא 5דד5 | ההקצאה שרצינו לבצע נכשלה בגלל חיסרון בזיכרון הזמין או פגס בערימה. אסנדא וזש 460555/ 5105 | ההקצאה שרצינו לבצע נכשלה בגלל פגם. בערימה, או פרמטריס שאינס מוגדרים היטב. שים לב שפגם ערימה יכול לגרום לאחת משתי החריגות; הדבר תלוי בסוג הפגם. אם: 6 מצליחה, היא מקצה לפחות את כמות הזיכרון שדרשה התוכנית הקוראת. אם הכמות הממשית ש-8/06ק09ו1 מקצה יותר גדולה מהכמות שנדרשה על ודי התוכנית הקוראת, התהליך יכול להשתמש בכל הכמות. באפשרותך להשתמש בפונקציה 06ַ5ְבסאז, כדי לקבוע את הגודל הממשי של הבלוק שהוקצה. 8 הכהו ומבוא ל-ספו כדי לשחרר בלוק זיכרון שהוקצה על ידי 8630106, צריך להשתמש בפונקציה 6. ויכרון שהוקצה על ידי 1/6306 אינו בר-העברה. מכיון שהזיכרון אינר בר-העברה, אפשר שהערימה תהפוך למקוטעת (6פְחטְחְָז=). שים לב: אם לא מגדירים את הדגל צהסוופון 2580 קא6ו, פוסחו/. אינה מאתחלת לאפס את הזיכרון שהוקצה. כדי להבין טוב יותר את פעולת הפונקציה 06וא53סא, ‏ התבונן בתוכנית 5 635א, שנמצאת בתקליטור (8015ו0).התוכנית יוצרת ערימה, אחר כך משתמשת ב-6308/06! כדי להקצות ציכרון מהערימה שנוצרה. היא מתייחסת לזיכרו. שהוקצה כמערך דינמי של מחרוזות. כאשר המשתמש בוחר את האפשרות !655סו1א. מהתפריט, התוכנית מקצה זיכרון מהערימה, כדי לאחסן בו מחרוזת חדשה. היא גם. מצהירה על מצביע לזיכרון שההקצאה הקודמת הוסיפה למערך. אם לא נשאר מקום. פנוי במערך, התוכנית משתמשת ב-63058%/06₪ כדי להרחיב אותו. כאשר המשתמש. בוחר באפשרות !166 מהתפריט, התוכנית משחררת את הזיכרון שהוקצה למחרוזת. האחרונה. כאשר התוכנית מגלה שהמשתמש שחרר מספיק זיכרון כדי להשאיר כמות. מספקת של מקום שאינו מנוצל, התוכנית מקצה מחדש את הערימה כדי לצמצם את המערך. בנוסף, בכל פעם שהתוכנית מקצה מחדש את הערימה, היא משתמשת בפונקציה 86קו63060 כדי לדחוס אותה. 3 בדיקת גודל הזיכרון שהוקצה מתוך הערימה כפו שלמדת, תוכניות פווסוחוו מקצות פעמים רבות כמות קטנה של זיכרון לוקל מערימה פרטית. בסעיפים קודמים יצרנו ערימה והקצאנו זיכרון מתוכה. התוכניותת יכולות להשתמש גם בפונקציה 869/06ק₪69 להקצאה מחדש של שטחי זיכרון מתוך הערימה, וב-6ס! - כדי לשחרר זיכרון שהוקצה מהערימה. בנוסף, התוכניותת צריכות להשתמש תמיד בפונקציה ץספססקפסוז כדי לפרק ערימות פרטיות שיצרו. אך פעמים רבות, נרצה בומן הריצה של התוכניות לבדוק את גודל ההקצאה שנעשתה מהערימה. כדי לעשות ואת צריך להשתמש בפונקציה סק5ְטאא, אשר מאפשרת לבדוק. את גודל בלוק הזיכרון שהוקצה מהערימה. הפונקציה 630506 מחזירה את הגודל, בבתים, של בלוק זיכרון שהוקצה מהערימה על ידי הפונקציות 6308/06 אר 6 את הפונקציה 690508 כותבים כמו בדוגמה שלהלן ) 36305156 ספסוום מגסה פמץ 50 ב1התמת // ,קבאה הנקות 8 1סצשתסם 5188 קפשם //‏ ,5פַ18טא0 ספסמם 50₪ 812 מעטמשע סם עעסתפה 50 עשמתגם // | ממאק1 מצסטסק1 / פרק 15: ניהול זיכרון ‏ 409 הפרמטר קַבשוח מגדיר את הערימה שבלוק הזיכרון נמצא בה. אחת משתי הפונקציות. 8 או 6610009560 מחזירות את הידית הזאת. הפרמטר פטָו0 מגדיר. מספר דרכים לשליטה בגישה לבלוקים של הזיכרון. כרגע, באפשרותך להגדיר את הדגל 560181126 0 ק%ש; אך פווסוחוו שומרת את שאר ערכי הדגלים לשימוש. עתידי. באופן ספציפי הדגל 558181126 .00 קהפו₪ עוקף (66וזזפצס) את הדגל המתאים. שהוגדר בפרמטר 005(וק0 כאשר השתמשת בפונקציה 6300618 ליצירת הערימה. לבסוף, הפרמטר וח6/וקו מצביע לבלוק הזיכרון שהפונקציה צריכה לחשב את הגודל שלו. והו מצביע שהפונקציה 63006 או 06ו861ק₪69 מחזירות. אס הפונקציה 1630526 מצליחה, הערך המוחזר הוא הגודל, בבתים, של בלוק זיכרוך שהוקצה; אם הפונקציה נכשלת - הערך המוחזר הוא אחקאט. כדי להבין יותר טוב את פעולת הפונקציה 508ק69או, התבונן בתוכנית 5126 קסוא, שנמצאת בתקליטור המצורף לספר זה (בתיקיה 15קו6). התוכנית יוצרת ערימה ומקצה בלוק זיכרון באורך 20 בתים שמאותחל באפס. אחר כך, התוכנית קוראת לפונקציה 4556 כדי להציג את גודל הבלוק שהוקצה. 4 הקצאת בלוק זיכרון וירטואלי בתוכניות הפועלות תחת פאוסחווו, מקצים בדרך כלל זיכרון על ידי שימוש באחד משלושה סוגי הקצאה: הקצאה מהערימה הגלובלית, הקצאה מהערימה הפרטית, אד הקצאה ישירה של זיכרון וירטואלי. ראית שהשימוש בזיכרון וירטואלי מקנה לתוכניות אפשרויות נוספות ושליטה על תהליך ההקצאה. אך כמו בשאר סוגי ההקצאה, הקצאת הציכרון נעשית עס פונקציות. 6. הפונקציה 6סואוממזו שונה מפונקציות הקצאה אחרות בוה שהיא מקצה למלאי (86597065) או שהיא משרלינת (טווחוחס6) אזור של דפים במרחב הזיכרון הווירטואלי של התהליך הקורא. פווסשחוו מאתחלת באופן אוטומטי באפס את הויכרון שהוקצה בתוכניות על ידי השימוש בפונקציה 6סואוהטזוצ. את הפונקציה זו כותבים כמו בהגדרה שלהלן. 1106 פטס 1 פצסטסת ומח עס 20862 60 ה20010 01 288:688 //‏ 55סצמנתק1 מצסטק1 מסגָםם 05 8186 // סוס 8110680108 05 שסצט // ,6קעדת0 181106861 סתסאום )סע 60085ג 01 שסצט // 5190866 סחסאום 0 321חוו ומבוא ל-ספו הפונקציה 84/06נז/ מקבלת את הפרמטרים שמפורטים בטבלה 15.9 טבלה 15.9: הפרמטרים של הפונקציה 81106טפזוש. פרמטר תיאור 6055 | מצלין את כתובת ההתחלה של האזור שרוצים להקצות. אס. התוכנית מקצה את הזיכרון כמלאי, 6ס0חווו מעגלת כלפר מטה את הכתובת המוגדרת לגבול של 6468 הבאים. אס. התוכנית כבר שמרה את הזיכרון שהוקצה כמלאי, והיא: קוראת כעת ל-06!ואוגנטזו/ כדי לשריין יכרון, 5וס6חוו מעגלת. כלפי מטה לגבול הדף הבא. כדי לדעת את גודל הדף במחשב. המארח, השתמש בפונקציה 0/ח6615/51901. אם פרמטר זה שווה ל-1א', המערכת קובעת היכן להקצות את האזור. 6 | מציין את גודל האזור, בבתים. אם הפרמטר 12001655 שווה. ל-1ו0, %5ו60חו// מעגלת כלפי מעלה את ערך ₪56 לגבול. הדף הבא; אחרת, הדפים המוקצים יכילו את כל הדפים. שמכילים בית אחד או יותר בתחום מ-4667655פ| עד (059ו6פ1 8 +). כלומר, תחום 2 בתים שנכלל בגבול הדף גורם. ל-ווס6חו\ לכלול שני דפים באזור המוקצה. שש דחס/811063/ | מציין את סוג ההקצאה. באפשרותך להגדיר כל צירוף דגלים. המפורטים בטבלה 15.10 ווק | מציין את סוג הגנת הגישה (ח010000זל 400055). כאשר משתמשים ב-08/106ז כדי לשריין דפים, באפשרותך. להגדיר כל אחד מהדגלים שמפורטים בטבלה 15.11, יחד עם. מצייני דגלי ההגנה 6080 2368 או 63046 סו 2865 כפר שדרוש. מתוך טבלה 15.9 למדת שמשתמשים בפרמטר 8106300076 כדי לשלוט בהקצאה שמבצעת 06//פנוע.. באפשרותך לציין כל צירוף של הדגלים שמפורטים בטבלה 6, כדי לשלוט בהקצאת זיכרון וירטואלית. טבלה 5.10 + הערכים האפשריים של סוגי ההקצאות עבור הפונקציה 31106והנוזוש. דגל פירוש דזוווס6 פו! | מקצה אחסון פיסי בויכרון או בקובץ הדפדוף שבדיסק עבורר אזור הדפים המוגדר. כלומר, הוא מגן על חלק ממרחב. הכתובות של הזיכרון הווירטואלי של התהליך מפני קריאות. הקצאה אחרות של אותו תהליך. הניסיון לשריין טחוס דפים שכבר שוריינו, אינו גורס לכישלון הפונקציה. כלומר, התוכנית יכולה לשריין תחום של דפים שכבר שוריינו, אוד לשריין דפים מחדש מבלי לדאוג לכישלון. פרק 15: ניהול זיכרון 411 דגל פירוש 5558 16% | שומר כמלאי תחוס של מרחב כתובות בציכרון הווירטואלי של התהליך, מבלי להקצות אמצעי אחסון פיסי כלשהו. כל. הקצאה אחרת (כמו של הפונקציה 6סו1פוח, או של הפונקציה. 6 אינה יכולה להשתמש במלאי ה עד שהתוכנית. משחררת את התחום. התוכניות יכולות לשריין דפים. מהמלאי על ידי קריאות עוקבות לפונקציה > והטטזוצ. אאוסס קסד פוא | מקצה זיכרון בכתובת הגבוהה ביותר האפשרית. בגלל דרך ההקצאה של הדף הווירטואלי, ‏ באפשרותך לשלוט בגישה לדפים הווירטואליים ששוריינו על ידי הפונקציה 6סוופומו. כמו שרואים בטבלה 15.11, באפשרותך להגדיר סוג אחד של הגנה לדף (56008 6סָק), יחד עם המציינים: 608 7466 ו-06%036א 465. טבלה 15.11 מציגה את דגלי ההגנה שבאפשרותך. להשתמש בהם כאשר אתה מקצה דפים וירטואליים. טבלה 5.11 + דגלי ההגנה האפשריים עבור הקצאות דף וירטואליות. דגל פירוש +ואססאפה 65ק | מאפשר מצב גישה לקריאה בלבד לאזור הדפים. ששוריינו. הניסיון לכתוב לדפי קריאה בלבד גורס לשגיאת גישה. אם המערכת מבדילה בין גישה לקריאה בלבד וגישה להפעלה, הניסיון להפעיל קוד באזור החיוב גורם לשגיאת גישה 01 0695 זאו סה 866 | מאפשר שני מצבי גישה: גישה לקריאה וגישה לכתיבה לדפום באזור הדפים ששוריינור דסא 65ק | מאפשר רק מצב גישה להפעלת דפים באזור. המשוריין. הניסיון לקרוא או לכתוב לדפי הפעלה. בלבד גורס לשגיאת גישה. סאפה דא 7868 | מאפשר שני מצבי גישה: גישה להפעלה וגישה. לקריאה לדפים באזור המשוריין. הניסיון לכתובב לדפי הפעלה וקריאה בלבד גורם לשגיאת גישה. דנה/וסאפה ₪506 68 | מאפשר את הגישה להפעלה, לקריאה, וכתיבה. לדפים באזור המשוריין 2 זקה2בחוו ומבוא ל-ספו דגל פירוש סההט6 66 | דפים באזור נעשים דפים שמורים (600/6. 5. אם תוכנית מנסה לקרוא מדף שמור או לכתוב בדף כוה, הדף השמור גורס למערכת. ההפעלה להדליק את דגל החריגה של מצב. שמירה 7806 6088 51105 ולכבות את מצב הדף השמור. לכן, דפים שמורים משמשים. להתראת גישה חד-פעמית. הדגל 60 968 הוא מציין הגנה לדף. היישום משתמש בו עם אחד משאר דגלי ההגנה של הדף, אך עס הבדל אחד: היושום אינו יכול להשתמש בו עם 00860655 9406. אחרי קריאה. שנכשלה, או פעולת כתיבה הגורמת למערכת. ההפעלה לכבות את מצב דף שמור, הגנת הדף שברקע מופעלת. אס מתרחשת חריגה של דף שמור בומן קבלת שירות מהמערכת, השירות. מחזיר בדרך כלל מציין מצב של כישלון (בסעיף 5 תמצא הסבר אודות דפים שמורים). 5 66אק | חוסם כל גישה לאזור הדפים שוריינו. הניסיוך לקרוא מדף, לכתוב לדף, או להפעיל דף באצור שהגישה אליו נחסמה - גורם לשגיאת גישה, שנקראת שגיאת הגנה כללית (60, (66063. 0 6 65 | מאפשר לא לשנות את הדפים שהוקצו קודם עם הדגל 6017 %ו. צריך להגדיר את מאפיוני החומרה לזיכרון הפיסי, כמו לדוגמה, "יללא מטמון' (63606 ס)/). מיקרוסופט אינה ממליצה על שימוש כללי בדגל זה. דגל זה יכול לשרת. מנהלי התקן (לדוגמה, מיפוי מאגר של מסגרת. וידיאו) שאינס משתמשים במטמון. דגל זה הוא: מציין הגנה לדף, שתקף רק כאשר משתמשים בו בשילוב עס אחד מהגנות הדף השונותם. מ-00000855- 866 אס הפונקציה 06!אוהטטזו מצליחה, הערך המוחור הוא כתובת הבסיס של אזור הדפים שהוקצה; אם הפונקציה נכשלת, הערך המוחזר הוא טא פרק 15: ניהול זיכרון / 413 6 זו יכולה לבצע את הפעולות הבאות. 3% לשריין אזור של דפים שקריאה קודמת לפונקציה 6סוונזוץ העבירה למלאי. 3% להעביר למלאי אזור של דפים חופשיים. %: להעביר למלאי ולשריין אזור של דפים חופשיים. באפשרותך להשתמש ב-06ו4גומוו כדי להעביר למלאי בלוק של דפים, ואחר כך לקרוא שוב ל-6ו וגו כדי לשריין דפים בודדים מבלוק המלאי. קיוס בלוק של דפים מאפשר לתהליך לשמור על תחום הכתובת הווירטואלית שלו, מבלי לנצל אחסון. פיסי עד שנוקקים לו. כל דף במרחב האיכרון הווירטואלי של התהליך נמצא באחד משלושה מצבים שמפורטים בטבלה 15.12 טבלה 15.12: המצבים האפשריים של זיכרון וירטואלי. מצב פירוש 8 | התהליך לא שריין או לא שמר למלאי דף זה, ולכן הדף אאינו נגיש. לתהליך. 3/66ופטטזו יכולה לשמור במלאי, או בו-זמנית לשמור במלאי וגס לשריין דף חופשיר חופשי פסה | פונקציות הקצאה אחרות אינן יכולות להשתמש בתחום הכתובות, אבל היישום אינו יכול לגשת לתחום ו-ו60חוא אינה משייכת אמצעי אחסון פיסי עם הדף. 06/ו3נמו/ יכולה לשריין דף שבמלאי, אבל. אונה יכולה להעביר אותו למלאי פעם נוספת. הפונקציה 6אומנוו יכולה לשחרר דף הנמצא במלאי, ולהפוך אותו לדף חופשי. שמור במלאיי חס | פאוסטחווץ מקצה ציכרון עבור דף, וקוד מוגן שולט בגישה. המערכת. מאתחלת וטוענת כל דף משוריין ליכרון הפוסי רק בניסיון הראשון. לקרוא או לכתוב לדף זה. כאשר התהליך מסתיים, המערכת משחררת. את האחטנה של הדפים המשוריינים. 6והטטזו/ יכולה לשרייץ דף שכבר שוריין. כלומר, אפשר לשריין תחום דפים, ללא קשר אם כבר שוריינו, והפונקציה אינה נכשלת. סז=!מוזו יכולה לבטל שריון שלל דף משוריין, לשחרר אמצעי האחסנה של הדפים, או שהיא יכולה. בו-ומנית גס לבטל שריון וגם לשחרר דף ששוריי. משוריין אם הפרמטר 2067655|. הוא ₪011 הפונקציה משתמשת בפרמטרים 100055 ו-0506ו0 כדי לחשב את אזור הדפים ש-4106נזו/ מקצה. המצב הנוכחי של כל תחום. הדפים חייב להיות מתאים לסוג ההקצאה שמוגדר על ידי הפרמטר 6קץדחסטבססוא0; אחרת, הפונקציה נכשלת ו-6סואוגנטוו אינה מקצה את הדפים. דרישת התאימות אינה מונעת שריון דפים שכבר שוריינו (ראה טבלה 15.12). 4 321חו/ו ומבוא ל-ספו כדי להבין טוב יותר את פעולת הפונקציה 6טאוגומזו, | התבונן בתוכנית 6 ו ופצטזו/, שנמצאת בתקליטור המצורף לספר זה (בתיקיה 00515). תוכנית. זו מעבירה למלאי מגהבית אחד (1%8) של זיכרון וירטואלי, כאשר היא שולחת את ההודעה 685%15 א/ו. כאשר המשתמש בוחר באפשרות התפריט 16, התוכנית. משריינת ומשתמשת ב- 8א70 של ויכרון וירטואלי. ראשית, התוכנית מציבה ערכים. בכל בלוק של 5 בויכרון שהוקצה. שנית, התוכנית משנה לקריאה בלבד, את אפשרות. הגישה לכל בלוק הזיכרון ששוריין. שלישית, התוכנית ניגשת לערך בזיכרון ומציגהה אותו בתיבת הודעה. לבסוף, התוכנית מנסה להציב ערך בזיכרון, והדבר גורם לשגיאת. הגנה. התוכנית 06366ו81/ |העפזו' משתמשת בבלוק הקוד ה630-ץ כדי לגלות את. שגיאת ההגנה. 5 דפים שמורים (23065 0ְַ603) למדת בסעיף 15.14 שיישום קובע את דגל מציין ההגנה 6080 2865 עבור דף ציכרון, כדי להגדיר דף שמור (מָק 60816). באפשרותך להגדיר דגל וה יחד עם דגלי הגנהה אחרים לדפים, באמצעות הפונקציות 06ו331נזוץ, 661זסזק|נסזוש (-005סססזק|בנסזו. תוכל גם להשתמש בדגל 60%80 7466 עם כל דגל הגנה אחר לדפים, מלבד הדגל חפ אס תוכנית מנסה לגשת לכתובת שנמצאת בדף שמור (ַפסָק 6036), מערכת ההפעלה. יוצרת מצב חריג 66אק ‏ סההט6 55 (80000001א0). מערכת ההפעלה גם מוחקת. את דגל 60380 466ק, ומסירה את המצב השמור מדפי הזיכרון. המערכת אינה מפסיקה ‏ את הניסיון | הבא לגשת לדפי ההזזכרון עם המצב החרב 55 אס מתרחש מצב חריגה של דף שמור בזמן קבלת שירות מהמערכת, השירות מופסק ובדרך כלל מחזיר ערך כלשהו שמציין מצב כישלון. מכיון שהמערכת מסירה את המצב. השמור מדפי הזיכרון, הקריאה הבאה לאותו שירות של המערכת לא תיכשל בגלל מצב. חריג 66 60 518105 (אלא אם כן, מישהו אחר החציר את המצב השמור). לכן, דף שמור מספק התראה חד-פעמית בעת גישה לדפי זיכרון. הדבר עשוי להיותת שימושי ליישומים שחייבים לבקר גידול של מבני נתונים דינמיים גדולים. לדוגמה, חלק ממערכות ההפעלה משתמש בדפים שמורים 0065 60876) כדי ליישם בדיקת מחסנית אוטומטית. בתקליטור המצורף לספר זה תמצא את התוכנית 6686-0896 (בתיקיה 008015), שמדגימה את ההתנהנות החד-פעמית של הגנת דף שמור, וכיצד הוא יכול לגרום. לכושלון שירות של המערכת (התוכנית יוצרת קלט לחלון 005). כשמהדרים ומפעילים. את התוכנית 5986 - 66878, היא מציגה במסך את הפלט הבא 0 88628885 86 668עם 512 016668 1 = שמעפם ,00380000 86 1006 מסת80 0 86 4פעצחסת 100% 288 < פרק 15: ניהול זיכרון = 415 שים לב שהניסיון הראשון לנעול את בלוק הזיכרון גורם. ליצירת מצב חריג 8 סחאט6 פטדאד5. הניסיון השני מצליח, מכיון שהניסיון הראשון חסיר את ההגנה של דף שמור מבלוק הזיכרון. זיכרון וירטואלי מקנה אמצעי נוסף ויעיל להקצאת בלוקים גדולים של זיכרון. עםם ואת, הצגת היתרונות של זיכרון וירטואלי לשימוש בתכנות קשה ומורכבת בדרך כלל. אחת הדרכים הקלות להצגת יתרונות הזיכרון הווירטואלי היא לחשוב על מערך גדולל של מבנה מורכב, אולי מבנה הדומה לגיליון אלקטרוני. נניח שצריך ליצור מערך דו-ממדי, ההגדרה יכולה להראות דומה לוו שלהלן. [256] [200] צתתתתפסהת1 6011 אם גודל המבנה ו/69 הוא 128 בתים, דרושים לאחסנה 65,533,600 בתים של זיכרוך פיסי (לפי החישוב: 200 + 256 > 128). ברור, שזו כמות משמעותית של זיכרון פוסי שצריך להקצות לגיליון האלקטרוני - במיוחד כאשר רוב גליונות העבודה לא ישתמשו בכמות תאים שמתקרבת להקצאת תאים רבה כזאת. כתחליף, אפשר להשתמש ברשימה מקושרת כדי ליצור את סוג המבנה של הגיליון האלקטרוני. על פי התפיסה של רשימה מקושרת, צריך ליצור מבנה !61 לתאים שבגיליון האלקטרוני אשר מכילים נתוניס, ולא לתאים הריקים. עס ואת, השימוש. ברשימה מקושרת מקשה מאוד על השגת תוכן התאים. לדוגמה, אם התוכנית דורשת. את התוכן התא בשורה 5 שעמודה 10, חייבים לעבור דרך הרשימה המקושרת כדי למצוא את התא, ומכאן ההאטה בהפעלה. ציכרון וירטואלי מציע פשרה בין ההגדרה של המטריצה הדו-מימדית לבין מימוש. מורכב של רשימות מקושרות גדולות. עם זיכרון וירטואלי מקבלים את הנישה המהירה ואת פשטות הגישה הנובעת מטכניקת המטריצה, וגם את יכולת האחסון המעדיפה של רשימה מקושרת. כדי להעריך טוב יותר את היתרונות של טכניקת הזיכרון הווירטואלי, התוכנית צריכה לבצע את הדברים שלהלן 1. לשמור אזור מלאי שיחיה גדול במידה מספקת כדי להכיל את כל המטריצה של המבנים מסוג וו6₪. כפי שלמדת, שמירת אזור כמלאי אינה צורכת זיכרון פוסר 2. להקצות כתובת זיכרון באזור המלאי שבו המבנה 9 צריך להיות כאשר המשתמש מכניס נתונים לתוך תא כלשהו. 3. לשריין עבור המבנה 09 אמצעי אחסנה פיסי מספיקים המיועדים לכתובת הציכרון שהוקצתה בצעד 2. 4 להציב את האיברים של מבנה 60 החדש. אחרי ביצוע המיפוי הפיסי למקום המתאים, התוכנית יכולה לגשת אל אמצעי האחסון. מבלי ליצור שגיאת גישה (חסטג/ס1) 66055). ברור, שטכניקת הזיכרון הווירטואלי היא: שיפור משמעותי לעומת שאר הטכניקות, מפני שהתוכנית משריינת אמצעי אחסון פוסי. רק כאשר המשתמש מכניס נתונים לתאים של הגיליון האלקטרוני. מכיון שרוב התאים בגיליון האלקטרוני ריקים, התוכנית אינה משתמשת במרבית אזור המלא באפשרותך להקצות זיכרון וירטואלי כדי שהתוכנית תוכל לגשת מהר יותר למספר גדול של איברים, בלי הקשיים והוויתורים שנעשים במודלים קודמים של זיכרון. 6 1א32ח/ו ומבוא ל-ספו 7 שחרור זיכרון וירטואלי למדת שבאפשרות התוכנית להשתמש בפונקציה 6סואוגנפזו/ כדי להעביר למלאי אר לשריין דפי זיכרון וירטואלי. לאחר ההעברה למלאי או לאחר השריון של דפי זיכרוך וירטואלי, התוכנית יכולה להשתמש בפונקציה 6פזפוומוט כדי לשחרר או לבטל חיובב של דפים אלה. הפונקציה פופו משחררת אזור של דפים או מבטלת את השריון שלהם (או שניהם) במרחב הכתובות הווירטואליות של התהליך הקורא. משתמשים. בפונקציה 6זזונזו כמו שרואים בהגדרה שלהלן | 8 81 טטש 1 001 16668האסס 05 560108 08 3449688 // 0 מסגמצ 05 8186 // ,85196 ספסאום 540108שקס 1866 05 שסעט // ,סקעט6צטאם סאסמם / הפרמטר :106/05 מצבוע לכתובת הבסיס של אזור הדפים שהפונקציה 66זזוגומזוי אמורה לשחרר. אם הפרמטר 606106186 מכיל את הדגל 6855 ₪1 ואפוא, הפרמטר 5 חייב להיות כתובת הבסיס שהפונקציה 106וטזו/ החזירה כאשר העבירה. למלאי את אזור הדפים. הפרמטר 000526 מגדיר את הגודל, בבתים, של האזור ש-8166/ה0ז = אמורה לשחרר. אם הפרמטר 008067706 מכיל את הדגל 55 פוו, הפרמטר 04828 חייב להיות אפס; אחרת, אזור הדפים שעומדים לטפל בהם יכיל את כל הדפים שמכילים בית אחד, או יותר, בתחום שנמצא בין ערך. הפרמטר 3661655ק| ועד 1661055+00/506. כלומר, תחוס של 2 בתים שנמצא בגבול. הדף גורם ל-66זזופטטזו/ו לשחרר את שני הדפים. 05166106 מגדיר את סו פעולת. השחרור. כאשר קוראים לפונקציה 66זזופוזוצ, משתמשים בדגל אחד, אך לא בשני הדגלים שמפורטים בטבלה 15.13 טבלה 5.13 הדגלים עבור הפרמטר 097/6ז-/0. דגל פירוש 500 אאפוו | מבטל את שריון אזור מוגדר של דפים משוריינים. ניסיון לבטל שריון דפים שאינם משוריינים אינו גורס לכושלון הפונקציה. כלומר, התוכניות יכולה לבטל שריון תחום של. דפים ששוריינו, או של דפים שלא שוריינו קודם, מבלי שיהיה צורך לדאוג לכישלון 6 שו || משחרר את האזור המוגדר של דפים שבמלאי. אם התוכנית. מגדירה דגל זה, הפרמטר 656 חייב להיות אפס, אד שהפונקציה תיכשל. פרק 15: ניהול זיכרון = 417 התוכניות יכולה להשתמש בפונקציה 6פוחוגנזו כדי לבצע אחת משלוש הפעולות. האלו + לבטל שריון אזור של דפים משוריינים, או של דפים שאינם משוריינום. 3% לשחרר אזור של דפים במלאי. 3 לבטל שריון ולשחרר אזור של דפיס משוריינים, או דפים שאינם משוריינים כדי לשחרר אצור של דפים, כל תחום הדפים חייב להיות באותו מצב (כולם במלאי, אד כולם משוריינים) והפונקציה 65זזובטטזו חייבת לשחרר את כל אזור המלאי המקורי באותו ומן. אס השתמשת קודם ב-6טואוהטטזו כדי לשריין רק חלק מהדפים שבאזור המלאי המקורי, עליך לקרוא ל-66זזוהנטזו כדי לבטל את שריון הדפים המשוריינים, ואחר כך לקרוא ל-6זוגוו שוב כדי לשחרר את כל הבלוק. הדפים ששוחררו על ידי שימוש ב-69זוגנמזו/ הםו דפים חופשיים, שתקפים לפעולות. של הקצאות עוקבות. ניסיון לכתוב לדף חופשי או לקרוא מדף חופשי, יגרום להודעת חריגה מסוג שגיאת גישה (חסווגוסו 860955). 6סוחופנטווץ. יכולה לבטל שריון של דף שאינו משורין; כלומר, הפונקציה 6זחוגנטזו יכולה לבטל שריון של תחום דפים כלשהו הכולל דפים משוריינים ושאינם משוריינים, מבלי שיהיה צורך לדאוג לכישלון ביטול השריון של דף משחרר את האחסון הפיסי שלו שנמצא בזיכרון או בקובץ' הדפדוף בדיסק. אם התוכנית מבטלת שריון דף אבל אינה משחררת אותו, מצב הדף. משתנה למלאי וקריאה עוקבת ל-6ס!אוהטוזו יכולה לגרום לשריון חוזר שלו. הניסיוך לקרוא מדף או לכתוב לדף שבמלאי גורס להודעת חריגה מסוג שניאת גישה. המצב הנוכחי של כל תחוס הדפים חייב להיות מתאים לסוג פעולת השחרור שמוגדרת. על ידי הפרמטר 6קץ91סזוו6. אחרת, הפונקציה 65זזוטּו נכשלת ולא משחררת, אד לא מבטלת שריון של דף כלשהו. 8 ניהול דפי זיכרון וירטואלי דפ זיכרון וירטואלי מיועדים להרחיב את גישת התוכניות לזיכרון וגם לעוור לתוכניות בהקצאת בלוקים גדולים של ויכרון במרחב הזיכרון הווירטואלי. פעמים. רבות, נדרש מידע על תחום הדפים שבתחום מרחב כתובות הציכרון הווירטואלי של התהליך. הפונקציה /זסטסגטטזוץ מספקת מידע על תחום הדפים שבתחום מרחב הזיכרון הווירטואלי של התהליך הקורא, כמו שרואים להלן ) טס בפט+ 7 ספסוום 6108מצ 01 658ש840 // 18 1000 // 2402688 8‏ ,562:ממב אסנעתאהסעאד סדפגם צהסוטוק 16%פט ה10םמתע0פ1 // מ 05 5128 // 10 ספסאום / 8 71א32חוו ומבוא ל-ספו הפונקציה /זסטומוזו/ מקבלת שלושה פרמטרים, כמפורט בטבלה 15.14 טבלה 5.14 הפרמטרים של הפונקציה סט /פנטזוצ. פרמטר ‏ | תיאור 5 | מצביע לכתובת הבסיס של אזור הדפים ש-ץזסט0ומווו בודקת. פאוסטחו מעגלת ערך זה כלפי מטה, לגבול הדף הבא. כדי לדעת מה גודל הדף במחשב המארח, השתמש בפונקציה 0/ח1וח6649/500. ז6ש8ק! | מצביע למבנה מסוג 1/00/10 88516 זחוא ש-ץוטס ופטחו מחוירה בו את המידע על תחום הדפים המוגדר. חַח6%1.9 | מגדיר את גודל המאגר, בבתים, שמצביע עליו הפרמטר ז816כו. /זסטסומטטזועי מספקת מידע על אזור של דפים עוקבים מכתובת התחלתית מוגדרת, בעלת המאפיינים הבאים. 1 המצב של כל הדפים אותו דבר עם הדגלים דיווס פוא 555806 אפון, שפח אסויו, סדהענהק ווסוא, סםקקהוא ותפוו, אר 66 המד שור אם הדף ההתחלתי אינו חופשי, כל הדפים שבאזור יהיו חלק של ההקצאה הראשונית של דפים שהקריאה של הפונקציה 6סוונמזוץ העבירה למלאי. הנישה של כל הדפים אותו דבר עם הדגלים צאססגשה 65אק, דנה הפה 65הק, 0360555 ש6אק, ק0מדנחש אק דטסטאם 68אק, פפהמדט0א= 65ק, | סההט6 ש6הק, | מדןה/סאשה פדטשםאם 68אק, דנא דטספאש 466ק, או ₪008 שאק הפונקציה עזטט וטו קובעת את מאפייני הדף הראשון באזור. אחר כך היא טורקת. דפים עוקבים עד שלסיום הסריקה של כל תחום הדפים, או עד שהיא מוצאת דף עם. קבוצת מאפיינים שונה. /חפטסופופזוצ מחזירה את המאפיינים ואת גודל אזור הדפים. בעל אותם המאפיינים. לדוגמה, אם יש אזור חופשי בגודל 40/8 והתוכנית קוראת ל-ץסטסונטזוו עם דף באזור שאחרי 10%8, הפונקציה מציגה סטטוס 885 אפוו וגודל של 308 הפונקציה. /פטסמומזו מדווחת. על אזור דפים בזיכרון של התהליך הקורא, והפונקציה +5/חסט0פומזוע מדווחת על אזור דפים בזיכרון של התהליך המוגדר. בתקליטור שמצורף לספר וה נמצאת התוכנית עושטס ומטפווש (בתיקיה 5, שבתחילה היא מקצה בלוק זיכרון וירטואלי בגודל 7068. אחר כך היא קוראת לפונקציה עזפוסוגנסזו/ץ, שמחזירה את גודלו חממשי של האצור שתפוס על ידי הזיכרון. שיס לב, גודל האזור מתחלק ב- 4096 בתים (48), שזה גודל הדף של מחשבי 6 פרק 15: ניהול זיכרון = 419 פרק 16 תהליכים ומטלות 1 הבנה יותר טובה של תהליכים אחת התכונות הבולטות ביותר של פאוסטחו/ היא התמיכה שלה בריבוי משימות (%1009569/), שמשמעותה - הפעלת תהליכים אחדים בזיכרון בו-ומנית. בשלושים. הסעיפים הבאים, תלמד יותר על ניהול תהליכים (0605505וק) ומטלות (6365זח1), אחת. המיומנות החשובות ביותר למתכנתי סח תהליך (00955זק) הוא אובייקט הבעלים של כל משאבי היישום. תהליך של 0065חו, בתורו, יכול ליצור מטלה אחת או יותר. מטלה (6גזחד) היא נתיב ביצוע בלתי תלוי בתוך תהליך, אשר מנצל חלק ממרחב הכתובת שלו, קוד ונתונים גלובליים. לכל מטלה יש קבוצת אוגרים (זטפסָסה) נפרדת, וגם מנגנון קלט נפרד הכולל תור הודעות פרטי. 9% סח ו-דו). פאוס0חוו. מקצות. קטעי ומן מעבד (0לס). לכל מטלה בנפרד, מטלה-אחרי- מטלה (636זחד-ץ630-8זחד) וכך הן מנהלות. את מנגנון ריבוי המשימות. מפעילות כל משימה על פי העדיפות שמוקצית לכל מטלה. אפשר לתאר ואת כקבוצת. מטלות שמסודרות זו אחר זו, ועל פי סדר עדיפות שנקבע, המטלה המבקשת שירות. מוצגת לפני כל חברותיה ופועלת, עד אשר מטלה אחרת עדיפה יותר תזכה לקבל את שירותי המערכת (110100356 6קחססזק). בנוסף, תהליך כולל גם הקצאות זיכרון גלובליות, דפים וירטואליים ועוד. תרשים 1 מציג מודל לוגי של הקשרים בין תהליכים ומטלות. 0 321חווו ומבוא ל-ספו ב זז ו זו 200 זו 30 ות 41 ות ות תרשים 16.1: הקשר בין תהליכים ומטלות. למדת ש-פווסטחוו+ מקצה זיכרון וירטואלי לתהליכים ככל שנדרש להם. לכן, כאשר לוקחים בחשבון את מודל הזיכרון למחשב שמריץ תהליכים רבים בו-ומנית, חשוב לוהות איוה תהליך הוא התהליך הפעיל (6א/6). הקביעה מיהו התהליך הפעיל כרגעע חשובה, מכיון ש-פווסחוו. מצמידה באופן אוטומטי עדיפות גבוהה יותר לרוב הדרישות לומן מעבד שיוצאות מטעם התהליך הפעיל. בסעיף 16.25 תמצא דיון מפורט. בניהול עדיפויות המטלות על ידי מערכת ההפעלה. בנוסף, 00066חו מקצה בדרך כלל. ציכרון פיסי נוסף, כדי להאיץ את ביצוע התהליך הפעיל כרגע. תרשים 16.2 מצוג דוגמה למודל זיכרון עבור שלושה יישומים הפועלים בו-ומנית. היישום הפעיל הוא: ו בו בו ו |[ 0 שי סו [ סו ן ' ' ' וח עה הק 0 עסו 06 ומק ו 06 0 סוחסה 06 הס תרשים 16.2: דוגמה למודל יכרון לשלושה יישומים שפועלים בו-ומנית. פרק 16: תהליכים ומטלות ‏ 421 עם ואת, כאשר נוצר מאורע על ידי המשתמש או על ידי פווסטחו/, אשר גורם לכך שהתוכנית השנייה ק/ 566006 תהיה פעילה, פווסטחווצ מקצה זיכרון פיסי נוסף עבור התוכנית הזו ונותנת לה מרחב זיכרון רב יותר לפעולה, כמו שמוצג בתרשים 16.3 מקה סזוחו 00000 כ 0 0 ו ססוו ] סז ו ו 9 0 ' וק 0 עסוחסוח [08ופעחק. וה 06 88 ו 06 9000 סח 06 הק תרשים 66.3 יוגמה אחרת למודל זיכרון לשלושה יישומים שפועלים בר-ומנית. בחמשת הסעיפים הבאים תלמד את הדרכים ליצור ולנהל תהליכים ומטלות. צריך להבין תחילה את יסודות הבניה לההפעלה של תהליכים (שבעיקרון אינם אלא מכולות, 0615ו13ח00, של מטלות) לפני שנעבור לנושא המטלות. 2 יצירת תהליך למדת שבדרך כלל התוכניות מופעלות כתהליך אחד, אשר יכול להכיל מטלה אחת או יותר. הפונקציה 6163971000 יוצרת תהליך חדש ואת המטלה הראשית שלו (הידועה גם בשם תהליך-בן, 00955זק ₪וו03). התהליך החדש מפעיל את קוב ההפעלה. שהוגדר. 0103001005 מאפשרת לתהליך האב, 7106955 זחסזגל (כלומר, התהליך שקורא לפונקציה 003100/06055) להגדיר את סביבת העבודה של התהליך החדש, ובכלל זה את תיקיית ההפעלה שלו, ברירת המחדל לתצוגה על המסך, משתני הסביבה. והעדיפות. 5וסחו. מוסרת את שורת הפקודה ואת תכולתה לתהליך הבן. את הפונקציה 0103190100655 כותבים כמו בהגדרה זור 0 ה 45004018 01 חמה // 6מ8מ1168610סמתק1 תעפפסק 1 הפ 118 8המהחסם // 10 1 ,סטמ ש66ת653ססמסק1 פפצטמנאצסת צצ1תט0ם 19 8001 ע15עגן00פ 88משסצם // ,618 56ה644פמצק1 פפצטמנאצסת צצ1תט0םפק1 86618 86016 688צת> // 18 68מבם1עסות1 16מממה // ,8168ת8מ)1עשתמדט מססם ח10סבצם // 7 >תסהה10עחם ששה 50 צפסת1סק // ,סמפמתס+1שתפק1 פדסטק1 במ 2 זקא2בחווו ומבוא ל-ספו +הפפעגס 50 עשפת1סק //‏ ,ע:6050צ1פטתסצענסק1 תעפפסק1 במפת צע8190050 // ספוונפטצהתצפ 6+ עשטתנסם // ,10ה1מטםעב5%ק1 כ 006551880+086108מסק1 א10להאהסטו1 800858פק1 1 ה 60 צ6פתגסק | / כמו שאפשר לראות, הפונקציה 0031971009 מקבלת פרמטרים רבים. טבלה 16.1 מסבירה את הפרמטרים האלה. טבלה 16.1: הפרמטרים של הפונקציה 016190100855. פרמטר תיאור ו3)חס:3סופקקן | מצביע למחרוזת המסתיימת ב-1שא, שמגדירה את המודול שצריך להפעיל. אפשר לשלב במחרוות זו את הנתיב השלם ואת שם הקוב של המודול שצריך להפעול, או שהמחרוות יכולה להגדיר שם חלקי. כאשר המחרוזת. מגדירה שם חלקי בלבד, הפונקציה משתמשת בכונן ובתיקיה הנוכחיים כדי להשלים את ההגדרות. הפרמטר. 96 חס163פקפ! יכול לקבל את הערך טו!, אך במקרה זה שם המודול חייב להיות הפריט הראשון במחרוזת 361:08וחוחסקו, המופרד בתו בקרה (רווח, אד תו אחר בלתי נראה, 65קפסזוח/). המודול המוגדר יכול להיות יישוס מבוסס 32חו/+ או סוג מודול אחר (לדוגמה, %5-005 או 05/2), אם במחשב. המקומי פועלת מערכת ההפעלה המתאימה. הערה תחת זא 5ווס6חו\, אםו המודול שצריך להפעיל הוא יישום. 6 הסיביות, 6וחבאחסווג6וקפאק! צריך להיות -ווטא, והמחרוזת ש-6ח:1חמהזוחססק! מצביע עליה צריכה להגדיר את המודול שצריך להפעיל. 66 חהווחס0קן | מצבייע למחרוות המסתיימת ב-+%1 שמגדירה את שורת. הפקודה שצריך להפעיל. הפרמטר 6חו)6חהחווחססקו יכרל. להיות 1טו, אך במקרה כזה הפונקציה משתמשת. במחרוות שהפרמטר פחוו!חסוו63ופפאק! מצביע עליה. כשורת הפקודה. אם שני הפרמטרים 60086 סו1פק ו ו-906106החוח0סכ! אינם 11א, הפרמטר 96 0ו30!קאק! מגדיר את המודול שצריך להפעיל, ו-01/06חחזוח0סק! מצביע לשורת הפקודה. התהליך החדש. יכול להשתמש בפונקציה 6600080610 כדי לקבל את. כל שורת הפקודה. תהליכי הביצוע של תהליכים בשפת 6 (010669565 סוחוד-חטו 6) יכולים להשתמש גם. בארגומנטיס זג וזה פרק 16: תהליכים ומטלות = 423 פרמטר 14 1 ב תיאור אם פוחהאחס3סווקאק! הלא +01!, הרכיב הראשון של. שורת הפקודה שמופרד בתו בקרה (רווח או תו בלתי נראה אחר) מגדיר את שם המודול. אס שם הקוב אינר מכיל יומת (חסופח416ם), פו0חו/ו מניחה שהסיומת היא. 5. אם שם הקוב מסתיים בנקודה () בלי סיומת, או ששם הקוב מכיל את פירוט הנתיב, 5א60חו/ו אינה מצרפת. 5אפ. אם שם הקוב אינו מכיל נתיב תיקיה, 5אס6חו/ מחפשת את הקובץ שצריך להפעיל לפי הסדר הבא: 1 התיקיה שממנה נטען היושום. 2 התיקיה הנוכחית של תהליך האב. 5 98 00%5חו/': תיקיית פווסחו/+ של המערכת. השתמש בפונקציה /01160108ח66455/9 לקבלת. הנתיב של תיקיה זו. 4 זו פאוסטחוו: תיקיית 32 הסיביות של מערכת. 4/0005 (ע6030₪זו חו516ע5 5ו00חואו 32-8%). השתמש בפונקציה /ז6000ו01וח5/9ץ6015 כדי לקבל. את נתיב התיקיה. שם התיקיה הוא בדרך כלל. גנ 5. זו פאוס0חו/: תיקיית 16 הסיביות של מערכת. ו (/116108 5/5008 605חוש 6ו16-0). איך פונקציה של לבחו שמקבלת את נתיב התיקיה הזו, אך הפונקציה מחפשת בה. שם התיקיה הוא בדרך כל |5%5181. 6. התיקיה פוווסטחוו: כדי לקבל את נתיב התיקיה הצר השתמש בפונקציה /66106006108. שם. תיקיה זו בדרך כלל הוא פאוסטחואו. 7 התיקיות שמפורטות במשתנה הסביבה ופ של. 1 כאשר התהליך שאתה רוצה ליצור באמצעות הפונקציה הוא יישום מבוסס 5.005 או מבוסס. 05 הפרמטר 6/06ח8וחוח00ק! צריך להיות שורת. הפקודה מלאה, שהרכיב הראשון שלה זה הוא שם. היישום. מכיון שהפונקציה 0163197106055 פועלת גם. ביישומים מבוססי 32חו/, יש לקבוע את הפרמטר 6106 5וחוחססק! כשורת פקודה מלאה גס עבור תוכניות. 2 מצביע למבנה 4118180785 ד550081, שקובע אם. תהליך הבן יכול לרשת את הידית המוחזרת. אם. הדא 4ש, תהליך הבן אינו יכול. לרשת את הידית. קא32ח/וו ומבוא ל-80ו פרמטר הערה: ב > הערה 1 ו תיאור במערכת ₪1 40/0600 האייבר ז9זקו8/06501ו500ט| של המבנה מגדיר מתאר אבטחה (91זקו0650 /5900118) עבור התהליך החדש. אם 5פטפוז609סזקםו. הוא ‏ נוא התהליך מקבל את ברירת המחדל של מתאר האבטחה. תחת 9% 5ו00חו/, הפונקציה 0163169106955. מתעלמת. מאיבר ז0זקו0500010/0050! של המבנה. מצביע למבנה 11180165 ד550081 שקובע אם. תהליך הבן יכול לרשת את הידית המוחזרת. אם: טוט 63זחדקו הוא-011, תהליך הבן אינו יכול. לרשת את הידית. במערכת ₪ 40/6048 האייבר ז9ז0ו8/00501ו500ט| של המבנה מגדיר מתאר אבטחה (91זקו0650 /5000118) עבור המטלה הראשית. אם פסשטטוזטה6זחדקו. הוא ‏ וטא המטלה מקבלת את ברירת המחדל של מתאר האבטחה. במערכת 9% 0005חו/, הפונקציה 0163197106055 מתעלמת. מאיבר ז0זקו5000/0/0050פ! של המבנה. מציין אם התהליך החדש יורש ידיות מהתהליך הקורא. אם כן, כלומר פטזד, התהליך החדש יורש כל ידית פתוחה. שאפשר לרשת מהתהליך הקורא. לידיות שעברו בהורשה יש את אותו הערך והגישה כמו לידיות המקוריות. מגדיר דגלים נוספים ששולטים במחלקת העדיפות (0/055 /6וז0וזק) וביצירת התהליך. אפשר להגדיר את דגלי היצירה המוצגים בטבלה 16.2 בכל צירוף, מלבד אלה שמצוינים בהערות המתאימות. הפרמטר 0/070310081905 קובע גכו כן את מחלקת העדיפות. החדשה של התהליך, ש-5אוס6חו) משתמשת בה כדי לקבוע את טדר העדיפויות של מטלות התהליך. אס פויוסטחוץ+ ינה מגדירה דגל של מחלקת עדיפות. כלשהי מאלה שמוצגים בטבלה 16.2, ברירת המחדל שלה. היא 55 צדןחס1חק ‏ והואפסו!. עם את, כאשר מחלקת. העדיפות של התהליך היוצר היא: 5 107 1015, עדיפות המחלקה של תהליך הבן גם היא 01455 281081 101 אפשר להגדיר כל דגל. מדגלי העדיפות שמפורטים בטבלה 16.3 פרק 16: תהליכים ומטלות = 425 פרמטר ו ספ זפט ו 01 תיאור מצביע לבלוק סביבה של התהליך החדש. אם פרמטר זה הוא 04, התהליך החדש משתמש בסביבה המוגדרת של התהליך הקורא. בלוק סביבה מורכב מבלוק שמסתיים ב-)01! ומכיל מחרוזות המסתיימות ב-01)!. התבנית של כל מחרוזת הוא טטופע=פוחּח. מכיון שהמחרוזת. משתמשת בסימן השוויון כאופרטור, אסור להשתמש. בסימן וה בשס של משתנה סביבה. אם יישום משתמש. בבלוק סביבה, במקום להציב )א בפרמטר צה, ₪5ו0חו/ ינה מעבירה לתהליך החדש את המידע של התיקיה הנוכחית אודות כונני המערכת. בלוק סביבה יכול להכיל תווי 006066 או תווי 5ה. אם: בלוק הסביבה שמצביע עליו חסוחחסזושתפכ! מכלל תוור 005 קובעת את הדגל. סנ 600זוט 096 בשדה 0/070310081905. אמ הבלוק מכיל תווי 451, דגל זה. נמחק. שים לב לכך ששני בתים של אפסים (260 סוד 5 מסיימים בלוק סביבה של 51: אחד הבתים. לסיום המחרוות האחרונה, ועוד בית אפסים כדי לסיים. את הבלוק. לסגירת בלוק 00/6066 דרושים ארבעה בתתים. של אפסים: שני בתים עבור המחרוזת האחרונה, ועוד שני בתים של אפסים כדי לסיים את הבלוק. מצביע למחרוזת המסתיימת ב-וט! שמגדירה את הכונן והתיקיה הנוכחיים של תהליך הבן. המחרוות חייבת להכיל פירוט שלס של הנתיב ושל שם הקובץ, וגס את אות הכונן (לדוגמה, ":8'). אם פרמטר זה הוא 1שא, פוס6חו/ יוצרת את התהליך החדש בכונן ובתיקיה של. התהליך הקורא. 5אוס0חו/ו תומכת באפשרות זו בעיקר. עבור מעטפות מערכות הפעלה שחייבות להתחיל בהפעלת. יישום ולהגדיר את הכונן ההתחלתי שלו ואת תיקיית. ההפעלה. מצביע למבנה 5788107180 המגדיר כיצד החלון הראשי של התהליך החדש צריך להופוע. מצביע למבנה 1508/4110 7806855 שמקבל את. המידע המוה עבור התהליך החדש. כמו שראית בטבלה 16.1, הפרמטר פ5סָכו6 מקבל דגל יצירה אחד או יותר ודגלל מחלקת עדיפות אחת. טבלה 16.2 מפרטת את דגלי היצירה האפשריים. 6 ז7א32חווו ומבוא ל-ספו טבלה 16.2: דגלי היצירה האפשריים של הפרמטר 8/51505. דגל שססוי. םאיס מדופאס. ב 60 00055ק /ופו דפס סע וסט דה הקס5 מדהפהס פירוש התהליך החדש אינו יורש את מצב השגיאה. 1006 ז0זז5) של התהליך הקוראא. במקום. זאת, 6163190106655 נותנת לתהליך החדש. את מצב השניאה של ברירת המחדל. הנוכחית. היישום קורא ל-%%066ז5618110 כדר לקבוע את מצב השגיאה של ברירת המחדל. הנוכחית. דגל זה שימושי במיוחד עבור יישומים של מעטפות מרובות מטלות (0סו1פקה 5711 הזח ד-מו/) שאסוור. להתיר בהן שגיאות חמורות. התנהגות ברירת. המחדל של 6168190106655 היא שעל התהליך החדש לרשת את מצב השגיאה של התהלוך. הקורא. שימוש בדגל זה משנה את התנהגות. ברירת המחדל הזר התהליך החדש יורש קונסול חדש (005016> במינוח החלונאי הוא הממשק של תוכניות. מבוססות-טקסט, ובקיצור - מסוף פשוט לא: גרפי), ולא יורש את הקונסול של תהליך האב. אי אפשר להשתמש בדגל זה יחד עם הדגל. פוטס התהליך החדש הוא תהליך השורש של קבוצת תהליכים חדשה. קבוצת התהליכים. כוללת את כל התהליכים שהם צאצאים. (בנים) של תהליך השורש החדש הזה. המזהה. התהליך של קבוצת התהליך החדשה, והה למזהה התהליך ש-6065חו+ מחזירה. בפרמטר חס)והוחזס1ח066551זסכן ב-₪7 065חו) בלבד: דגל זה תקף רק כאשר מתחילים יישום 5ס6חוו מבוסס 16 סיביות. אם קובעים דגל זה, 00%5חו/ מפעילה את. התהליך החדש במכונת 205 וירטואלית פרטית - ו (6ח/36ו 05 |הנסזועש). לפר ברירת המחדל, 05ו00חו/ מריצה אאת כל. יישומי 5ווסחו מבוססי 16 סיביות 16-40 8506 0 כמטלות. ב-ואפע יחידה משותפת. פרק 16: תהליכים ומטלות = 427 דגל סע וסט ד הקס5 מדהפהס. ופוסו ספההוו5 פדאפהס 50590 פדתפהס. ה ב 8 הכהו ומבוא ל-ספו פירוש היתרון בהפעלת תהליך מכונות 005 וירטואלית נפרדות הוא בכך שנפילה (01850). מחסלת (11א, פעולת סיום התהליך לפני שהואא מגיע לסיומו הטבעי) רק את מכונת 005. היחידה שמריצה את אותו תהליך; כל תוכנית. אחרת כלשהי שמופעלת במכונת 005 שעדיין פועלת, ממשיכה בפעולתה. ליישומי פאוסשחווצ מבוססי 16 סיביות ש-0005חו מפעילה. מכונות 005 נפרדות יש תורי קלט טטפח1 5 נפרדים. על כן, אס אחד מהיישומים. נעצר, שאר היישומים האחרים, הפועלים. במכונות 005 אחרות, ממשיכים לקבל קלט. ד 60005חו/: הדגל תקף רק כאשר מתחילים. ביישום 65ו00חו/ מבוסס 16 סיביות. אם: המפתח 6130/1050087806/001 שבמקטע אר בקבוצת פאוסטחוו של הקוב 1א1.אזץ שווה. ל-שטזד, דגל זה גורם לפונקציה לעקוף (0/66) את המפתח, ולהפעיל את התהליך החדש ב-פצ המשותף. 5 יוצרת את המטלה הראשית של. התהליך החדש במצב מושהה (5000066 58) ואינ מפעילה את התהליך החדש עד שמטלה אחרת (בתהליך אחר) קוראת. לפונקציה 686זח6 פסה אם קובעים דגל זה, בלוק הסביבה סוחס ק! משתמש בתווי 6068/. אם. לא קובעים דגל זה, בלוק הסביבה משתמש. בתווי זפאא. אם קובעים דגל וה, 5אוסחו מתייחסת. לתהליך הקורא כתוכנית ניפוי (פַט60, תוכנית שירות, הכלולה לעיתים במהדרים או בפרשנים, ומסייעת לתוכניתנים למצוא: ולתקן שגיאות תחביר ושגיאות אחרות בקודד המקור) והתהליך החדש הופך להיות עוד תהליך שתוכנית הניפוי של התהליך הקורא: מנפה. המערכת מודיעה לתוכנית הניפוי על. דגל פירוש 55 טפש | כל אירועי הניפוי (פוחפום פַטסם) שמתרחשים בתהליך שנמצא בבדיקה. אס. יוצרים תהליך וקובעים את הדגל הזה, רק. התהליך הקורא (זה שקרא ל-0163197106095) יכול לקרוא לפונקציה חעפסטטפסזס>או. 5 15 ואס 8806 | אם לא קובעים דגל זה ו-5וסחו// מנפה כרגע. את התהליך הקורא, התהליך החדש הופך להיות עוד תהליך שמנופה על ידי המנפה של. התהליך הקורא. אס התהליך הקורא אינר תהליך ש-5ו60חו\ מנפה כרגע, לא מתרחשות. פעולות ניפוי כלשהן כתוצאה מדגל ה. 5 פפוסאדפס | עבור תהליכים מסוג קונסול, אין לתהליך החדש גישה לקונסול של תהליך האב. התהליך החדש יכול לקרוא לפונקציה 006 אחר כך כדי ליצור קונסול חדש. אי אפשר להשתמש בדגל זה עם הדגל. ב כבר למדת שאפשר לבחור דגל אחד או יותר עבור הפרמטר פפָג91א6. אך אפשר להגדיר. רק דגל עדיפות מחלקה אחד לפרמטר פסָג6. דגל עדיפות המחלקה חייב להיות אחד. הערכים שמפורטים בטבלה 16.3 טבלה 16.3: דגלי העדיפות האפשריים של הפונקציה 0168160706655. דגל ץד 10קק 16 פירוש מציין תהליך שמבצע משימות זמן קריטי 7955 6-618₪631חו7) ש-6005חו\ ייב להפעיל. מיד עבור התהליך, כדי שיפעל נכון. מטלות של תהליכי מחלקה בעדיפות גבוהה (/6וזסוזל-190 55 יוצרות פסיקה למטלות שנובעות מתהלוכיי מחלקה בעדיפות נורמלית (ץףוזסזק-|בוחזסות 55 או עדיפות המתנה (/0016וזק-0616, ולכך גם מתבצעות מיד. לדוגמה, רשימת המשימות. 150 956) של וסחוי חייבת להגיב במהירות. כאשר המשתמש קורא לה, ללא תלות בעומס על. מערכת ההפעלה. חייבים לנקוט בוהירות רבה. כאשר משתמשים בקביעת מחלקה בעדיפות. גבוהה, מכיון שקביעת עדיפות כזו ליישוס שצורך זמן מעבד רב, עלולה לגרום לחסימת המעבד מפני יישומים אחרים. פרק 16: תהליכים ומטלות = 429 דגל פירוש 5 הזאק 16 || מצב המתנה - 51846 1616 - מציון מצב של. אובייקט, או התקן שניתן להפעלה, אך אינו בשימוש, או שהוא ממתין לפקודה שתורה לו להתחיל לפעול. 5 +דנהסנהק 1015 | מציין תהליך שהמטלות שלו מופעלות רק כאשר המערכת במצב המתגה (166) ומטלות של תהליך אחר כלשהו במחלקה בעדיפות גבוהה, יכול. לקבל שירות לפניו, כמו לדוגמה, שומר מסך. תהליכי בן יורשים את המחלקה בעדיפות. המתנה. 5 +הזהסנהק .והואאסוא | מציין תהליך נורמלי בלי רשימת צרכים מיוחדת. 55 +ידנהסזהק פואנדאפה | מציין תהליך שנקבעה לו העדיפות הגבוהה ביותר האפשרית. המטלות במחלקה בעדיפות ומן אמת (01355 /6וזסוז שוחוד-631ה) מקבלים שירות לפני כל שאר התהליכים, ובכלל זה תהליכים של מערכת ההפעלה שמבצעים משימות חשובות. לדוגמה, תהליך זמן אמת שמופעל יותר מאשר לפרק זמן קצר מאוד עלול לכך שמטמון הדיסק לא יפעל, או שהעכבר לא יגיבב בנוסף. ליצירת תהליך, 0708100100955 = יוצרת גם אובייקט מטלה. הפונקציה 5 יוצרת את המטלה עם מחסנית התחלתית שגודלה מוצג בכותרת התמונה (ז6306!/ סַוח1) של קובץ ההפעלה של התוכנית המוגדרת. המטלה מתחילה. להתבצע מנקודת הכניסה המוגדרת בכותרת זו. 0103007100955 יוצרת: את התהליך החדש ואת ידיות המטלות החדשות עם וכויות גישה מלאות. עבור שתי הידיות, אם: הפונקציה אינה מספקת מתאר אבטחה (ז0וק690 /5900116), התוכניות. יכולות. להשתמש בידית בכל פונקציה שדורשת ידית לאותו טוג של אובייקט. כאשר הפונקציה. מספקת מתאר אבטחה, התוכניות מבצעות בדיקת גישה בכל השימושים העוקבים של הידית לפני שחס מורשים לגשת למטלה. אם בדיקת הגישה דוחה את אפשרות הגישה,, התהליך הדורש אינו יכול להשתמש בידית לקבלת גישה למטלה. פוסחו מציבה בתהליך מזהה בן 32 סיביות. המוהה תקף עד שהתהליך מסתיים. התוכניות יכולות להשתמש במזהה וה כדי לוהות את התהליך או להגדיר אותו עבור הפונקציה 55ססזקחסקס לפתיחת ידית לתהליך. פאוסחוו מציבה למטלה ההתחלתית. של התהליך מזהה בן 32 סיביות. המוהה תקף עד שהמטלה מסתיימת והתוכנית יכולה. להשתמש במזהה זה כדי לוהות במפורש את המטלה במערכת. מזהים אלה מוחזרים. במבנה 11008110 6555הק. 0 321חווו ומבוא ל-ספו כאשר אתה מגדיר שם יישום במחרוזות 6וח8ח6300קהק| אר שח/חבהזוחסספו, ייך כל צורך ששם הקובץ של היישוס יכיל טיומת, אלא רק במקרה של יישום מבוסס 5 או מבוסס פאוס0חו/), שסיומת שם הקוב שלו היא 60%%. המטלה הקוראת. יכולה להשתמש בפונקציה 6טקח1וס30//ו כדי לחכות עד שהתהליך החדש מסיים. את האתחול שלו ומחכה לקלט מהמשתמש, בלי שיהיה. קלט ממתין. השימוש ב-166טטופחזזסיטו3/ יכול להיות שימושי עבור הסינכרון בין תהליך האב לבין תהליך. הבן, מכיון ש-6163000106055 חוזרת מבלי לחכות שהתהליך החדש יסיים את האתחול. שלו. לדוגמה, התהליך היוצר צריך להשתמש ב-6טטקחזזס*א לפני שהוא מנסה למצוא חלון שקשור לתהליך החדש. הדרך המומלצת של מיקרוסופט לסגירת תהליכים היא באמצעות הפונקציה 5, מכיון שהיא מודיעה לכל תיקיות הקישור הדינמי (5!פ) שצמודות לתהליך על כוונת הסיום. אמצעים אחרים לסגירת תהליך אינם עושים זאת. שים לב, כאשר מטלה קוראת ל-800010669, הפונקציה מסיימת את שאר מטלות התהליך מבלי לתת להן הודמנות להפעיל קטע קוד נוסף כלשהו (כולל קוד הסיום של המטלה של תיקיות קישור דינמי מוצמדות. סח מפעילה. ברצף (09קו9ו56). את 00706055 ותד 100 6זחד0!6וח86ס67681, ותהליך שמתחיל (כתוצאה מקריאה ל-016800010605) ביניהם. בתוך התהליך. מאורעות אלה יכולים לקרות בכל זמן נתון במרחב הכתובות, ופירוש. הדבר שחלות הגבלות אל. %: במהלך התחלת ההפעלה של התהליך ואתחול שגרות תיקיית הקישור הדינמי, התוכניות יכולה ליצור מטלות חדשות, אבל הן אינן מתחילות להתבצע עדד ש-608חו/ מסיימת את אתחול תיקיית הקישור הדינמי של התהליך. %: מטלה אחת בלבד יכולה לפעול במהלך האתחול של תיקיית הקישור הדינמי, או בשיגרת ניתוק (סחווטסח ח0636) בכל צמן נתון הפונקציה 80010665 אינה חוזרת, כל עוד יש מטלה פעילה באתחול תיקיית. קישור דינמי, או שגרות ניתוק. התהליך הנוצר נשאר במערכת עד שכל מטלות התהליך הסתיימו והקריאה לפונקציה 6 סגרה את כל הידיות של התהליך ואת המטלות שלו. הקריאה ל-010596%/800/6. חייבת: לסגור את הידיות אל התהליך ואל המטלה הראשית. אם התוכנית אונה וקוקה לידיות אלו, עדיף לסגור אותן מייד לאחר ש-6006ח// יוצרת. את התהליך כאשר מטלה אחרונה בתהליך מסתיימת, מתרחשים האירועים האלה. 1% פאוסחו/ו סוגרת באופן בטוח את כל האובייקטים שנפתחו על ידי התהלך. %+ מצב הסיום של התהליך (שמוחזר על ידי 06955ז6618%/000697) משתנה מערכר ההתחלתי 011/86 .51111 למצב הסיוס של המטלה האחרונה שמסתיימת. פרק 16: תהליכים ומטלות ‏ 431 לו פווסשחוו קובעת את אובייקט המטלה של המטלה הראשית למצב אות 511 5/00366). כך היא מספקת את כל המטלות שחיכו לאובייקט.. 5וס6חו/ קובעת את אובייקט התהליך למצב אות, וכך מספקת את כל המטלות. שחיכו לאובייקט. אס התיקיה הנוכחית בכונן 6 היא 08181581865, יש משתנה סביבה בשם שהערך שלו הוא 5 (6:8181818. כמו שהוסבר קודם בעניין חחסוחחסזושחסקו, מידע כוה על התיקיה הנוכחית של כונן המערכת אינו ידוע אוטומטית לתהליך חדש כאשר הפרמטר זחשוחחסזווחפק! של הפונקציה 0763190100955/ אינר 011 היישום. צריך להעביר ידנית את המידע על התיקיה הנוכחית לתהליך החדש. כדי לעשות זאת, היישוס חייב ליצור בצורה ברורה את מחרוזות משתנה הסביבה א=, לפי סדר האלף בית (מכיון ש- דו! פווסטחו/+ ו- 9% פווסחוו משתמשות בסביבה ממוינת), ואחר כך. לשים אותן בבלוק הסביבה, כפי שהוסבר קודם בעניין אחסון הבלוק. אחת הדרכים להשגת המשתנה של התיקיה הנוכחית עבור כונן % היא לקרוא לפונקציה פוחַאוטבקווש6605, (. .,":א"), שמאפשרת ליישום להימנע מסריקת בלוק הסביבה. אם המטלול המלא המוחזר על ידי סוחג)תזק!וט"661 הוא :א, התוכנית אינה. צריכה להעביר את הערך הזה הלאה כמידע סביבה, מכיון שתיקיית השורש היא תיקיית ברירת המחדל הנוכחית עבור כונן % של התהליך חדש. הפונקציה 5 מחצירה את הידית שיש לה גישת 400555 .)א 806855? אל אובייקט. התהלוך. התיקיה הנוכחית המוגדרת על ידי הפרמטר /0ו60זופ)חסזזסקו היא התיקייה הנוכחית. של תהליך הבן. התיקיה הנוכחית בפרמטר 6ח/61חפוחהזס0ק! היא התיקיה הנוכחית של. תהליך האב. שים לב: במערכת ! פאוסחו, כשפונקציה יוצרת תהליך בשעה שמוגדר דגל העדיפותת 6807 00855הק שופ פדא6ה6, מערכת ההפעלה מבצעת קריאה בטוחה ל- (פנחד, 5600050/90019900197)8011 עבור התהליך החדש; כלומר, התהליך החדש כולל אות שינוי למצב לא פעיל, הנובע מצירוף המקשים 6+!ז60. הדבר מאפשר למעטפות (69ח5) טובות לטפל בצירוף המקשים 0₪1+6 בעצמן, ולהעביר אות וה לתת-תהליכים באופן מבוקר. 01+81636 אינו אות מעבר למצב לא-פעיל, ו-%7 פאוסחו יכולה אולי להשתמש בצירוף זה כדי להפסיק את התהליך ואת קבוצת התהליך. 2 זקא2בחווו ומבוא ל-ספו 3 סיום תהליכים למדת שתוכניות מופעלות במסגרת תהליך ובסעיף 16.2 למדת איך יוצרים תהליך. כמו. במרבית ההקצאות או ביצירת עצמים בתוכניות, ווהי אחריות המתכנת לצאת מתהליך שסיים את תפקידו. משתמשים בפונקציה 80106655/₪ כדי לסגור את התהליך. שמתבצע כרגע. הפונקציה 0070655 מסיימת. את התהליך ואת כל המטלות הקשורות בו וחוורת למקום שממנו קראו לה, כמו שרואים להלן ואט פסה 5 411 805 0066 684 // צאט לו הפרמטר 0066)פט מגדיר את קוד היציאה מהתהליך ומכל המטלות שמסתיימות עלל ידי התהליך כתוצאה מהקריאה לפונקציה 5400/0665. משתמשים בפונקציה כדי לקבל את ערך היציאה של התהליך, ובפונקציה משתמשים כדי לקבל את ערך הציאה של המטלה. צריך תמיד לקרוא ל-₪4100/0685 כדי לסיים תהליך. הפונקציה 119106955 מספקת. סגירה חלקה ונקיה של התהליך, אשר כוללת את הקריאה לפונקציית נקודת הכניסה (חסנשחטה זחוסק-/מוחם) של כל תיקיות הקישור הדינמי (0115) הצמודות, עם ערך שמציין שהתהליך מסיים את ההצמדה אל תיקיית הקישור הדינמי. אם תהליך קורא: ל-8000106995ח/וחזד כדי לסייים את פעולתו, הוא אינו מודיע על כך לתיקיות הקישור הדינמי ש-0066חו/ ולי הצמידה לתהליך.. לאחר שכל תיקיות הקישור הדינמי עיבדו ערך סיום כלשהו של התהליך, הפונקציה 5 מסיימת את התהליך הנוכחי. סיום תהליך כרוך בפעולות הבאות. 1. הפונקציה 540006695 סוגרת את כל ידיות האובייקט שהתהליך פתח. 2. כל המטלות של התהליך מסיימות את פעולתן. 3. המצב של אובייקט התהליך הופך למסומן (3166ח5/0), והדבר גורס להפעיל מחדש (06ח₪5) מטלות כלשהן שהמתינו לתהליך שיסתיים. 4. המצב של כל מטלות התהליך הופך למסומן, והדבר גורם להפעלה מחדש של מטלות כלשהן שהמתינו לתהלוך שיסתיים. 5. מצב הסיוס של התהליך משתנה מ-011/6א. 5111 לערך של קוד היציאה של התהליך. סיום תהליך אינו גורס ל-פאוסחו לסייים את תהליכי הבן. סיום תהליך אינו גורם. בהכרח להסרת. אובייקט התהליך ממערכת ההפעלה. המערכת מוחקת. אובייקט. תהליך כאשר התוכנית סוגרת את הידית האחרונה של התהליך. פווסטחו/וו מפעילה. באופן סדרתי את הפונקציות 0000605 | 4ג6זחד)0ש, = הזת ד)03ום, ו פרק 16: תהליכים ומטלות ‏ 433 בנוסף לכך, פווסטחוו מפעילה באופן סדרתי תהליך שמתחיל (כתוצאה מקריאה ל-6168090106055) עם התהליכים הקודמים שבתוך התהליך הקורא. רק אירוע אחד מתוך אירועים אלה יכול לקרות במרחב הכתובת בכל ומן נתון; כלומר, התהליך מקיים את המגבלות הבאות. % בומן התחלת הפעלת התהליך ושגרות האתחול של תיקיות הקישור הדינמי, התוכנית יכולה ליצור מטלות חדשות, אבל הן אינן מתחילות לפעול עד שמסתיים. הליך האתחול של תיקיות הקישור הדינמי עבור תהליך זה. רק מטלה אחת בתהליך יכולה להיות בכל זמן נתון באתחול של תיקיית קישור דינמי, או בשגרה מנתקת (סחטטסה 0156 5 5 אינה חוזרת עד שאף לא אחת מהמטלות נמצאת באתחול תיקיית. הקישור הדינמי שלהן, או בשגרות מנתקות. 4 יצירת תהליכים - תהליכי בן למדת שאפשר להשתמש בפונקציה 0103197/06655 כדי להתחיל בהפעלת תהליך אחר. כאשר אתה מתכנן יישומים מורכבים יותר, תפגוש פעמים רבות במצבים שבהם תרצה. לבצע בלוק קוד אחר למילוי משימה כלשהי. אפשר לקרוא מהתוכנית לפונקציה שתבצע את המשימה. עם זאת, פונקציות הן סדרתיות בטבען, ומשמעות הדבר היא שהקוד אינו יכול להמשיך בביצוע עד לאחר סיום פעולת הפונקציה. תחליף לשיטה שבה משתמשים בבלוק אחר של קוד לביצוע המשימות השונות בתוכניות הוא ליצור מטלה חדשה בתהליך, ולתת לה לסייע בהמשך העיבוד. השימוש. בריבוי מטלות (05גשזחד 6וקטוטי) מאפשר לקוד התוכנית להמשיך בעיבוד בומן שהמטלה החדשה מבצעת את המשימה הנדרשת ממנה. לרוע המזל, השימוש בריבוי מטלות פעמים רבות גורס לבעיות תזמון (פוחפוטסזק חסווהקוחסזהשחץ5), כאשר חובה על. המטלה הקיימת יילראותיי את תוצאות המטלה החדשה. על תומון תלמד בסעיפים. הבאים. הגישה האחרת היא יצירת תהליך חדש, שנקרא תהליך בן (06055ז0 011/0), שתפקידר לתמוך באפשרות הביצוע של פעולות במקביל. תהליכים מאפשרים לתוכניות להמשיך במסלול העיבוד העיקרי שלהן, בשעה שהן מטילות על תהליך בן לבצע תהליך עיבוד משני כלשהו. אפשר גם לעכב את פעולת התוכנית בשעה שתהליך הבן פועל במטלה שתוצאותיה דרושות להמשך פעולתו של התהליך העיקרי. בסעיפים הבאים נעסוק בתהליכי בן ובמטלות. השימוש בשני כלים חשובים אלה יעוור לך להבין טוב יותר את. ההבדלים ביניהם, ואיך אפשר להשתמש בשניהם בתוכניות. ככל שתוכניות פואסשחו שלך נעשות מורכבות יותר, תשתמש יותר ויותר ברכיבים: שאין תלות ביניהם, וכאלה שהס משותפים. רכיבים אלה יכולים לחיות, לדוגמה, תיקיות קישור דינמי, שפועלות מתוך התהליך הנוכחי של התוכנית (אובייקט פנים: תהליכי, 0960 06955זק-10) ; או שרתיםם אוטומטיים (56₪0615 חסטפוחסזטא) לקישור 4 321חווו ומבוא ל-ספו והטבעה של אובייקטים 015 - 8606068 800 הַחח1 096%), שפועלים מחו לתהליך הנוכחי של התוכנית (אובייקט חוץ תהליכי, 0060 00995זק-0-זס). ספר זה. לא דן הברחבה באובייקטים מסוג 5פפססזק-ח! או באובייקטים מסוג 655סזק-!ס-)ס. 5 עובדים יותר עם תהליכי בן כמו שלמדת, התוכניות יכולות לשלוט בדרך שבה הן פועלות עם תהליכי בן. אך כמעט. כל תהליכי הבן דורשים גישה לנתונים המוכלים במרחב הכתובת של תהליך האב. ככלל, כאשר תהליך בן מבקש גישה לנתונים של תהליך האב, צריך להריץ את תהליך. הבן במרחב כתובות משלו, אך לאפשר לו גישה לנתונים הרלוונטיים במרחב הכתובת. של תהליך האב. השליטה בגישה למרחב הכתובת של תהליך האב מאפשרת לך להגןן על נתונים שאינס רלוונטיים לתהליך הבן מפני פגיעה לא מכוונת. 132 מאפשרת. מספר שיטות להעברת נתונים ביץ תהליכים שונים: חילוף נתונים דינמי פסס - 06 6-13חוהחץכ), קישור והטבעה של אובייקטים 01 - 806 הַחח! זספנטס. 6 ח5), צינורות (פסקל), חריצי דואר (5ו0ו5 !0181 וכדומה. אחת הדרכים המקובלות ביותר, וגס הפשוטה ביותר, להשתתף בנתונים היא להשתמש בקובץ ממופה-זיכרון (6 סקקה!-ץזסחוסוא. קובץ ממופה-ויכרון הוא קובץ מסוג מיוחד, שמאפשר לשמור אזור של מרחב כתובות. (50809 8607655 01 חספה ה 6חספה) ולשריין אמצעי אחסנה פיסי עבור האור הזה, בדומה להקצאת זיכרון וירטואלית. אך לא כמו הזיכרון הווירטואלי, בקבצים הממופים בויכרון אמצעי האחסנה הפיסי בא מקובץ שקיים כבר בדיסק, ולא מקובץ הדפדוף (₪6 פַוָ9?) של המערכת. אחרי מיפוי הקובץ, אפשר לגשת לכל חלקיו, כאילר התוכנית טענה אותו לציכרון משתמשים בקבצים הממופים האלה עבור שלוש המטרות שלהלן. המערכת משתמשת בקבצים ממופי-זיכרון כדי לטעון ולהפעיל קבצי הפעלה וקבצי תיקיות קישור דינמי. השימוש בקבצים ממופים חוסך במקוס שצריך עבור קובץ הדפדוף, וגס בומן שחיישום צריך כדי להתחיל לפעול. 1% אפשר להשתמש בקבצים ממופי-זיכרון כדי לגשת לקבצי נתונים בדיסק. השימוש: בקבצים הממופים חוסך ביצוע פעולות קלט ופלט בקבצים ושימוש בחוצצים. להעברת תכולת הקוב שפועלים עליו. % אפשר להשתמש בקבצים הממופים כדי לאפשר לתהליכים רבים שפועלים באותה. מחשב לשתף נתונים ביניהם, כמו שלמדת עד עכשיו. רבים מאובייקטי התקשורת של לבחו משתמשים במבנה קבצים ממופי זיכרון, מכיון שוהו כלי חוק וקל לשימוש. בסעיפים שתלמד מאוחר יותר תלמד כיצד ליצור קבצים. ממופי ויכרו. פרק 16: תהליכים ומטלות = 435 אם רוצים ליצור תהליך חדש, וגם רוצים שיבצע עבודה כלשהי בומן שתהליך האב ממתין לתוצאה (לדוגמה, לכתוב קטע נתונים לקובץ שתהליך האב יקרא יותר מאוחר), תהליך האב יכול להשתמש בקוד שדומה לקוד שלהלן 10 א0תעתאהסעאד 5פמססתק ו (501 ,590906 02000) 00688ע0208:00 = 55060688 מ00ם (960088) 48 [ 16 8664 108965 סת טסץ 85 5008 85 416הג ב8שטמ) שנט 1086 // 8 ו 106 ; (מלצוודשאת1 ,685סספעת. ג) 006 00 1ףת1פעסת6 1ב ספמ שמצ // ; (80080 56881 ,עשת 1 0 16 00658פם שנס 1086 // ( ו 10 / קטע הקוד הזה יוצר את התהליך החדש 06ח0699%3זק. אם הוא מצלית, קטע הקוד סוגר את הידית המיותרת כדי לשחרר ומן 0?0, ואחר כך ממתין לתהליך שישלים את העיבוד שלו. לאחר שהתהליך משלים את העיבוד, המשתנה 0008900006 מכיל את המידע על קוד היציאה של התהליך, וקטע הקוד סונר את ידית התהליך. אם היה כישלון בטעינת התהליך, קטע הקוד אינו מבצע עיבוד כלשהו. 6 הפעלת תהליך בן מנותק (06055ק 601!6 6%367660) בסעיף 16.5 למדת ליצור תהליך בן וגס להפסיק 39 את הפעלת המטלות הנוכחיות. עד שהתהליך מסתיים. במקרים רבים התוכניות מתחילות בתהליך אחר כתהליך בן מנותק (00955זק 08/6 20066ז6כ), שאינו מוצמד לתהליך האב. תהליך בן מנותק הוא: תהליך אשר תהליך האב יוצר בומן הפעלתו, ולאחר מכן, כשתהליך הבן מתחיל להתבצע, תהליך האב אינו מעוניין בתקשורת כלשהי עם תהליך הבן, או שתהליך האב אינו דורש שתהליך הבן יסיים את עבודתו, כדי שהוא עצמו יוכל להמשיך לפעול. הרצת תהליכי בן מנותקים מאפשרת לתוכניות לטעון תוכניות אחרות מבלי לדאוגג לומן הניהול שלהן או למהירות הביצוע שלהן. כאשר מפעילים תוכנית סייר 5וס6חו/% (זסזסוקא5 פווסטחואו) לדוגמה, הסייר יוצר תהליך חדש, ואחר כך מתעלם. מהתהליך החדש וממשיך במה שנדרש ממנו לעשות. 6 כו ומבוא ל-ספו כאשר התוכניות יוצרות תהליך בן מנותק, התוכנית חייבת ליצור תחילה את התהליך,, ואחר כך לסגור את ידיות התהליך החדש ואת המטלה הראשית שלו. קטע הקוד שלהלן מציג כיצד אפשר ליצור תהליך בן חדש מנותק, שאינו מוצמד (801 ,59906 00| 00088ע0208:00 = 55060088 מ00ם (000658פ5) 41 [ ( ו ו 10 ( 88 1 7 הבנה מעמיקה יותר של המטלות בסעיפים קודמים למדת ליצור ולנהל תהליכים. כל תהליך של לו מכיל מטלה. אחת או יותר. ראוי לוכור שמטלה היא נתיב פעילות בתוך תהליך. בכל פעם ש-פוסחו מאתחלת מופע חדש של תהליך, מערכת ההפעלה יוצרת מטלה ראשית חדשה עבורו. המטלה הראשית מתחילה כאשר פאוסטחווו טוענת את התוכנית. המטלה,, בתורה, קוראת לפונקציה חומאחווו וממשיכה בפעולתה עד שהפונקציה חוב/חוצ מסיימת את העיבוד שלה (סיום העיבוד של המטלה) והתוכנית קוראת ל-0010099/₪. כדי שיטיים את התהליך. עבור הרבה יישומים, המטלה הראשית שיוצרת מערכת ההפעלה היא המטלה היחידה שהתוכנית צריכה. עם זאת, התהליכים יכולים ליצור מטלות נוספות כדי לעוור להם בביצוע משימותיהם. הרעיון שעומד מאחורי יצירתת מטלות נוספות הוא להשתמש בכמה שיותר ומן מעבד וביעילות מירבית. כאשר אתה יוצר מטלות נוספות, אתה שולח למערכת ההפעלה דרישות נוספות לקבלת זמן מעבד. כמו שתלמד בהמשך, מטלות נוספות מאפשרות לתוכניות לבצע ביתר יעילות עיבוד ברקע, לבצע חישובים מורכבים, ופעולות מבוססות זמן ואירוע חס 804 חוד 5 88566), כמו גם ביצוע משימות תכנות מתקדמות. בסעיפים הבאים נדון מתיי ליצור ומתי לא ליצור מטלה. כאשר אתה חושב מה מופעל כרגע במערכת, תוכל להעור בכך שתחשוב על המטלות. כארוזות בתוך תהליך. המערכת מאפשרת למטלות השונות לפעול ולחזור ולפעול, כתלות בעדיפות (/זוזוזק) כל מטלה, וללא קשר אם הן שייכות לתהליך אחד או לתהליכים שונים. תרשים 16.4 מציג מודל לוגי של מספר תהליכים, שכל אחד מהם. מכיל מטלות רבות שפועלות במערכת ההפעלה 5או00חו/, כמו כן סדר אפשרי להקצאת. ומן מעבד עבורן. פרק 16: תהליכים ומטלות = 437 2 008 1 008 סוחס 551 | 188 || עסוחסו וח0ופע5] 188 וס 60 | 108 |[ סוס זה ] 168 ות סוק | 108 = || עמסוחסו0 פפסססזק] ‏ 168 ד 5 הסוחד 2 ד | 80הך 0008 | 107086 3 7-=-- 101680 1 ------ 707080 2 == [ 1701686 4 == תרשים 16.4: המודל הלוגי של תהליך-מטלה. 8 הערכת הצורך במטלות בסעיף קודם למדת שהתוכניות משתמשות פעמים רבות במטלות כדי להבטיח שלחלקי. היושוס השונים תהיה גישה למשאבי המעבד. ההחלטה מתי להשתמש במטלות. נוספות ומתי לא להשתמש בהן, היא פעמים רבות ההחלטה החשובה ביותר שעושים. בעת תכנות בסביבת פוסוחואו. לדוגמה, התבונן בתוכנית גיליון אלקטרוני. תוכנית זו חייבת לבצע חישובים חוורים. כאשר המשתמש משנה את הנתונים שבתוך התאים. החישובים החוזרים לגליונותת אלקטרוניים מורכבים לעיתים ודרוש ומן מה כדי לבצעס. על כן, יישום המתוכנן היטב אינו צריך לבצע חישוב חוזר לגיליון האלקטרוני לאחר כל שינוי שעושה המשתמש. במקום ואת, עליו להפעיל את החישוב החוור של הגיליון כמטלה נפרדת, בעלת עדיפות יותר נמוכה מזו שיש למטלה הראשית. כאשר משתמשים בשתי מטלות, המטלה הראשית תמיד תפעל בומן שהמשתמש מקליד, ואו מטלת החישוב החוור בעלת העדיפות הנמוכה לא תוכל לגשת למעבד. כאשר המשתמש מפסיק לחקליד, המטלה בעלת העדיפות הנמוכה מתחילה להתבצע, בעוד המטלה הראשית ממתינה למשתמש שיתחיל שיתחיל שוב בהקלדה. אפשר ליישם את העיקרון שלמדת זה עתה, של השימוש במטלות, גם עבור תוכניותת מורכבות שמבצעות קבוצות של משימות רבות. פעילויות ברקע גם כן מפעילות מטלות. נוספות. 8 הכהו ומבוא ל-ספו לפניך מספר מצבים נוספים שבהם יש תועלת משימוש במטלות. + יצירת מטלה נפרדת לביצוע משימות ההדפסה של היישום, כדי לאפשר למשתמש. להמשיך ולהפעיל את היישום עצמו בזמן ההדפטה. יצירת מטלה נפרדת כדי להחזיק תיבת דו- שיח לא מודאלית סמו 110061655 80%) שמאפשרת למשתמש להפסיק קטחזסוח!) משימות שנמשכות ומן רב, כמו. העתקת קבצים או הדפסה. %ו יצירת מטלות שונות הפועלות במקביל ובו-זמנית כדי לדמות את אירועי העולם. הממשי (לדוגמה, אירועים שמתרחשים בפרקי זמן שאינם מוגדרים). 9 ההחלטה לא להפעיל מטלה כשמתכנתים פועלים לראשונה בסביבת עבודה שתומכת בריבוי מטלות, הם נוטים לשימוש יתר במטלות, בגלל העוצמה של שיטת העיבוד החדשה ונוחות השימוש שהמטלות מאפשרות להס. מתכנתים רבים התחילו לחלק יישומים קיימים לחלקים. קטנים יותר, שכל אחד מהם מופעל כמטלה נפרדת. למרות נוחות השימוש בעיבודד מבוסס מטלות (0609900זק 630-88566זחד) ועד כמה שהוא נראה יעיל ממבט ראשון, הוא גם יכול לגרום לבובוו משאבי זמן עיבוד של היישום. יצירת מטלות והפעלתן דורשת תקורה כלשהי, כמו למשל ניהול תורי מטלות נפרדים ומעקב אחריהן, גם אם: מערכת ההפעלה אינה משחררת את המטלה לעיבוד. מטלות רבות מאיטות את ביצועי המערכת, מכיון שבנוסף לתקורת המטלה המערכת חייבת לבדוק את רמת העדיפות. (/10%6 /פוזסוזק) של כל מטלה פעילה כרגע כאשר עליה להחליט איזו מטלה להפעיל. כמו שלמדת, נוח להשתמש במטלות ויש להן ג יתרונות ולכן - יש להן מקום בכל תוכניות 0005חו0ו. אך חשוב לדעת, שכאשר משתמשים במטלות, עלולות להיווצר בעיות שונות, בעת ניסיון לפתור בעיות הפעלה וביצועים. לדוגמה, כשאתה מפתח תוכנית עיבוד תמלילים ורוצה שפעולת ההדפסה תפעל במטלה נפרדת, התגובה הראשונה שלך יכולה להיות ליצור מטלה ולהפעילה להדפסת המסמך דף אחרי דף לרוע המול, המשתמש יכול לשנות את המסמך בומן שאתה מדפיס ברקע. על כן, במקום הפתרון הפשוט הקודם, עליך להעתיק את הקובץ המיועד להדפסה אל קוב ומני, להדפיס אותו ולמחוק אותו בסיום ההדפסה. השימוש בריבוי מטלות ובקובץ. ומני הוא בלי ספק יותר יעיל למשתמש וגם הופך את התוכנית ליותר מתאימה עבורוו עם ואת, עליך להיות זהיר כדי לוודא שיצירת מטלות נוספות אינה מטכנת אאת העיבודד שמבצעת התוכנית שלך באמצעות המטלות הנוכחיות שלה. מספר כללים צריכים להתקיים כאשר מחליטים להשתמש, או לא להשתמש, בריבוי מטלות (6365זחד 6וקטטוו). % כל מרכובי הממשק למשתמש (פקדים וחלונות) צריכים להשתתף במטלה משותפת, עם חריגות נדירות מאוד. %+ תוכניות צריכות ליצור מטלות רק כשצריכים אותן, ולא ליצור מטלות נוספות ויילהחזיקן במלאי" פרק 16: תהליכים ומטלות = 439 1% התוכניות צריכות לשחרר מטלות כשפעולתן מסתיימת. 3% יישומים מורכבים יותר, אשר משתמשים בחלונות רבים, עשויים לגרור יצירת מטלות נוספות כדי לבצע את העיבוד בחלונות מסוימים. + לא צריך ליצור מטלות שעלולות לאפשר למשתמש להפריע לתהליכי מערכת קריטיים, דבר שעלול לגרום לשיבוש בזיכרון או התהליכים אחרים שפועלים. באותו זמן. ככלל, עליך להיות תמיד בטוח שאתה וקוק למטלה, או שהמטלה משפרת בצורה משמעותית את תהליכי העיבוד של התוכנית. השימוש במטלות נוספות מבלי לעשות. את השיקולים האלה, גורם לבזבוו זמן מעבד (פוחו ז060550זק) ולהאטה בהפעלת. התוכניות. 0 יצירת פונקציית מטלה פשוטה בסעיפים קודמים למדת שהתוכניות יכולות להשתמש בריבוי מטלות כדי לאפשר להן. לבצע פעולות עיבוד מרובב (8610065 46000 6וק!וט/ו) במסגרת תהליך יחיד. כאשר יוצרים מטלות, התוכניות משתמשות בדרך כלל בפונקציה 636ז6/630610. פונקציה זר יוצרת מטלה שתופעל במרחב הכתובת של התהליך הקורא. את הפונקציה 163 כותביםם בתוכנית, כמו שרואים בהגדרה שלהלן | 0:68 תפות 1 5: =שפטמ1עם20 ע600216ם במסעתף 50 עסק // מע 1 ,8126 20%:ב 8בשעתם 5181צח1 // ,26%5126 4051 פתסאזת ,089688ת)ע1504 מא 168מסחנ 60688 50 משמהגסק // פה טפס ו פאתדפ סתפמפטם עס אשת עס? מְהשמנמָעם // ,עבטמבצגק1 ססטקם 6 268010 // ,818065ה800508%10 פמסמת 180001816% 84מעמ: 8שמצמטם, ס6 פס // דמ פתסאפק 0 הפונקציה 6163181630 מקבלת את הפרמטרים שמפורטים בטבלה 16.4. טבלה 16.4: הפרמטרים שמקבלת הפונקציה 686ח168161. פרמטר תיאור פסטטטחש)ה636זחדקו | מצביע למבנה מסוג 8180765דזא. 55001 שקובע אס תהליך הבן יכול לרשת את הידית המוחורת. אם. והזח דק! הוא -%011, תהליך הבן אינו יכול לרשת. את הידית. תחת ד 5אוס6חוא, האיבר ז5600110/06900000פ1 של המבנה מגדיר מתאר אבטחה (ז0זקו20501 /560008) למטלה החדשה. אס 5פזטפוז11ה630זחדק! הוא 014, המטלה. 0 321חווו ומבוא ל-ספו פרמטר דפ ו ב ב 1 3 תיאור מקבלת את ברירת המחדל של מתאר האבטחה. תחת א009ח!/, הפונקציה 636זח0163191 מתעלמת מהאיבר 50/0650 של המבנה. מגדיר את הגודל, בבתים, של מחסנית המטלה החדשה. אם. 8 שווה לאפס, גודל המחסנית הוא לפי ערך ברירת. המחדל; זהו גודל המחטנית של המטלה הראשית של התהליך. פאוסחו מקצה אוטומטית את מחסנית המטלה. במרחב הזיכרון של התהליך, ומשחררת את המחטנית כאשר. המטלה מסתיימת. שים לב לכך שגודל המחסנית משתנה, אם יש צורך בכך. 6163191036 מנסה לשריין את מספר. הבתים שמוגדרים על ידי 651306506, והיא נכשלת אם. הגודל עובר את הזיכרון הצמין. כתובת ההתחלה של המטלה החדשה. ככלל, זו הכתובת של. פונקציה שהוכרו עליה על פי מוסכמות נוהל הקריאה זקאאזא. לפיו, הממשק הזה מקבל מצביע בודד בן 32 סיביות. כארגומנט, ומחזיר ערך קוד יציאה בן 32 סיביות. ההגדרה נכתבת כך (7/00 )הט וחד זק זוי סו מגדיר ערך בודד לפרמטר בן 32 סיביות שמועבר למטלה. מגדיר דגלים נוספים ששולטים ביצירת המטלה. אם. 0703100005 מגדיר את הדגל 050 א50595. שדתפהס, התהליך יוצר את המטלה במצב מושהה (51306 5560606 ואינו מפעיל אותה עד שהתוכנית (או תוכנית אחרת) קוראת. לפונקציה 6ג6זחדשוחטפפה. אם הפרמטר שווה לאפס, המטלה. מופעלת מיד לאחר שהיא נוצרת. פוסחו// ינה תומכת כרגע. בערכים אחרים. מצביע למשתנה בן 32 סיביות שמקבל את המזהה של המטלה. אם הפונקציה 66זחטוגסו מצליחה, הערך המוחזר הואא ידית למטלה החדשה. אם. הפונקציה ‏ נכשלת, הערך המוחזר הוא ‏ 1ש%. תחת 9% אוסשחוא, הפונקציה 163 מצליחה רק כאשר המערכת קוראת לה בהקשר של תוכנית 32 סיביות. תיקיית קישור דינמי של 32 סיביות אינה יכולה ליצור מטלה נוספת, כאשר תוכנית שלל 6 סיביות קוראת לה. פרק 16: תהליכים ומטלות ‏ 441 הפונקציה 09316106 יוצרת את הידית של המטלה החדשה עם גישה מלאה למטלה זו. אם הקריאה ל-0ג6זח163/91 אינה מספקת מתאר אבטחה, באפשרות התוכנית. להשתמש בידית המוחזרת בכל פונקציה שדורשת ידית לאובייקט המטלה. כאשר התהליך מספק מתאר אבטחה, התוכנית מבצעת בדיקת גישה לכל השימושים העוקבים בידית, לפני שהיא מאפשרת גישה. אם בדיקת הגישה נדחית, התהליך. המבקש אינו יכול להשתמש בידית כדי לגשת למטלה. הפעלת המטלה מתחילה בפונקציה שמוגדרת על ידי הפרמטר 51810001655כן. כאשר פונקציה זו חוזרת, הפונקציה 50זחד9ז63ז6 משתמשת בערך 080/וס המוחזר כדי לסיים את המטלה על ידי קריאה לפונקציה 656ז80010. צריך להשתמש בפונקציה כדי לקבל את הקוד המוחור של המטלה, לאחר שהמטלה מסתיימת. הפונקציה 636זח063161 עשויה להצליח, אפילו אם 5137040665 מצביע לנתונים אר קוד. אס כתובת ההתחלה אינה תקפה כאשר המטלה מופעלת, נוצרת הודעה על חריגה. והמטלה מסתיימת. התוכנית מטפלת בסיום מטלה כתוצאה מכתובת התחלה שאינה. תקפה, שנובעת משגיאה בעת יציאה של תהליך המטלה. התנהנות וו דומה לאסינכרוניות של 6163197106055, שבה הפונקציה יוצרת את התהליך, אפילו אם היא מתייחסת לתיקיות קישור דינמי (0115) שחסרות או שאינן תקפות. הפונקציה 0163161003 יוצרת את המטלה עס עדיפות מטלה (ע6חסוז 6פפזחד) של הסוא ידנהסזהק סאפההד. | השתמש | בפנקציות | /6260000/הד0 ו-/63000110ז54 כדי לקבל ולקבוע את ערך העדיפות של המטלה. אובייקט המטלה נשאר במערכת עד שהמטלה מסתיימת והתוכנית סוגרת את כל הידיות שלה על ידי הקריאה ל-009%9006. התוכנית מפעילה באופן סדרתי את הפונקציות ,8000106655‏ 630זחד)0ש, ‏ 636ז0ד ,010806‏ 6הסזהדפזסוחפה010816 ותהליך שמתחיל (כתוצאה מקריאה ל-0/6318010095%). רק אחד מתוך אירועים אלה יכולל לקרות במרחב הכתובת בומן נתון. כלומר, התהליך מקיים את המגבלות הבאות. 1% בומן התחלת התהליך ואתחול שגרות תיקיות הקישור הדינמי, התוכנית יכולהה ליצור מטלות חדשות, אבל הן אינן מתחילות לפעול עד שהתהליך מסיים את אתחול תיקיות הקישור הדינמי. 3% רק מטלה אחת בתהליך יכולה להיות בכל ומן נתון במהלך אתחול תיקיית קישור דינמי או בשגרה שאינה מוצמדת. לי הפונקציה 540910605 אינה חוזרת, עד אשר אין עוד מטלות פעילות באתחולל תיקיות הקישור הדינמי או בשגרות שאינן מוצמדות. % הערה: מטלה שמשתמשת בפונקציות מתיקיות זמן הריצה של שפת 6 6 5 6וחו-חטז) צריכה להשתמש בפונקציות זמן הריצה של ₪ (פחס0סחט סהחח 6) 636זתוחו50פ ו-60600/686 לניהול המטלות,, ולא להשתמש בפונקציות 070316701630 ו-0ה6זח6ש. אם איך עושים זאת, עלול להיגרם אובדן זיכרון בומן שהתוכנית קוראת ל-66 07 2 זקא2פחווו ומבוא ל-ספו כדי להבין יותר טוב את העיבוד שמבצעת הפונקציה 026זח6/63191, התבונן בתוכנית. וחד 16ק0ח/5, שנמצאת בתקליטור המצורף לספר זה (בתיקיה 8006559285) התוכנית שהשזחד 6|קוחו5 יוצרת מטלה חדשה כל פעם שהמשתמש בוחר את האפשרות 1690 מהתפריט, ומוציאה פלט לחלון שהמטלה התחילה. כאשר בוחרים. באפשרות 5%%, התוכנית משחררת כל מטלה בתור שלה, ומודיעה לך על הריסת המטלה. הקוד שבפונקציה 109106 יוצר את המטלה, כמו שרואים להלן מ ג פט 5:26 // :צפמ עד 486 סא ,6440200עה187 תס ,0 ,תמטא) 086088 עס ( 9011018 0 (%הסעם 1 הצגת אתחול המטלות למדת שתוכניות יכולות ליצור מטלות כדי לבצע עיבודים נוספים במרחב ההפעלה. שלהן. בכל פעם שיוצרים מטלה חדשה, פאוסחו/+ מבצעת מספר משימות יסודיות בעת. אתחול המטלה, כדי לאפשר לה להתחיל בעיבוד הנדרש. תחילה, 100066 מקצה לכל מטלה מחסנית נפרדת, במרחב הציכרון בן 468 של התהליך. כאשר התוכניות משתמשות במשתנים סטטיים וגלובאליים (6ח 506 5 6/003), מטלות רבות יכולות לגשת למשתנים אלה בו-ומנית, כאשר יש חשש. לפגיעה בתכולת המשתנים. מכיון ש-00065חו/ יוצרת את המשתנים המקומיים /1063 5 ואת המשתנים האוטומטיים (5ופזב 6)ופוחסזטה) במחסנית המטלה, הם. יותר חסינים בפני פגיעה שעלולה להיות במשתנים הגלובליים בתוכניות של ריבוי מטלות. למדת שצריך תמיד לנסות ולהשתמש במשתנים מקומיים או אוטומטיים, ולא: במשתנים גלובליים. כלל זה תקף באופן משמעותי יותר כאשר משתמשים במטלות. בשלב השני, פאוס6חו מקצה לכל מטלה קבוצת אוגרים (ּז6פפָָה). של המעבד, שנקראיים הקשר המטלה 601940 %'0ה6זחד) ומאחסנת אותם במבנה מסוג דאפדאוס6. באפשרות התוכניות לברר מהי תכולת מבנה 60% בכל זמן, כדי לדעת את מצב אוגרי המעבד ששייכים למטלה. כאשר מערכת ההפעלה מתזמנת את המעבד עבור המטלה (כלומר, מקצה לה ומן), היא מאתחלת את האוגרים האלה בתוך הקשר המטלה הזו. האוגרים מכילים את מצביע ההוראה (זפזחוסק חסוטסטוזפח1, שמצהה את. כתובת ההוראה הבאה של המטלה המעבד צריך לבצע) ואת מצביע המחסנית 51800 זפזחוסק, שמוהה את הכתובת של מחסנית המטלה). לאחר שהמטלה מסיימת את אתחול המחסנית וההקשר, ובהנחה שהיא אינה במצב מושהה (5/300 5509696), היא מתחילה להתבצע מהשורה הראשונה של הפונקציה שהוגדרה בעת יצירת המטלה. פרק 16: תהליכים ומטלות = 443 2 שלבי יצירת מטלות על ידי מערכת ההפעלה בסעיף קודם למדת שמערכת ההפעלה מבצעת מספר צעדים חשובים כאשר היא מקצה. מטלות, שהתוכנית משתמשת בהן לפעולתה. למעשה, מערכת ההפעלה מבצעת ששה צעדים מוגדריס בכל פעם שהיא יוצרת מטלה חדשה, כפי שמפורטים להלן 1. מקצה אובייקט גרעין מטלה 00600 9:6 שסזחד), כדי לוהות ולנהל את המטלה החדשה שנוצרה. אובייקט הגרעין מחויק הרבה ממידע המערכת כדי שיוכל לנהל את המטלה. ערך ידית אובייקט גרעין המטלה מוחור על ודי הפונקציה 01631611636. 2. מאתחלת את ערך היציאה של המטלה ל-1/6ד0א, 51111, וקובעת את מונה ההשהיה טחט00 שחפקפטפ) של המטלה ל-1 (שני הערכים מוחוקים על ודי פוסטחו/ו באזובייקט גרעין המטלה). 3. מקצה מבנה זאשדא60 עבור המטלה החדשה. 4. מכינה את מחסנית המטלה על ידי שמירת אזור במרחב הכתובת, משריינת עבור האזור שני דפים מאמצעי האחסון הפיסי, קובעת את ההגנה של אזור האחסנה. ששוריין עבור סדזה/ו0אה 05ק, וקובעת לתכונה 6080 2865 את ערך הדף השני. 5. ממקמת את הערכים ז25₪0400! ו-6פפזחדצק! בראש המחסנית, כך שהמטלה החדשה רואה אותם כפרמטרים שמועברים לפונקציה 5191107063 (רק אם הקוד משתמש בתיקיית זמן ריצה של מהדר 6) 6. מאתחלת את אוגר המחסנית שבמבנה זאפזא60 של המטלה, כדי שוצביע לערכים ש-פווסטחו/+. הציבה במחסנית. בצעד 5. אחר כך, מערכת ההפעלה מאתחלת את אוגר מצביע ההוראה (וסוחוסק חסוסטיופח1) כדי להצביע לפונקציה. הפנימית שהיא מפעילה, לפני הפעלת ההוראה הראשונה בפונקציית האתחול של המטלה. 3 קביעת גודל המחסנית של המטלה בסעיף 16.10 למדת שבאפשרות התוכניות להגדיר את גודל מחסנית המטלה עבור הפונקציה 636ו61631910. חשוב לשים לב לכך. לאחר ש-0085חו/ יוצרת את המטלה, התוכנית אינה יכולה לשנות את גודל המחסנית בצורה אמינה. במקום זאת, פאוסשחוא מאפשרת למחסנית לצמוח בצורה דינמית ככל שיידרש. אס אינך מציון גודל למחסנית המטלה, 005חו מקצה מחסנית שגודלה כגודל המחסנית של המטלה הראשית. 6/6306101636 יוצרת: את המחסנית במרחב כתובת. הויכרון של התהליך. אפשר להציג את יצירת המחסנית בצורה ברורה במודל לוגי של מרחב המחסנית המוקצה, כמו שרואים בתרשים 16.5. 4 321חווו ומבוא ל-ספו 0 ה 0 1 סוחד 2 2 ד ה ו זו תרשים 16.5: מרחב המחסנית של התהליך, המטלה הראשית והמטלה המשנית. כאשר 00068חו/ מקצה מרחב מחסנית עבור מטלות נוספות, היא עושה ואת בדרך כלל. מתחת למרחב המחסנית של התהליך, ובמרחק של סגמנט אחד. פוסחו מקצה את. מרחב המחסנית של המטלה בצורה וירטואלית, וכך היא יכולה להעביר את מחסנית. המטלה בסביבת העבודה כשיש צורך בכך. לדוגמה, אס התהליך מאתחל את המטלה המשנית, ואחר כך יוצר מערך רב מימדי גדול מאוד (נניח, [1074,64] תווים), פאוסטחואר חייבת להיות מסוגלת להעביר את המחסנית המשנית בסביבת העבודה, כדי להגן עליה. מפני המטלה הראשית שעלולה לכתוב בצורה לא מכוונת בשטח המחסנית המשנית. 4 קבלת ידית אל המטלה הנוכחית או אל התהליך ככל שהתוכניות הופכות להיות יותר ויותר מורכבות, ייתכנו מקרים בהס חייבות התוכניות לקבל בצורה דינמית ידית אל מטלה הנוכחית או אל התהליך הנוכחי. פעולה. זו פשוטה למדי. באפשרות התוכניות לקרוא לפונקציה 4כ6זחזחסזז66)0 אר כדי לקבל בכל זמן את הידית המדומה של המטלה הנוכחית אד של התהליך הנוכחי, כפי שהם בתוכנית (ידית זו נקראת ידית מדומה, 056000-8800/5, מכיון שהערך שלה הינו היחיד בעל משמעות במטלה הנוכחית או בתהליך הנוכחי. כותבים פונקציות אלו כמו בהגדרה שלהלן ( 0 68 60 תפונת 2 (01) טפ 6 העטש 06 מנסוותט צריך לשים לב לכך שהידיות המדומות ששתי הפונקציות מחזירות הן חסרות משמעות. מחוץ לתהליך הנוכחי. כדי למסור את הידית של מטלה או של תהליך לתהליך אחר, חובה להשתמש בפונקציה 631150666!וקטם. כדי להבין יותר טוב את פעולת הפונקציות 0701636ח6זז66000 ו-00855זק)ח6זזנ0 61 התבונן בתוכנית )חפזזטס. שוס5, שנמצאת בתקליטור המצורף לספר זה (בתיקיה 16קבת)8006559285). התוכנית לחפזזטס. אוסח5 יוצרת מטלות, זו אחר זו, ומציגה. מידע אודות המטלות והתהליך. פרק 16: תהליכים ומטלות = 445 5 ניהול זמן העיבוד של המטלה כמו שניתן לדמיין, קביעת הומן הדרוש לתהליך כדי לבצע פעילות מסוימת בסביבה מרובת מטלות (חסוחהסזוצה! 63696זחד-10/0/). הרבה יותר קשה מאשר בסביבה של מטלה אחת טהסוחחסזושה= 69066זחד-6ו6ח/5). לדוגמה, עשויה להיות בתהליך מטלה כלשהי שעורכת חישוב של אלגוריתם מורכב בזמן שמטלות שפועלות בתהליכים. אחרים מתחרות בה לקבלת זמן המעבד. במקרה זה, ברור שתהליך החישוב יימשך זמן רב יותר מאשר במקרה שהיה פועל בעצמו, ללא תחרות. מכיון שתהליך זה יהיהה בדרך כלל בעדיפות נמוכה, הדבר ישפוע על משך הביצוע הכולל שלו, שיהיה שונה' מאוד מומן המעבד נטו. מכאן שצריך להשתמש בשיטה שונה לרישום זמן העיבוד שלל המטלה (ומן מעבד) בסביבה מרובת מטלות, לעומת שיטת הרישום בסביבה של מטלה אחת. עשית ואת בוודאי בעת שהשתמשת בפונקציה 606% לחישוב זמן העיבוד של התוכנית בסביבת העבודה 05. תוכניות מרובות מטלות חייבות להשתמש בפונקציה שבודקת את זמן הפעולה של כל. מטלה בנפרד, במקום השיטה הפשוטה שהזכרנו. כדי לבצע עיבוד מסוג וה משתמשים. ב-00065/% בפונקציה 65ו6907/0זד661. פונקציה זו מרכזת מידע על הומן של המטלה. שהוגדרה. משתמשים בפונקציה 6301/0065זח66/1 כמו בהגדרה זר ) 6010968491868 מססם 0מה) 05 84שצה: שת: 5011168 // ספות 8 ₪25 44שעת: שמ: השמש //‏ ,שאנלה10ם2םעסם1 מאדלם1. 80520 ₪5 84שעהם שמף השמש // 6ה1ל:1אמק1 תקלד מ מתסקפ פגת 44עמ: שמ: 6186 //‏ ,סמ1צנשהצשאמ1 מדצם ב ו ם! מתסקפ פמ 88שעתם מף שחצף // וע ספט1 מקד למ ו הפונקציה 7065ו6367זחד651 מקבלת את הפרמטרים שמפורטים בטבלה 16.5 טבלה 16.5: הפרמטרים שמקבלת הפונקציה 163610065 דו66. פרמטר תיאור 6פוחדה | ידית פתוחה שמגדירה את המטלה שעבורה מרכזים את זמן. העיבוד. עליך ליצור ידית זו עס קוד הגישה סואז סט פאפפהד 6וחודחס:630ז0ק| | מצביע למבנה מסוג 6116 11ז שמקבל את ומן יצירת המטלה. שופ | מצביע למבנה מסוג 10116= שמקבל את ומן היציאה. מהמטלה. אם עדיין לא יצאנו מהמטלה, התכולה של מבנה זה. אינה מוגדרת. 6 321חו/ו ומבוא ל-ספו פרמטר תיאור שחוודוטחזסאקן | מצביע למבנה מסוג 15116 שמקבל את כמות הומן שהמטלה. הופעלה בו במצב גרעין (1006/ 61061 6וחוד/6פטקו | מצביע למבנה מסוג 15116 שמקבל את כמות הומן שהמטלה הופעלה בו במצב משתמש (1066! ז056). כאשר הפונקציה מצליחה, הערך המוחזר שונה מאפס; אם הפונקציה נכשלת, הערך המוחזר הוא אפס. הפונקציה 63010065זחד661 משתמשת במבנה נתונים מסוג וד וז להצגת כל סוגי הומן. מבנים אלה מכילים שני ערכים בני 32 סיביות שמתחברים יחד כדי ליצור מונה בן 64 סיביות ביחידות ומן של 100 ננו-שניותת (ננו-שנייה - חלק מיליארד של שנייה). זמן יצירת המטלה וומן היציאה הם נקודות. זמן שבאות על ידי ביטוי במבנה 1161166 כפרק הזמן שעבר מאו אמצע הלילה של הראשון לינואר משנת 1601, בגריניץ'י אנגליה. ממשק התכנות 871 32חו) כולל מספר פונקציות שהיישום יכול להשתמש בהן כדי להפוך ערכים כאלה לתבניות זמן יותרר כלליות, מובנות וגס שימושיות. משכי הזמן של מצב גרעין המטלה ושל מצב המשתמש במטלה נמדדים בננו-שניות. לדוגמה, אם מטלה נמצאת למשך שנייה אחת במצב גרעין, הפונקציה 63070₪065זחד6. ממלאת את מבנה 115116 שגודלו 64 סיביות ומוגדר על ידי הפרמטר פוחוד1סחז6אקן בערך עשרה מיליון, שהינו מספר יחידות הזמן של 100 ננו-שניייה שיש בשנייה אחת. 6 ניהול זמן העיבוד במערכת של ריבוי מטלות למדת בסעיף קודם שבאפשרות התוכניות להשתמש בפונקציה 016070065דו₪6 כדר לדעת את ומן הביצוע של כל מטלה. לפעמים נדרש בתוכניות מידע מפורט על ומן הביצוע של מטלות רבות בתהליך. לדוגמה, אנו וקוקים למידע וה כדי ללמוד על פעולת. המערכת ולדעת אילו מטלות בתהליך איטיות, ואם יש מטלה אחת או יותר שגורמת. להאטה בפעולת התהליך. במקרים כאלה, התוכניות יכולות להשתמש בפונקציה 66101060951/0065 כדי להשיג מידע זמן אודות התהליך המופעל. משתמשים בפונקציה 065ו6640/060557 בתוכניות, כמו שרואים בהגדרה שלהלן 0 וה 05 5פמססעם שמף 420018168 // ,88משסעפת תסואתת 8 ₪485 658ססצם שֶ6 תשמא // ,6מ1הס1מ84פסם1 ממצצשנצטק1 8 48 688סספם סוט מממא // אפ מצד :דפ 1 ם1 שתשספ פמ 658ססצק 606 6166 //‏ ,6ת171שמפשאם1 ממצצשנצטק1 ו ם] שהשקפ פמ 8פשמסעם שֶ% שחגף // "ו ששפטק1 15 / פרק 16: תהליכים ומטלות = 447 הפונקציה 66401060557/065 מקבלת את הפרמטרים שמפורטים בטבלה 16.5 כאשר הפונקציה מצליחה, הערך המוחור שונה מאפס; אם הפונקציה נכשלת, הערך המוחזר הואא אפס. הפונקציה 065חו060957ו6610 משתמשת במבנה נתונים מסוג וד וז להצגת כל סוגי הומן. מבנים אלה מכילים שני ערכים בני 32 סיביות שמתחברים יחד כדי ליצור מונה בן 64 סיביות של 100 ננו-שניות יחידות זמן. זמן יצירת התהליך וזמן היציאה הס נקודות זמן שבאות על ידי ביטוי במבנה שאזדפ ו ככמות הומן שעבר מאז אמצע הלילה של ה-1 בינואר שנת 1601, בגריניץ' באנגליה ממשק 1 32חו/ כולל מספר פונקציות שהיישום יכול לנצל, כדי להפוך ערכים כאלה. לתבניות יותר כלליות, מובנות ושימושיות. הומנים של מצב גרעין התהליך ומצב המשתמש הס משכי ומן שנמדדים בננו-שניות. לדוגמה, אס תהליך נמצא שנייה אחת במצב גרעין, הפונקציה 010106995700065 ממלאת את המבנה 115115 שמוגדר על ידי הפרמטר 6וחודופחזאכ! בעל 64 הסיביות. בערך של עשרה מיליון, שהוא מספר יחידות 100 ננו-שנייה שיש בשנייה אחת. התקליטור המצורף. לספר מכיל את התוכנית 1065 זקחד שוסו5 (בתיקיה 5 שפותחת דרת מטלות ומחזירה את ומן העיבוד של כל אחת מהן. היא מחזירה גם את זמן העיבוד של התוכנית כולה. 7 להבין טוב יותר את הפונקציה 5-ו" ככל שעובדים עם מטלות, פוגשים במצבים שבהם מתרחשיס אירועים (כמו הקשות במקשים, וכדומה), אשר מטופלים על ידי המטלה הראשית שנמצאת בפונקציה 6 שמעבדת את הודעות התוכנית. עם ואת, כשיש מטלת בן מושחית, השליטה. במידע ההודעות הופך להיות מורכב יותר. מכיון שהמטלה כבר מושהית (מסיבה כלשהי), פונקציית ההודעה של המטלה מחזיקה את ההודעות האלו עבור המטלה בתור ההודעות של המטלה. כדי לדעת את תכולת תור ההודעות לאחר שהמטלה המושהית מופעלת מחדש, 4 התוכניות ‏ יכולה לנצל ‏ את שירותי הפונקציה פונקציה זו מחזירה דגלים שמציינים את סוגי ההודעות שנמצאות. בתור ההודעות של המטלה הקוראת לה. את הפונקציה 660006055 כותבים. בתוכנית כך ; (51885 עואדט) פגו 8 5סגופוו0 065 פתסוום הפרמטר 5טָ מגדיר את דגלי המצב אשר מציינים את סוג ההודעות שהפונקציה צריכה לבדוק. פרמטר וה יכול להיות צירוף של הערכים שמפורטים בטבלה 16.6 הערך המוחור במילת הסדר הגבוהה מציין את סוגי ההודעות שנמצאות כרגע בתור. הערך של מילת הסדר הנמוך מציין את סוגי ההודעות ש-פאוסשחו// הוסיפה לתור ועדיין נמצאות בו מאז הקריאה האחרונה לפונקציה 006515005נו6600, 6100655306 אוו לפונקציה 600005536 8 הכהו ומבוא ל-ספו נוכחות הדגל 05 בערך המוחזר אינה מבטיחה שקריאה עוקבת לפונקציה 6 א 661//095306 תחיר הודעה. 661//655906 ו-606/655806 מבצעות. סינון פנימי שיכול לגרום לתוכנית לטפל בהודעה באופן פנימי. מכיון שכך, עליך לחשוב על הערך המוחזר מ-060(0906513005 רק כרמז לתוכנית לקרוא לאחת משתי הפונקציות, 661//695306 אאו 6081095906 טבלה 16.6: הערכים האפשריים של הדגלים שהפרמטר 81885 יכול לקבל. עוך פירוש פהופטם ווה .5 | קלט, הפואנד ואצו, דאזהק זאו צואדסה ווצ, או הודעה. ששוגרה נמצאים בתור. דטקאז11א, 05 | יש הודעה כלשהי בתור. ץפאדסו 05 | הודעת =אדס1 ואצ נמצאת בתור. דטקא1 05 | הודעת קלט נמצאת בתור. פא 5 | הודעת קט ואצ ספא או, קטץ5 5158 הוא, אר אצו0סצ515%5 וצ נמצאת בתור. שפטסוי 05 | הודעת 08א0056 וי או הודעת לחצן עכבר (מטאסדדטפ ואו, אעוססאסדדטפה או, וכדומה) נמצאת בתור. אסדדט9ס5טסו .05 | הודעת לחצן עכבר (סטווסדדטם ואו אשוססאסדד8ה. אישו וכדומה) נמצאת בתור. 0056096 05 | הודעת פס!פ5 טסו וא/ו נמצאת בתור. דווזהק 5 | הודעת דאזאק וא/ו נמצאת בתור. 70516556 .05 | הודעה ששוגרה (אחרת מאלו שכבר מנינו ברשימה). נמצאת בתור. 58 05 | הודעה שנשלחה על ידי מטלה אחרת או על ידי יישום. אחר נמצאת בתור. הפאזד 05 | הודעת הפואזד וא/ו נמצאת בתור. פרק 16: תהליכים ומטלות = 449 8 עיבוד חריגים שלא טופלו - הח פַחז!חבו] 5 וא מערכת ההפעלה לבחו ממקמת פונקציה ברמה עליונה לעיבוד חריגים (16/6-פטד 19066 ח0ק569) בתחילת כל מטלה ותהליך. המטרה היא לוודא שתוכניות מגיבות. בצורה נכונה לחריגים שאינם מטופלים (למעשה, תוכניות אלו נסגרות מבלי להשפוע. באופן שלילי על תהליכיס אחרים). לפעמים, *יתכן שתרצה ללכוד בשיגרה מיוחדת את. כל החריגים שאינם מטופלים; שיגרה זו תשמור את התוכנית/התהליך של המשתמש. בקובץ שיקום ₪6 ע86006). הפונקציה ז800ח00ק5610003061600%05 מאפשרת ליישום לבטל את הפונקציה ברמה עליונה לעיבוד בחריגים ש- 32ח/ מיקמה אותה בראש כל מטלה או תהליך. אחרי הקריאה לפונקציה /ח00ק0306/605%65ח560, או מתרחשת חריגה בתהליך. ש-פווסחו/ אינה מנפה אותו משגיאות כרגע, והחריגה אינה מטופלת על ידי מסנך החריגים של 32ח, אז מסנן וה קורא לפונקציית מסנן החריגה 09 ה00ק6 חסנטחט). שמוגדרת. על ידי הפרמטר זס)וחחס0קס0אפ!פשסקסדקו. את הפונקציה 0 ס:036/600651ח5 כותבים בתוכניות, כמו בהגדרה שלהלן. 045001 61ה8מתטו50 המת (11%68תמס1מש6סאמ61עםמקמפק1 תמפמנק א0:דקמסאם נפטם. אסנספמסאם מפטמ1 פסצפג 10 הפרמטר ז9ח00ק6//5%65.קסדפ! מספק את הכתובת של פונקציית מסנן החריגהה ברמה עליונה ש-0065ח/ קוראת לה בכל פעם שהפונקציה 81/06 חס: 6190060 חחח מקבלת שליטה, ו-005חו/ אינה מנפה את התהליך משגיאות. כדי להגדיר עיבוד בנוהל ברירת המחדל על ידי הפונקציה 0005/06ק6666460חבחחט, ערך הפרמטר זו חסוק%66ס/5%6 |קסדק! צריך לחיות -014 התחביר של פונקציית המסנן מתאים לוה של 808ח000ק60569וחהחח. פונקציית. המסנן מקבלת פרמטר אחד מסוג 701885 א110ק178%65 ומחזירה ערך מסוג 6 פונקציית המסנן צריכה להחזיר אחד מהערכים שמפורטים בטבלה 16.7. הפונקציה זסשו/החסוק6/00509ח8החש561 מחצירה את הכתובת של מסנן החריגה הקודמת שקשור לפונקציה. אס הערך המוחזר הוא 1טא, פירוש הדבר שאין מסנן חריגה נוכחי ברמה עליונה. השימוש ב-0008/0091ק806/605%65חח5610 מחליף את מסנך החריגה ברמה העליונה עבור כל המטלות הקיימות ואלו שיווצרו אחר כך בתהליך. הקורא. התוכנית מפעילה את פונקציית החריגה שמוגדרת על ידי הפרמטר וו סז קס6אס!פש וקסדק! בהקשר של המטלה שגרמה לשגיאה. מכיון שפונקצייתת החריגה מופעלת בתוך מטלה, יש אפשרות שתשפיע על פונקציות לעיבוד בחריגיםם והיכולת שלהן להתאושש מחריגים מסוימים, כמו מחסנית שאינה תקפה. 0 3271חו/ו ומבוא ל-ספו טבלה 16.7: הערכים המוחורים האפשריים של פונקציית המסנך עיך פירוש וסואו דטספ אש אסזזקס0 אש | מוחזר מ הח ומפעיל את הפונקציה המתאימה לעיבוד החריגה. ערך זה בדרך כלל גורס לסיום. התהלוך. אדא סטאאנדאסס. סקסא | מוחזר מ-פז חס ק616066ההחחט. וממשיך את ההפעלה מהנקודה של החריגה. שים לב שפונקציית המסנן חופשית לשנות את מצב ההמשך על ידי שינוי מידע החריגה שמסופק על ידי הפרמטר 201885 7057110 ) שלה. 5580 שטאזדווסס. אסזק%05= | ממשיך בהפעלה הרגילה של 160 כלומר, מקבל את משמעות הדגלים 56481707%06, אר קורא לתיבת ההודעה הנשלפת העוסקת. בשגיאת היישום (זסזזש חסטב6קקה). כדי להבין היטב את מהלך העיבוד של הפונקציה ז0008/09ק6605%60ח3חח50%0, התבונן בתוכנית חסוק69א= 616ח₪8, שבתקליטור המצורף לספר זה. תוכנית זו יוצרת מסנן לחריגות שאינן מטופלות, ואחר כך היא מציגה איך היא לוכדת חריגים. מטופלים בפונקציות עיבוד בחריגים, וכיצד היא לוכדת באמצעות המסנן שהיא יצרה. את החריגים שאינם מטופלים. הפונקציות 6905600008 חח טסיר ו-106ק0 הצר של התוכנית חסווק5%66 83616 מכילות את הקוד שמבצע את העיבוד בפועל. 9 סיום מטלות ככל שהתוכניות הופכות להיות יותר מורכבות, ייתכנו מקרים שבהס מטלה נכשלת, ואינה יכולה לסיים את פעולתה בצורה נורמלית. למדת שהתוכניות חייבות במקרה זה להפסיק, או להפסיק ומנית, כל מטלה שנכשלה, כדי שמערכת ההפעלה תפסיק לתזמן. אותה לביצוע ולא תקצה לה זמן מעבד. תוכנית שנכשלת ואינה יכולה לסיים את פעולתה בצורה תקינה, גם לא תיסגר. על כן, התוכנית חייבת להורות למערכת. ההפעלה לסייים את המטלה במקומה. כדי לעשות ואת, צריך לשלב בתוכניות השונות. את הפונקציה 626וחד6)החווחזפד. את הפונקציה 620וח67)החווחזפד כותבים כמו בהגדרה שלהלן. מע 0 8פגט שמש 50 16שממת // 7 // 6818 0066 805 96 פרק 16: תהליכים ומטלות ‏ 451 הפרמטר 6פסזחדח מוהה את המטלה שצריך לסיים. תחת ד פאוסחו/, הידית חייבת. להיות בעלת גישה =זאזויופד סאפמאד. הפרמטר 8000066 מגדיר את קוד היציאה עבור המטלה. צריך להשתמש בפונקציה 0936ד6619/60060 לקבלת ערך קוד היציאה של המטלה. אם הפונקציה מצליחה, הערך המוחזר שונה מאפס. אם הפונקציה נכשלת, הערך המוחזר הוא אפס. התוכניות משתמשות ב-630זח67)החווחזפד כדי לגרו למטלה לצאת ₪00). כאשר משתמשים ב-630זח67)החווחזפד כדי לגרו למטלה לצאת, למטלת המטרה אין כלל סיכוי להפעיל קוד כלשהו של המשתמש, והתוכנית אינה מקצה מחדש את המחסנית. ההתחלתית של המטלה. התוכנית אינה מודיעה לתיקיות הקישור הדינמי (15ו0) שמוצמדות למטלה שהמטלה מסתיימת. הפונקציה 6ג6זחפזחוחוזסד היא פונקציה בעלת פוטנציאל סיכון, ולכן עליך להשתמש. בה רק במקרים הקשים ביותר. עליך לקרוא ל-686זח4167חווחזטד רק אם אתה יודע בדיוק מה מבצעת מטלת המטרה, ויש לך שליטה על כל הקוד שמטלת המטרה עשויה. להפעיל בזמן הסיום. לדוגמה, 636זח67)החווחזפד יכולה לגרו לבעיות הבאות % אס מטלת המטרה בעלת קטע קוד קריטי, פווסטח!וו אינה משחררת את הקטע הוה * אם מטלת המטרה מפעילה קריאות גרעין מסוימות בשעת הקריאה ל-636ז80670ח/וח9 מפסיקה אותה, מצב הגרעין שקשור לעיבוד המטלה עלול. להיפגע. %+ אם מטלת המטרה מנהלת את המצב הגלובלי של תיקיית קישור דינמי משותפת, סח יכולה להרוס את התיקיה האו וגם להשפיע על תיקיות קישור דינמי אחרות שבשימוש. מטלה יכולה להגן על עצמה מפני 636זחד6והחווחזד על ידי שליטה בגישה לידיות שלה. לידית המטלה שמוחורת על ידי הפונקציות 00316701630 ו-0163190106055. יש לה. גישה מסוג פדאאזויוחפד סאפחווד, לכן כל תוכנית קוראת שמחויקה את אחת הידיות. האלו יכולה לסיים את המטלה. אם מטלת המטרה היתה המטלה האחרונה של התהליך בשעה שהתוכנית קראה לפונקציה 0פזחדפז3חווחז6ד, התוכנית מסיימת גם: את התהליך של המטלה. המצב של אובייקט המטלה הופך להיות מסומן, והוא' משחרר מטלות אחרות כלשהן שהמתינו למטלה שתסתיים. מצב סיום המטלה משתנה. מ-011/5. .51111 לערך של הפרמטר 05000006. סיום מטלה אינו מסיר בהכרח את אובייקט המטלה מהמערכת. 1000026 מוחקת. אובייקט מטלה כאשר התוכנית סוגרת את הידית האחרונה של המטלה. 2 כו ומבוא ל-ספו כדי להבין יותר טוב את העיבוד שמבצעת הפונקציה 630וח67)החווחזפד, התבונך בתוכנית 6365ז0ד פוחמא, ‏ שנמצאת בתקליטור המצורף לספר וה (בתיקיה 5.. תוכנית ו מאפשרת למשתמש ליצור מטלה, ואחר כך להשהות אותה (הקש על צירוף המקשים 5+), להפעיל את המטלה מחדש (הקש 8+1%) או לסיים. את המטלה (הקש %+6/א). התוכנית נמנעת מלעסוק בעניינים הקשורים בסיום מטלה, בכך שהמטלה אינה מבצעת דבר, ורק מאפשרת למשתמש לגשת למטלה האחרונה. שנוצרה. הפונקציות 66זק30סוחד ו-)סזקנחא של התוכנית 1076865 קוחמ מכילות. את הקוד שמבצע את העיבוד הנדרש. 0 הביעת זיה או תהליך למדת בסעיף 16.4 שפעמים רבות דרוש לתוכניות מזהה ומני, או ידית מדומה (8066ו-5960ל). אל המטלה הנוכחית או אל התהליך הנוכחי. לפעמים התוכניותת דורשות ידית קבועה או ערך ייחודי אחר כדי לוהות מטלה או תהליך במערכת. ממשק זקה 032 מספק שתי פונקציות, 96010 ו 016 שמאפשרות לתוכניות להשיג ערך 0/0 מיוחד שמערכת ההפעלה משתמשת בו כדי לוהות מטלה או תהליך בצורה פנימית. כותבים את הפונקציות האלו בתוכניות, כמור בהגדרה שלהלן. (ם1) של מטלה (0614) - 68018עמ5ה0עעט0 065 ספסאום 5086 0650 סתסאום הפונקציה 160017763614צ6610 מחזירה את מוהה המטלה 16900660 600זד) של המטלה הקוראת, שהוא למעשה הערך המוחזר של המטלה הקוראת. כל זמן שהמטלה. פועלת ועד לסיומה, מוהה המטלה מאפשר זיהוי שלה במערכת באופן חד-ערכי. באופן דומה, הפונקציה 1070665516ח6ז6600 מחזירה את מזהה התהליך פפפססז ז06ח106) של התהליך הקורא. פונקציה זו אינה מקבלת פרמטרים. הערך המוחזר הוא מוהה התהליך של התהליך הקורא. כל עוד התהליך פועל ועד שהוא מסתיים, מוהה התהליך מאפשר את והויו במערכת באופן חד-ערכי. התוכנית ‏ 6חפוזטסשוסח5 שהוצגה בסעיף 16.4 משתמשת בשתי הפונקציות 6010070 0/0010 % הערה: בדומה לידית, המילה הכפולה סאסוום שמוחורת על ידי הפונקציות 660011001070605510 או 69010זחד) 0000 מכילה. ערך שמאפשר ויהוי חד-ערכי של המטלה או של התהליך על ידי מערכת ההפעלה. אל תבלבל בין הערכים 10 100955 אוו 10 696זחד. לבין הידיות המדומות שמוחזרות על ידי 6010706055זנ00 ו פרק 16: תהליכים ומטלות = 453 1 תזמון מטלות על ידי מערכת ההפעלה מערכת ההפעלה 32ח// היא מערכת הפעלה מרובת מטלות (9006זחד-0וט/א). מערכת. ההפעלה 32חו//ו יכולה לטפל במספר גדול של מטלות עוקבות או תהליכים, הפועלים. בהדדיות זה עם זה. כמו שהסברנו כבר, אנו רואים שמערכת ההפעלה מטפלת במספר מטלות יותר מהר, או בצורה אחרת מאשר באחרות. לדוגמה, מערכת ההפעלה ?וא נוטה לקבוע עדיפות גבוהה יותר למטלות שבתהליך הנוכחי, מאשר לאלו שבתהליכים. המופעלים ברקע. מערכת ההפעלה 32חו/ מכניסה כל מטלה שמבקשת ומן מעבד (כלומר, כל המטלות. הפעילות) לרשיימה 150), שהיא למעשה מבנה תור (פטפוס), על פי רמת העדיפות שיש. לה. בסעיף 16.22 תמצא הסבר של רמות העדיפות (1646/5 עזסוזק). כאשר המערכת. מקצה ומן מעבד למטלה, היא מתייחסת לכל המטלות בעלות אותה עדיפות כשוות. במלים אחרות, המערכת מקצה זמן מעבד למטלה הראשונה שבתור הנושאת את רמת. העדיפות 31, ואחרי שפרק הזמן של המטלה הזו מסתיים, המערכת מקצה זמן מעבד למטלה הבאה בתור, בעלת עדיפות 31. לכן, חשוב לשים לב לכך שאם יש לפחות מטלה. אחת בעדיפות 31 הצורכת את זמן המעבד ברציפות, ללא הפסקה, היא אינה מאפשרת. למטלות בעלות עדיפויות נמוכות יותר לפעול. תוכניתנים קוראים לתנאי עדיפות זה הרעבה (חסו3ו5). הרעבה מתרחשת, כאשר מספר מטלות מקבלות הרבה מזמן המעבד, ואינן מאפשרות למטלה אחרת כלשהי לפעול. כאשר המערכת משלימה את ביצוע כל המטלות בעלות העדיפות 31, היא מתחילה להקצות זמן מעבד למטלות בעלות עדיפות 30. כאשר המערכת מסיימת לבצע את כל' המטלות בעלות עדיפות 30, היא מתחילה להקצות זמן למטלות בעלות עדיפות 29, וכךך הלאה. על כן, יכול להיות שנראה כאילו המטלות בעלות עדיפות נמוכח לעולם אינך מופעלות במערכת ואת. כמו שיתברר לנו בהמשך, אפילו המטלות בעלות העדיפות. הגבוהה ביותר אינן צורכות זמן מעבד ברציפות, וכך הן משחררות אותו לעיבוד של מטלות בעלות עדיפות נמוכה יותר. לבסוף, צריך לדעת שכאשר מטלה בעלת עדיפות נמוכה מופעלת - ואפילו אם היא נמצאת באמצע פרק הזמן שהוקצה לה - והמערכת מחליטה שמטלה בעלת עדיפות. גבוהה ממתינה להפעלה, המערכת מפסיקה מיד את הפעלת המטלה בעלת העדיפות. הנמוכה ומתחילות בהפעלת המטלה בעלת העדיפות הגבוהה. המטלה בעלת העדיפות. הגבוהה תמיד מקדימה את המטלה בעלת העדיפות הנמוכה, ללא תלות בפעולה של המטלה בעלת העדיפות הנמוכה, או באיוה מצב הפעלה היא נמצאת. שים לב. מיקרוסופט שומרת לעצמה את הזכות לשנות את האלגוריתם שמערכות הפעלה. מבוטסות 2חוו משתמשות בו לניהול תור המטלות. במערכות ההפעלה 9% פאוסנחואו, 3.51 ד פאוסטחו/, ו- 4.0 דא פאוסטחווו משובצות גרסאות שונות. של אלגוריתם לניהול תור המטלות. עליך להכיר את שיטת עדיפות המטלות 64 3271חו/ו ומבוא ל-ספו ואיך צריך להשתמש בה כראוי. עם ואת, אל תבנה את התוכניות שלך על פי שיטת ניהול עדיפויות כלשהי של מערכת הפעלה מסוימת, מכיון שמיקרוסופט. עשויה לשנות את אלגוריתם ניהול תורי העדיפויות בגרסאות עתידיות של אותה מערכת הפעלה. 2 רמות עדיפות (6!5ע6.] עפויוסוזש) בסעיף קודם למדת שמערכת ההפעלה ?חא מנהלת את תורי כל המטלות הפעילות. ומתומנת את הפעלתן, על פי רמת העדיפות (/19%6 עחסוז) הנוכחית שיש להן. תחום. רמות העדיפות הוא מ-0 (העדיפות הנמוכה ביותר) עד 31 (העדיפות הגבוהה ביותר). מערכת ההפעלה מקצה את רמת העדיפות "אפס" למטלת מערכת מיוחדת הקרויה מטלת דף אפס (636זחד 50 0ז26). מטלת דף אפס אחראית לאיפוס דפים חופשיים. כלשהם שבמערכת, כאשר אין מטלות כלשהן שחייבות לבצע עבודה כלשהי. אין מטלה אחרת כלשהי שיכולה להיות בעלת רמת עדיפות אפס, מלבד מטלה מיוחדת זור כאשר יוצרים מטלות, לא משתמשים במספרים כדי להקצות להן רמות עדיפות. במקום ואת, המערכת משתמשת בהליך בן שני צעדים כדי לקבוע את רמת העדיפות. של המטלה. הצעד הראשון הוא להקצות מחלקת עדיפות (0855 /טחסזק) לתהליך מחלקת העדיפות של התהליך אומרת למערכת איזו עדיפות התהליך מבקש בהשוואה לתהליכים מופעלים אחרים. בסעיף הבא תמצא הסבר נוסף אודות מחלקות עדיפות. הצעד השני הוא להקצות רמת עדיפות יחסית לכל מטלה ששייכת לתהליך. כאשר יוצרים לראשונה מטלה בתהליך, רמת העדיפות שלה היא כמו זו של של התהליך עצמו. בסעיף 16.25 תלמד להשתמש ב- 801 32 כדי לשנות את רמת העדיפות היחסית של מטלה. 3 מחלקות העדיפות של פששסחזצ (6!35565 /םוזס1זוק) כמו שהוסבר בסעיף קודם, 5ס0ח/ משתמשת בהליך בן שני צעדים כדי לקבוע את עדיפות המטלה. הצעד הראשון הוא לקבוע את מחלקת העדיפות של התהליך. ַחו+ תומכת בארבע מחלקות עדיפות שונות: המתנה (60!6), רגילה (וגוחזסא), גבוהה (חִָ), זמן אמת (06חו6310ה). טבלה 16.8 מפרטת את מחלקות העדיפות. טבלה 16.8: מחלקות העדיפות האפשריות. עדיפות פירוש 5 +דאס1ק 116% | תהליך שמבצע משימות בומן קריטי, שמערכת. ההפעלה חייבת להפעילן מיד, כדי שהתהליך. רמת עדיפות גבוהה. יפעל בצורה נכונה. מטלות תהליך בעל עדיפות. פרק 16: תהליכים ומטלות = 455 עדיפות סק 16 רמת עדיפות גבוהה. סק וד רמת עדיפות בהמתנה. דה סנק סא רמת עדיפות רגילהה סק אדפ רמת עדיפות ומן-אמת. פירוש. מחלקה גבוחה קודמות למטלות של תהליכים. בעלי מחלקת עדיפות רגילה או המתנה. דוגמה. לכך היא רשימת המשימות (81: 135%) של. 05 שחייבת להגיב במהירות כאשר המשתמש קורא לה, ללא תלות בעומס על מערכת. ההפעלה. צריך לנהוג בוהירות גדולה כאשר משתמשים במחלקת עדיפות גבוהה, מכיון שיישוס בעל מחלקת עדיפות גבוהה יכול. להשתמש כמעט בכל זמן המעבד ולא להרפות. ממנו לטובת משימות אחרות. רמת העדיפות של תהליך בעל 61455 ידזהסזחק ₪16 היא 13 תהליך שהמטלות שלו מופעלות רק כאשר המערכת נמצאת בהמתנה, ומטלות של תהלוך. אחר שמופעל במחלקת עדיפות יותר גבוהה. הקדימו אותן. לדוגמה, שומר מסך. תהליכי בן יורשים את מחלקת עדיפות ההמתנה. רמת. העדיפות של 455 צדזהס1חק = סז היא 6> תהליך נורמלי, ללא דרישות מיוחדות כלשהן. לתזמון. עדיפות תהליך בעל. 5 +10 .ואס היא 8. תהליך בעל העדיפות הגבוהה ביותר האפשרית. המטלות של תהליך בעל מחלקת עדיפות זמן אמת מקדימות את המטלות של כל שאר התהליכים, כולל תהליכי מערכת ההפעלה. שמבצעים משימות חשובות. לדוגמה, תהליך זמן אמת אשר מופעל לאורך זמן ארוך מדי עלול לגרום לכך שמטמון הדיסק לא יתרוקן, או לגרום לכך שהעכבר לא יגיב. רמת העדיפות של. 5 | דהסזהק שואד ואה היא 24. דבר שיכול לעזור לך בעניין זה הוא הבנה טובה של השפעת רמות המחלקות השונות. לדוגמה, צריך להשתמש ב-61455 דןהס1חק 16ו! רק כאשר יש צורך בכך. התהליך. הנפוץ. ביותר שמשתמש ב-₪1455 צדוהסזחק 160 הוא הסייר של 5ס6חאר (זסוק5 פאוסטחואו).. אפילו אם מרבית מטלות שולחן העבודה (065690) נרדמות. (9/6005) במהלך הפעלה רגילה, המשתמשיס מצפים מיישוס זה להגיב כאשר ניגשים. אליו. לכן, פאוסטחו/ו נותנת למטלות הסייר את העדיפות הגבוהה, אשר מקדימה כמעט. כל מטלה אחרת כאשר המשתמש בוחר באפשרות כלשהי של שולחן העבודה. אם יוצרים תוכניות שמשתמשות גם כן ב-0455 צדנחס1ק 16%ו, יכול להיות ששולחן העבודה לא יגיב כנדרש, ואפילו יכול להיות ש-5וס0חו תחסום אותור 6 32071חו/ו ומבוא ל-ספו בדרך כלל, תוכניות מסוג יישומי בקרה תפעלנה ברמה 0455 צדנהסנחק ₪ ופז. לדוגמה, כאשר תכתוב יישום שמציג באופן מחזורי את כמות הזיכרון החופשי שבמערכת. מכיון שלא תרצה שהיישום יפריע לביצוע משימות קריטיות אחרות התלויות בומן, עליך לקבוע את מחלקת התהליך המחזורי ל-0855. צדנהס81ק > ופד וס6חוו מקצה באופן אוטומטי את ₪455 +זזהסזחק ואוומסא לכל תהליך שאינך מקצה לו במפורש ערך אחר, ורצוי שהתוכניות שלך תפעלנה בדרך כלל ברמה זו. שים. לב לכך, שכאשר המשתמש מביא תהליך לקידמה (6חטסזזטס?),. מערכת ההפעלה. מעלה את העדיפות היחסית שלו, כדי לספק מהירות פעולה טובה יותר. לדוגמה, מערכת 9% 5ווסחו מוסיפה אחד למונה רמת העדיפות של תהליך הקידמה. בכלל, צריך להימנע כמעט תמיד מהשימוש ב-455 ד1הס1קק 6וו1דוסה בתוכניות. רגילות, מכיון שעדיפות זמן אמת היא עדיפות גבוהה מאוד - ולמעשה, היא אפילו גבוהה מרוב מטלות הניהול של מערכת ההפעלה. המטלות שבמערכת אשר שולטות. בעכבר והמקלדת, בעבודת דיסק ברקע, ואפילו המלכודת /001+816+06 - כולן מופעלות. בעדיפות נמוכה יותר מעדיפות זמן אמת. לתוכניות אשר משתמשות בעדיפות זמן אמת יש פעמים רבות השפעות משמעותיות על יישומי המשתמש. 6 הער8: המונח קידמה (חטספָסוס?) מקובל במחשבים המסוגלים לבצע. יותר ממשימה אחת בו-ומנית. הקידמה היא הסביבה שבה המשתמש עצמו פעיל ביישום, בשעה שמשימות אחרות, כגון הדפסת מסמך, העתקת קבצים או שידור תקשורת - פועלות ברקע. 6 4 שינוי מחלקות העדיפות של התהליך למדת בסעיף קודם שמערכת ההפעלה לבחו מקצה באופן אוטומטי את העדיפות הנורמלית לכל תהליך חדש. עם ואת, פעמים רבות עלינו לשנות בתוכניות את מחלקת. העדיפות הנוכחית של התהליך. אפשר להשתמש בפונקציות 61000070/0855 ו-0089/מ₪1ז0ק501 כדי לנהל את מחלקת העדיפות של התהליך. הפונקציה 697 מחזירה את מחלקת העדיפות עבור התהליך המוגדר. את הפונקציה 5 כותבים בתוכניות כמו בהגדרה שלהלן 2 (885ססצפה ממסואתא) 6701885 866951081 סהסוום הידית 06955זח מזהה את התהליך. תחת דא וווס6חוא, הידית 0106955 חייבת להיות. בעלת זכות גישה אסנזהואהס<או1 אהפט) 00855חק. אס הפונקציה 0006/0855 מצליחה, הערך המוחזר הוא מחלקת העדיפות של התהליך המוגדר; אם הפונקציה נכשלת, הערך המוחזר הוא אפס. מחלקת העדיפות של התהליך המוגדר יכולה לקבל את אחת מרמות העדיפות המפורטות בטבלה 16.8 פרק 16: תהליכים ומטלות = 457 הפונקציה 5619011005 יכולה לקבוע את מחלקת העדיפות של התהליך המוגדר. מחלקת העדיפות, יחד עם ערך העדיפות של כל מטלת תהליך, קובעים את רמת העדיפות הבסיסית של כל מטלה. כותבים את פונקציה 56190011/0855 בתוכניות כמו. בהגדרה שלהלן. | 021021601888 565 מ00ם תש 0 18בתמת // הנאת שטנפצ 01885 עמ1פס1פק // סו לו כמו הפונקציה 66/01006/0855, גם הידית 5פפססזקח מוהה את התהליך. תחת זו 5סשחו/, | הידית | 5פסססזקה = חייבת = להיות | בעלת | זכות | גישה אסנדאויוהסא 56 55פססהק. הפרמטר 1/0555ז0ו6/1 מגדיר את מחלקת העדיפות. של התהליך. הפרמטר 0/00006/085. יכול לקבל ערך כלשהו מאלה שמפורטים בטבלה 16.8. כאשר הפונקציה 0855/ז561900 מצליחה, הערך המוחזר שונה מאפס; אס הפונקציה נכשלת, הערך המוחזר הוא אפס. לכל מטלה יש רמת עדיפות בסיסית, אשר נקבעת על ידי פוס0חו//ו בהתבסס על ערך. העדיפות של המטלה ועל מחלקת העדיפות של תהליך המטלה. המערכת משתמשת. ברמת העדיפות הבסיסית של כל המטלות שאפשר להפעיל, כדי לקבוע איוו מטלה מקבלת את הקצאת הזמן הבאה של המעבד. הפונקציה /6307100118זח561 מאפשרת. לקבוע את רמת העדיפות הבסיסית של מטלה באופן יחסי למחלקת עדיפות התהליך. שהיא שייכת לו. סעיף 16.25 משתמש בפונקציה /6וז6300100זחז560 כדי לקבוע את. רמת העדיפות של המטלה. בתקליטור המצורף לספר וה תמצא את התוכנית /זוזסוזק 56% 66% (בתיקיה. 5. תוכנית זו מאפשרת למשתמש לבחור את מחלקת העדיפות של התהליך. לאחר כל בחירה, התהליך יבצע פונקציה הצורכת זמן מעבד ווציג את תוצאות הפונקציה יחד עם מחלקת העדיפות המוחצרת על ידי מערכת ההפעלה. 5 קביעת העדיפות היחסית של התהליך למדת ש-28ו00חוו קובעת את רמת עדיפות המטלה בהתבסס על מחלקת העדיפות של התהליך שהיא שייכת לו ועל רמת העדיפות של המטלה. בסעיף 16.24 למדת להשתמש. בפונקציה 56/01₪0110/0855 כדי לשנות את מחלקת העדיפות של התהליך. כדי לשנות. את רמת העדיפות של מטלות בתהליך, צריך להשתמש בפונקציה /9300100116זחד/5, אשר קובעת את ערך העדיפות של המטלה המוגדרת. ערך זה, יחד עם מחלקת העדיפות של התהליך שהמטלה שייכת לו, קובעים את רמת העדיפות הבסיסית של המטלה. משתמשים בפונקציה /וז0ק30סזחדו5 כפי שמוצג בהגדרה שלהלן 8 3201חו ומבוא ל-0פו )288021091 ה3607 מססם מנסאת שמש 50 16שממת // ו 1 ע16פס1צם 684פמ6 // ע51ס1פעה 486 / הפרמטר 6ג6זחדח מזהה את המטלה אשר הפונקציה הולכת לקבוע את ערך העדיפות. שלה. | תחת זא פסחו/ו, = הידית | חייבת | להיות | בעלת ‏ זכות ‏ גישה אסנדאווהס?א1 ד55 סאפחהד. הפרמטר עשחסווקה מגדיר את ערך העדיפות של המטלה. פרמטר זה יכול לקבל את אחד הערכים שמפורטים בטבלה 16.9 כאשר הפונקציה /630706זתד561 מצליחה, הערך המוחור שונה מאפס; אם הפונקציה נכשלת, הערך המוחור הוא אפס. למדת שלכל מטלה יש רמת עדיפות בסיסית, ערך עדיפות של המטלה ומחלקת העדיפות שנקבעה לתהליך. המערכת. משתמשת ברמת העדיפות הבסיסית של כל המטלות שאפשר להפעיל, כדי לקבוע אזר מטלה מקבלת את פרק הומן הבא של המעבד. המערכת מנהלת את רשימת המטלות. בשיטת חוססז-שחטסז בכל רמת עדיפות (המושג חופסז-חטסז מכוון לכך שכל מטלה מטופלת בנפרד, ללא תלות במטלה אחרת ובלי מעורבותה או ידיעתה), ורק כאשר איין מטלות שאפשר להפעיל ברמה יותר גבוחה, המערכת מתחילה לנהל את רשימות. המטלות בעלות רמת עדיפות הנמוכה יותר. טבלה 16.9: ערכי רמת העדיפות של המטלה עבור הפרמטר /10זסזקח. עדיפות פירוש אותהסות 80 /יה1הס81ק סאשאצוד | מציין רמה אחת מעל לעדיפות הנורמלית. של מחלקת העדיפות. אסא וס וספ שדנהסזהק. סהשאואד | מציין רמה אחת מתחת לעדיפות. הנורמלית של מחלקת העדיפות. 1665 שדנהסנהק ‏ סאשהאד | מציין שתי רמות מעל לעדיפות הנורמלית. של מחלקת העדיפות. = סז +הזהס1הק סאשאאוד | מציין רמת עדיפות בסיסית 1 עבור התהליכים 0455 +זזהסזק 6פ1, 5 דה סנק סא אר 5 +דהסזפק 168, ורמת עדיפות. בסיסית 16 עבור תחליכי. סנק ודה דפטשוס +הנהסזהק ‏ סאפאוזד | מציין שתי רמות מתחת לעדיפות. הנורמלית של מחלקת העדיפות. תפסא ד1הס81ק סאשאצוד | מציין עדיפות נורמלית של מחלקת. העדיפות. פרק 16: תהליכים ומטלות = 459 עדיפות. פירוש דנה פואנד יהזהס1אק סאשאצוד | מציין רמת עדיפות בסיסית 15 עבור התהליכים 0455 ץ+דזהסזאק 6פ1, 5 דה סנק אסא אר 5 צדהסזפק 116%, ורמת עדיפות. בסיסית 31 עבור תהלוכיי סנק שווד פה הפונקציה /ו6907001וחד500 מאפשרת לקבוע את רמת העדיפות הבסיסית של המטלה, יחסית למחלקת העדיפות של התהליך שהיא שייכת לו. לדוגמה, הגדרת. 16 +דוהסזחק סהפחווד בקריאה לפונקציה /וז6300100זחז56 עבור מטלה ותהליך עס 01455 +הזהס1ק 1015 קובעת את רמת העדיפות הבסיסית של המטלה ל-6. עבור תהליכים עם ₪055 ץזהסזהק ₪ 101 01055 צדנחסנהק הסוא ו-0355 צד781081 6זו, המערכת מעלה דינמית את רמת העדיפות הבסיסית של המטלה בשעה שמתרחשים אירועים שחשובים למטלה (כמו למשל, מטלה אחרת. שעוברת למצב המתנה). תהליכי ₪855 +דוחסזחק פאזדאפה אינס מקבלים כל העלאה דינמית (מכיון שהם כבר נמצאים ברמה הגבוהה ביותר). כל המטלות מתחילות ברמה |ואהסא /יד1הסזהק. סאפמהד. צריך להשתמש במחלקת עדיפות של התהליך כדי להבדיל בין יישומי זמן קריטי ואלה שיש להם דרישת תזמון נורמלית או מתחת לנורמלית. צריך להשתמש בערכי העדיפות. של המטלה, כדי להבדיל בין העדיפויות היחסיות של משימות התהליך. לדוגמה, מטלה שמטפלת בקלט עבור חלון יכול להיות ברמת עדיפות יותר גבוחה מאשר מטלה שמבצעת חישובים אינטנסיביים וצורכת זמן מעבד רב. כאשר מנהלים עדיפויות, צריך להיות והירים מאוד, כדי להבטיח שמטלה בעלת עדיפות גבוהה לא תשתלט על כל זמן המעבד הפנוי. מטלה בעלת רמת עדיפות בסיסית. מעל ‏ 11 מתנגשת עם הפעולה הרגילה של מערכת ההפעלה. השימוש ב-055 צדנהסנחק 16דפח שלא לצורך, או בחוסר תשומת לב, עלול לגרום לכך. שמטמון הדיסק לא יתרוקן, שהעכבר לא יגיב, וכדומה. 6 קבלת רמת העדיפות הנוכחית של מטלה בסעיף קודם למדת שבאפשרות התוכניות להשתמש בפונקציה /50/177630000116 כדר לשנות את רמת העדיפות הנוכחית של מטלה. פעמים רבות, דרוש מידע אודות רמת העדיפות הנוכחית של מטלה, בדרך כלל כצעד לפני הקריאה ל-076ק0ה6זחדו50 לשינוי רמת העדיפות הקיימת. הפונקציה /9307008וחדו66. מחזירה. את ערך העדיפות של המטלה המוגדרת. ערך זה, יחד עם מחלקת העדיפות של התהליך 0 321ח/ו ומבוא ל-ספו שהמטלה שייכת לו, קובעים את רמת העדיפות הבסיסית של המטלה. את הפונקציה. כותבים כמו בהגדרה שלהלן. ת60 פתג מנסאתט 50 16ממת // 7 לו כמו בפונקציה /06וז6367זחז560, גם כאן הפרמטר 0פפוחדח מזהה את המטלה. כאשר הפונקציה מצליחה, היא מחזירה את רמת העדיפות של המטלה; אם הפונקציה נכשלת, היא מחזירה אהטדפה ‏ הסמח צדנהסנהק. סהפאווד. כדי לקבל מידע מפורט. אודות השגיאה, צריך לקרוא ל-ז0ז6639/9. רמת העדיפות של המטלה היא אחד הערכים שמפורטים בטבלה 16.9 וכור, לכל מטלה יש רמת עדיפות בסיסית שנקבעת על ידי מערכת ההפעלה לפי ערך. העדיפות של המטלה ומחלקת העדיפות של התהליך שהיא שייכת לו. מערכת ההפעלה. משתמשת ברמת העדיפות הבסיסית של כל המטלות שאפשר להפעיל כדי לקבוע איור מטלה תקבל את הקצאת הזמן הבאה של המעבד. מערכת ההפעלה מנהלת את רשימות. (או תורי) המטלות בשיטת חופסז-6חטסז בכל רמת עדיפות, כפי שהוסבר בסעיף קודם, ורק כאשר אין מטלות שאפשר להפעיל ברמה יותר גבוהה, מערכת ההפעלה פונה אל. רשימות המטלות ברמה היותר נמוכה. שים לב. תחת 5!1א00ה/ו, | הידית = חייבת = להיות = בעלת | גישה אסנדהואהסא. חפט סאפחוד. 7 קבלת הקשר מטלה למדת ש-6008חו. מאחסנת את המידע אודות המטלה בתוך מבנה זאפזווסס של המטלה 608151 6305זח1). כל שהתוכניות מטפלות במטלות, *יתכן שיידרש להן מידע על הקשר (אטוחסס) המטלה. הפונקציה 05ח0ס66:11630 מקבלת את ההקשר של המטלה המוגדרת. כותבים פונקציה זו בתוכניות כמו בהגדרה שלהלן 00 6אסחסם מש1א 8מסעתם 05 שנבהם // ואת עטססטפ85 6א6מחסס 05 4845658 // 1 1000 / הפרמטר 66זחד מוהה ידית פתוחה של המטלה, שהפונקציה צריכה לקבל את ההקשר שלה. הפרמטר 9%וחססק! מצביע לכתובת של מבנה מסוג 6011 שמקבל את ההקשר המתאים של המטלה המוגדרת. ערך האיבר 5ּפָ000%חס6 של מבנה זה מגדיר איוה חלקים מתוך הקשר המטלה צריך לקבל. המבנה זאפזוו00 הוא מבנה שתלוי בסוג המעבד/המחשב שבו התוכנית פועלת. כרגע, יש מבני זאפזא60 מוגדרים. עבור המעבדים |פוח1, %1175, 3חק|ה, ו-00זסאוסקי פרק 16: תהליכים ומטלות ‏ 461 צריך להשתמש בפונקציה :6610163009 לקבלת ההקשר של המטלה הרצויה. הפונקציה מאפשרת לתוכניות לקבל הקשר לפי בחירתן, בהתבסס על ערך האיבר 19195חס6 של המבנה ז15%א60. המטלה המטפלת בפרמטר 630זחדח מניחה שהיא: נקייה משגיאות, אבל הפונקציה יכולה לפעול גם כאשר היא טרם נוקתה משגיאות. אי אפשר לקבל הקשר תקף עבור מטלה שנמצאת בפעולה. חייבים להשתמש תחילה בפונקציה 630זחז 5050000‏ כדי להשהות את המטלה, ורק אז - לקרוא ל 0 כדי להבין יותר טוב את משמעות הדברים, עיין בתוכנית 1168660086 שנמצאת בתקליטור המצורף (בתיקיה 8006559285). שים לב. תחת זא פווסחו/, הידית חייבת להיות בעלת גישה דאפדא60 66 סאפחווד למטלה. 8 הפסקה זמנית והפעלה מחדש של מטלות בסעיפים קודמים למדת שהתוכניות יכולות ליצור מטלות במצב מושהה (על ודי השימוש בדגל 050א5ק505 685418 עם הפונקציה 616910010665 או 016319036 כאשר יוצרים מטלה מושהית, המערכת יוצרת את אובייקט הגרעין המזהה את המטלה, יוצרת את מחסנית המטלה ומאתחלת את אוגרי המעבד עבור המטלה בהתאם למבנה ד60%15%. בנוסף, הפונקציה היוצרת נותנת לאובייקט המטלה מונה. השהייה טחטס6 6חסקפו5) התחלתי שערכו 1; כלומר, המערכת לעולם לא תקצה זמ מעבד כדי להפעיל את המטלה. כדי לאפשר למטלה להתבצע, מטלה אחרת חייבת. לקרוא לפונקציה 1630חד6וח₪65 ולמסור לה את ידית המטלה המושהית, כדי שתורידד את מונה ההשהייה. כאשר 6גסזחדטוחטפסה מורידה את מונה ההשהייה לאפס, התוכנית מחדשת את הפעלת המטלה. את הפונקציה 630זח67וח₪65 כותבים בתוכנית. כמו בהגדרה שלהלן ; (686פמד ממסוותא) 688עמפשמטפפת סתסאום הפרמטר שפפזחדח מגדיר ידית למטלה שהתוכנית רוצה לחדש את הפעלתה באפשרותך להשהות מטלה מספר פעמים; אך צריך לקרוא ל-636ז9500610ח כמספר הפעמים שהשהית את המטלה לפני שהמטלה מתחילה שוב להתבצע. הפונקציה 0סזחדטוחט5טח בודקת את מונה ההשהייה של המטלה שמדובר בה. אם מונה ההשהייה שווה לאפס, המטלה אינה מושהית כרגע; אחרת, הפונקציה 6החז6חוטפסה מורידה את מונה השהייה. אם התוצאה היא אפס, התוכנית מתחילה. בהפעלת המטלה מחדש. אם הערך המוחזר הוא אפס, פירוש הדבר שלא השהית את המטלה; כאשר הערך המוחזר הוא 1 - השהיית את המטלה, אך התוכנית הפעילה. אותה מחדש. אם הערך המוחזר גדול מ-1, המטלה עדיין מושחית. 2 כו ומבוא ל-ספו שים לב שבזמן דווח על אירועי תהליכי ניפוי שגיאות, מוקפאות כל המטלות שבתהליך. הדיווח. מערכת ההפעלה מצפה תוכניות ניפוי השגיאות להשתמש בפונקציות 55000 ו-0ה6זחדטהחטפסה כדי להגביל את קבוצת המטלות שאפשר להפעיל. בתהליך. אפשר להפעיל מטלה בודדת ייצעד-אחר-צעדיי, על ידי השהיית כל המטלות. האחרות בתהליך, מלבד המטלה שמפעילים עליה את דוח אירוע הניפוי. המטלות. האחרות אינן משוחררות על ידי פעולת ייהמשךי אס הן מושהות. שים לב: תחת | 5אס0הוא, | הידית = חייבת | להיות = בעלת | גישה שואטפפה סאאפקפט5 סהפהווד למטלה. 9 סינכרון מטלות (630יוחד ה0ולה2וחסזה6הץ5) בסעיפים קודמים למדת ש-פאוסטחו/ו תומכת בריבוי מטלות. בסביבה אשר בה מטלה אחת או יותר יכולות להתבצע בו-זמנית, פעמים רבות חשוב לאפשר לתוכנית לסנכרן. (וגם לתומן כראוי) את פעילות המטלות השונות. מערכת הפעלה מבוססת ?חא מספקת מספר אובייקטי סינכרון (00(605. חסווגטוחסזהסח/5, או אובייקטי תזמוף. שמאפשרים למטלות לסנכרן את הפעולות שלהן עם מטלות אחרות. בסעיף 16.30, תלמד בפירוט אודות אובייקטי הסינכרון. בדרך כלל, מטלה מסנכרנת את עצמה עם מטלה אחרת על ידי כל שהיא י"שמה את עצמה בתרדמהיי (ייק6ס/5 סד 10861 פטטקיי). כבאשר המטלה נרדמת, מערכת ההפעלה. אינה מקצה עבורה זמן מעבד, ולכן המטלה מפסיקה לפעול. לפני שהמטלה מועברת. למצב ייתרדמה'", היא מודיעה למערכת ההפעלה מהו "האירוע המיוחדיי (י//50008. )חשופ") - כמו הקשת מקש, לחיצת עכבר, או סיו אלגוריתם - אשר יגרום לכך שהמטלה תתחיל שוב לפעול. מערכת ההפעלה, בתורה, ערה לדרישת המטלה ומשגיחה כדי לראות אם או מתי האירוע המיוחד מתרחש. כאשר האירוע מתרחש, מערכת ההפעלה מעוררת את המטלה והופכת אותה למטלה מן המניין שאפשר לבחור בה שוב ולהקצות לה זמ מעבד. לבסוף, המעבד משלב את המטלה וממשיך בהפעלתה; כלומר, המטלה מסונכרנת עכשיו ומתוזמנת לקבלת ומן מעבד, יחד עס שאר המטלות הפעילות. 0 הגדרת חמשת אובייקטי התיזמון העיקריים למדת בסעיף קודם ש-005ח/ תומכת בסוגים שונים של אובייקטי סינכרון. מתוך אובייקטים אלה, חמשת האובייקטים השימושיים ביותר הם: 500005 !01063 טח 0165 ה30וח50, !הפצש ו-וסוחו 0!6בזואו. בסעיפים: שיבואו בהמשך נדוך פרק 16: תהליכים ומטלות ‏ 463 בהרחבה בכמה מסוגים אלה. חשוב להכיר את ההגדרות הפשוטות של כל סוג, כפי שאפשר ללמוד מטבלה 16.10 טבלה 16.10: חמשת סוגי אובייקטי הסינכרון העיקריים. סוג שימוש ופעולות. 560 6110631 | קטע קריטי הוא קטע קוד קטן, אשר דורש גישה בלבדית. (פאפטואם) אל נתוניס משותפים כלשהס, לפני שהוא מתחיל. להתבצע. מבין כל אובייקטי התזמון, הקטע הקריטי הוא הפשוט. ביותר לשימוש. אפשר להשתמש בקטעים קריטיים כדי לסנכרן מטלות בתהליך בודד כלשהו. קטע קריטי פסאסטט! | מוטציות דומות לקטעים קריטיים. אך כאן השימוש הוא: לסינכרון גישות אל נתונים דרך תהליכים רבים. בנוסף לכך, מוטציות הן אובייקטי גרעין 09660 ופחזסא) ; כלומר, התוכניותת יוצרות מוטציות באופן מעשי על ידי שימוש בפונקציית 1א, כמו למשל 6)ט010310. מוטציות 5055 | התוכניות משתמשות באובייקטי סמפור (6ז0ח500) כדר למנות משאבים. מטלה אחת יכולה להשתמש בסמפור כדי למנות את מספר המשאבים הזמינים וכדי להקצות משאבים. לדוגמה, אס יש למחשב שלוש יציאות טוריות, תוכל ליצור סמפור עס מונה משאבים שערכו שלוש. בכל פעם שמטלה ניגשת. ליציאה טורית, מונה משאב הסמפור מופחת באחת, ובכל פעם. שמטלה משחררת יציאה טורית, מונה משאב הסמפור מוגדל. באחת. לכן, מטלות יכולות לקרוא לסמפור ולהמתין עד שהוא: הופך לומין, לפני שהן מנסות לגשת ליציאות הטוריות. השונר לעומת מוטציות וקטעים קריטיים, המטלות אינן הבעלים של. הסמפורים. סמָפּור (אַתֶת) וחסשם | אירועי אובייקטים הם התבנית הפשוטה ביותר של סינכרו. אובייקטים, והס שונים במקצת ממוטציות וסמפורים. תוכניותת משתמשות במוטציות ובסמפורים כדי לשלוט בגישה לנתונים אר למשאבים. הן גס משתמשות באירועים כדי לסמן השלמת. פעולה. תוכניות משתמשות על פי רוב באיירועים כדי להתחיל. מטלה נוספת לאחר שהמטלה הראשונה סיימה חלק מסוים. ממהלך העיבוד שלה. אירועים פזסוחוו 30306 | קוצב זמן ממתין הוא אובייקט גרעין שמאותת לעצמו בצורת. מחזורית, בומן מוגדר, או במרווחי זמן קבועים. אפשר לחשוב על סוח ומאו כשעון אזעקה פנימי עבור התוכניות. לדוגמה,, אולי תכתוב תוכנית לשילוב זמנים שמתריעה המשתמש בכל. שעה על פגישות חדשות של אותה שעה. במקום להפעיל לולאה. קוצב ומן ממתין 4 3271חו/ו ומבוא ל-ספו סוג שימוש ופעולות. ווח 30/6זו3/ | באופן קבוע ולהמתין לשעה שתשתנה, באפשרות התוכנית ליצור. קוצב זמן ממתין אשר מסמן לתוכנית שהזמן השתנה כל שעה. קוצבי ומן ממתינים קיימים רק בגירסאות של 4 ד סח ומעלה. 9% פוסשחוו אינה תומכת בקוצבי זמן ממתונים. קוצב ומן ממתין 1 יצירת קטע קריטי למדת שהסוג הפשוט ביותר של סינכרון מטלות הוא באמצעות איתות של ייקטע קריטיי". קטע קריטי מאפשר לתוכניות לשלוט בגישה אל קטע מהנתונים או אל פונקציה כלשהי בתוכנית. התנאי הוא שרק מטלה אחת תיגש לנתונים אלה בכל ומן נתון, או שכל שאר המטלות הפנימיות בתהליך כבר סיימו את העיבוד שלהן לפני שנוחל ייקטע קריטייי מתחיל להתבצע. יצירת קטע קריטי קלה ופשוטה. קודם כל, על התוכנית להקצות בתהליך המופעל מבנה נתונים מסוג א10ד550 .10ז1ה6. התוכנית חייבת להקצות את מבנה הנתונים. הזה בצורה גלובלית, כך שמטלות שונות שבתהליך הנוכחי תוכלנה לגשת למופע אסזד550 ואסזחזה6 שנוצר בתוכנית. כלומר, מופע אס1ז556 681110 צריך להיות. משתנה גלובלי. לאחר שהתוכנית מקצה את מבנה הנתונים מסוג א10ז550 .0811108, היא חייבת. לבצע שתי פעולות כדי ליצור את הקטע הקריטי ולהיכנס אליו. התוכנית חייבת לקרוא: תחילה לפונקציה 1010901106560000. כדי לאתחל את הקטע הקריטי, ועליהה לקרוא לפונקציה ח1608063!5600ח8 כשהיא מוכנה להיכנס. אליו. הפונקציה 6₪631590000זפ!חם מממתינה למטלה עד שתהיה לה בעלות על אובייקט הקטע הקריטי המוגדר. הפונקציה חוזרת, כאשר מערכת ההפעלה מעבירה למטלה הקוראת את הבעלות. את הפונקציה ח0ו191011063/561ח5 כותבים בתוכנית כמו בהגדרה שלהלן. ; (91616815660100סק1 א0תצסם5 מהסזצ1ת0פ1) מ181081560%10עסעטטתם 18סט הפרמטר ח0063/56000כ|. מצביע אל אובייקט הקטע הקריטי. כדי לאפשר גישה בלבדית אל המשאב המשותף, כל מטלה קוראת לפונקציה ח0010706056000חם. אר 6₪631500000זוח6/יוד כדי לבקש בעלות על הקטע הקריטי, לפני שהיא מבצעת קטע קוד כלשהו, אשר ניגש אל המשאב המוגן. ההבדל הוא בכך שהפונקציה 610631560000זטחפ/יוד חוורת. מיד, ללא קשר אס הצליחה להשיג בעלות על הקטע הקריטי או לא, בזמן שהפונקציה ח5600!ג06107/₪6ח5 חוסמת את המשך העיבוד עדד אשר המטלה יכולח לקבל בעלות על הקטע הקריטי המבוקש. כאשר המטלה מסיימת. להפעיל את קטע הקוד המוגן, היא משתמשת בפונקציה ח1680600063/5600 כדר לשחרר את הבעלות, ולאפשר למטלה אחרת לקבל את הבעלות ולגשת למשאב המוגן המטלה השולטת על הקטע חייבת לקרוא לפונקציה ח13607063/560000 בכל פעם. שהיא נכנסת לקטע הקריטי. המטלה יכולה להיכנס אל הקטע הקריטי רק כאשר הפונקציות ח91071068/566:0זח= או ח10706315660ס1חם/ףד מצליחות. פרק 16: תהליכים ומטלות | 465 לאחר שמטלה מקבלת בעלות על קטע קריטי, היא יכולה לקרוא שוב לפונקציה 700631500000!חם ‏ או לפונקציה ה063!56000ז6זפוחפ/חד מבלי שההפעלה שלה תחסם. הדבר מונע מהמטלה לחסום את עצמה (כלומר, להפסיק את פעולתה) בומן שהיא ממתינה לקטע קריטי שיש לה כבר בעלות עליו. כל מטלה של תהליך יכולה להשתמש בפונקציה ח06161607/63156000 כדי לשחרר את. משאבי המערכת שהוקצו על ידי התוכנית, אשר אתחלה את אובייקט הקטע הקריטי לאחר שהמטלה קוראת לפונקציה ,2/610011003/566000‏ התוכנית אינה יכולה להשתמש יותר באובייקט הקטע הקריטי לסינכרון. % הערה: למרות שהאיברים של מבנה הנתונים 5607108 אנדס מוגדרים בקובץ הכותר ח.6פהפחועצ, על התוכניות להימנע מלגשת לאיברי המבנה, מכיון ש-5וס6חו מנהלת את המידע שנמצא בהם. באופן פנימי, ושינוי האיברים יכול לגרום לשגיאות מעוכת. פטליות. % הערה: שגיאה פטלית (זסזום !3ו3) היא כל שגיאת עיבוד, שהתוכנית איננה יכולה להתאושש ממנה. לעיתים אפשר לצאת מהתוכנית. מבלי להפעיל את המחשב מחדש, אבל סביר להניח שנתונים שלא אוחסנו ילכו לאיבוד. 2 קטע קריטי פשוט למדת שיצירה ושימוש בקטע קריטי היא הליך בן שלושה צעדים. חייבים ליצור את הקטע, לאתחל אותו ולהיכנס אליו. לפני שתוכל לסנכרן מטלות על פי קטע קריטי, עליך ‏ לאתחל את הקטע הקריטי ולמסור ‏ את כתובת מבנה הנתונים אסזד550 .ואסזזה6 כפרמטר יחיד. כאשר מגיעים להתחלת הקטע הקריטי, התוכנית. חייבת | לקרוא | לאחת | משתי הפונקציות: 5 00000560008הם = אר 6063150000זטותש/יוד, > ולהעביר ‏ שוב את הכתובת של מבנה התונים אסזד550 .ואסזז1ה6 כפרמטר יחיד. לאחר שהמטלה כבר מסונכרנת, הקטע הקריטי נשאר עד שהתוכנית עוזבת אותו, או עד שהיא מוחקת אותור כדי להבין יותר טוב את פעולות התוכנית בעת ניהול קטעים קריטיים, התבונן בתוכנית 5608 06ז ,6‏ שנמצאת בתקליטור המצורף לספר וה (בתיקיה 5. התוכנית משתמשת בקטע קריטי, שנמצאת בו הוראה לייהרדם" למשך. חמש שניות, כדי לאפשר למטלה אחת להפעיל קטע קוד קריטי בכל רגע נתון. כאשר המשתמש בוחר באפשרות 1650, התוכנית יוצרת מטלה אחרת, אשר גם היא בתורה. ממתינה לגישה שלה לקטע הקריטי. הקוד הפעיל של התוכנית ח0וז566 60 נמצא בפונקצייות 60006זתד0ו/ח0 ו-06זק0חאו. 6 321חו/ו ומבוא ל-ספו 3 4!602[606₪0ח/5זס-ובּ/ - לסינכרון של שתי מטלות פעילויות סינכרון רבות ממתינות למטלה אחת או יותר לפני שהן ממשיכות בעיבודד המטלה הנוכחית. כאשר המטלה הנוכחית מחכה למעבד שיחוור מפעילות במטלה אחרת, התוכניות צריכות להשתמש בפונקציה -305015/00609[66/,. אשר חוזרת. כאשר אחד האירועים הבאים קורה האובייקט המוגדר נמצא במצב מסומן (51319 5/0960 +יפרק פסק הזמן (טס-6וחוז) מסתיים. את הפונקציה 66ט0פופָחופזס>וּ כותבים בתוכנית, כמו בהגדרה שלהלן. ) 581916002606 18160 ספסוום 0%] 9816 %0 023608 08 ב1בתמת // ,חאה שנסאת 1 [מטעשםה1 פמס-51₪6 //‏ 85ה80%11115600 סהסאם / הפונקציה 609[96ו905015/00/. מקבלת שני פרמטרים, 066 ו-500065ו הפרמטר ₪866 הינו זיהוי האובייקט אשר הפונקציה צריכה לחכות לו. הפרמטר 5 מגדיר את פסק הזמן במילישניות. הפונקציה ְספוָחו5זסיא א חוורת כאשר פרק הומן מסתיים, אפילו אם מצב האובייקט אינו מסומן (חסו 6. כאשר ₪01/85600065 שווה לאפס, הפונקציה בודקת את מצב האובייקט. וחוזרת מיד. כאשר 011886660065 שווה ל-פזזו/1יא1, פסק הזמן של הפונקציה אינו מסתיים. טבלה 16.11 מכילה את רשימת סוגי האובייקטים שאפשר להגדיר את הידיות שלהם (כלומר, סוגי אובייקטים שהפונקציה 6096וףו5זסאו3/ו. יכולה. לחכות להם). טבלה 66.11 + האובייקטים אשר הפונקציה +66 8185075116 יכולה לחכות להם. סוג האובייקט ‏ | תיאור 36 | הפונקציה חסוַב066אַ6פְח3ה61500חו מחצירה את הידית. חסט63וסח | המצב של אובייקט שינוי הודעת מצב (ח₪0000300 פַחבת) הוא מסומן, כאשר מתרחש סוג שינוי מוגדר בתיקיה או בעצ. תיקיות שמגדירים. הודעת שינוי מצב. וטקחו טוספחסס | הפונקציות 61030686 אר 0615107200/5 מחצירות את הידית. כאשר מגדירים את הערך 6081 מצב האובייקטים מסוג קלט קונסול טטקח1 6005006) הוא מסומן (5/003/66), כאשר יש. קלט שלא נקרא במאגר הקלט של הקונסול; והוא אינו מסומן. (5/003166-ח0א) כאשר מאגר הקלט ריק. קלט הקונסול פרק 16: תהליכים ומטלות = 467 סוג האובייקט. ו אירוע וו מוטציה 0 תהליך 0 סמפור (אתת) וד מטלה וד קוצב ומן הערה: ב- תיאור הפונקציות זח0031606 או זחסעפחסקס מחצירות את הידית. שתי הפונקציות 5605/01 ו-ח560וק קובעות את מצב. אובייקט האיירוע טחפוס) למסומן בצורה ברורה. התוכניות. חייבות להשתמש בפונקציה ח65616%6ה כדי לאפס (86960) כל. אובייקט אירוע שמאופס ידנית הפאש +1-8656בטח3א) ולהסב אותו למצב אינו מסומן. עבור אובייקט אירוע שמאופס. אוטומטית טחפום זפסה-סו), הפונקציה הממתינה מאפסת. את מצב האובייקט לאינו מסומן לפני שהיא חוורת. אפשר להשתמש באובייקטי איירוע גם עבור בפעולות חופפות, שבהם. המערכת קובעת את המצב. הפונקציות 016319008 או אפזט!וחספס מחצירות את הידית. מצב אובייקט מוטציה הוא מסומן כאשר אין למטלה כלשהי בעלות עליו. הפונקציה הממתינה דורשת בעלות על המוטציה. עבור המטלה הקוראת, ומשנה את מצב המוטציה לאינו מסומן, כאשר מערכת ההפעלה מוסרת בעלות על המוטציה. הפונקציות 0103100106055 או 06655זלחסקס מחזירות את הידית. מצב אובייקט התהליך הוא מסומן, כאשר התהליך מסתיים. הפונקציות 6זסחק00ח07080056 או 6זסקהוחס5חפקס מחצירות. את הידית. אובייקט סמפור (טזסוק9וח56 ) מחציק מונה שערכר בין אפס לבין ערך מקסימלי כלשהו. המצב שלו מסומן כאשר המונה שלו גדול מאפס - ואינו מסומן, כאשר המונה שלו שווהה לאפס. אם המצב הנוכחי הוא מסומן, הפונקציה הממתינה. מפחיתה את המונה באחד. הפונקציות 6163160100855, 01686 3167סזס, אר 6103106016 מחזירות את הידית. מצב אובייקט. המטלה מסומן כאשר המטלה מסתיימת. הפונקציות ז₪00ו0103160/31030/67 אד 3103067 חס . מחזירות את הידית. הפעלת קוצב הזמן נעשית על ידי הקריאה. לפונקציה זשחזוד5614/31050/6. קוצב ומן פעיל הוא במצב מסומן, כאשר ערכו מגיע לערך שהוגדר מראש. אפשר לבטל את פעולת. הקוצב על ידי קריאה לפונקציה 0091330971 דא פווסטחו/, = הידית חייבת להיות בעלת +כות גישה ב 8 3271 ומבוא ל-ספו אס הפונקציה 609(66ָחפזס*ו נכשלת, הערך המוחזר הוא ספ וזא ד1א/; אם' היא מצליחה, הערך המוחור מציין את האירוע שגרס לה לחזור. הערך המוחור עבור קריאה מוצלחת לפונקציה הוא אחד הערכים שמפורטים בטבלה 16.12 טבלה 66.12 + ערכי ההצלחה האפשריים המוחזרים על ידי הפונקציה 5/08/600[66זס-טו). ערך פירוש ספאססאא8א דוו | האובייקט המוגדר הוא אובייקט מוטציה, אשר המטלה. שיש לה בעלות על אובייקט המוטציה לא שיחררה אותור לפני שהסתיימה. מערכת ההפעלה מוסרת את הבעלות על. אובייקט המוטציה למטלה הקוראת, וקובעת את המוטציה למצב י"אינה מסומנת". 0 08080 זאו | מצב האובייקט המוגדר הוא "מסומןי. דטספווזד דוו | פרק פסק הומן הסתיים, ומצב האובייקט ייאינו מסומןיי. הפונקציה 3/05015/00/609[6/₪ בודקת את המצב הנוכחי של האובייקט המוגדר. אם: מצב האובייקט אינו מסומן, המטלה הקוראת נכנסת למצב המתנה. המטלה מנצלת. זמן עיבוד קטן מאוד בזמן שהיא ממתינה שמצב האובייקט יהפוך למסומן, או שפסק הזמן יסתיים. לפני ההפעלה, פונקציית המתנה (סמסחוף 3/) משנה את המצב של מספר סוגי אובייקטי סינכרון. השינוי מתרחש רק עבור האובייקט או האובייקטים. אשר המצב המסומן שלהם גרם לפונקציה לחזור. לדוגמה, פונקציית ההמתנה מפחיתה את המונה של אובייקט סמפור באחד. צריך להיות זהירים בעת שמשתמשים בפונקציית ההמתנה ובחילופי נתונים דינמיים. כאשר מטלה יוצרת חלונות כלשהם, היא חייבת לטפל בהודעות. חילופי נתונים. דונמיים שולחים הודעות לכל החלונות שבמערכת. אם יש מטלה אשר משתמשת בפונקציית המתנה בלי פסק זמן מוגדר, המערכת ננעלת. לכן, אם יש מטלה שיוצרת. חלונות, = השתמש | בפונקציה ‏ 600605קטו1ז0/300פו = או | בפונקציה 60וןףוטזס=0/316פ1ת, ולא בפונקצייה 81609601 ח/פזס )ומע כדי להבין יותר טוב את פעולת הפונקציה 661ְ60פַ5/0ז31050/), התבונך בתוכנית. שש %/4/8, שבתקליטור המצורף לספר וה (בתיקיה 8006%59285). בכל פעם: שהמשתמש בוחר באפשרות 1650 מהתפריט, התוכנית מתחילה להפעיל מטלה שממתינה לאירוע, נרדמת, ואחר כך משחררת את האירוע. השימוש באירועים מאופסים אוטומטית (פוחשוש זספפ8-סזטא, שמשנים את דגלי הסימון שלהם בצורה אוטומטית), מחייב את הגישה למטלה במיון סדרתי (0169 51/81), מכיון שהאירועים. מאפסים את הערכים שלהם בצורה אוטומטית למצב "יאינו מסומן", כאשר המטלה הראשונה הממתינה מקבלת את האובייקט. קטעי העיבוד של התוכנית 86045 א הרלוונטייים לענייננו נמצאיים בפונקציות 00706זתד0ו/ת0 ו-06זקנחאו. פרק 16: תהליכים ומטלות = 469 4 >>6)000[606!כ!ט11זס-זאבּ/ - סינכרון מטלות רבות תוכניות יכולות להשתמש בפונקציה 86טַ0פַפַח5זס8. כדי לסנכרן מטלה עם אירוע יחיד שמאופס אוטומטית. אך השימוש הנפו יותר הוא, שהתוכניות דורשות. שהעיבוד יימשך רק כאשר יש מופע של קבוצה אובייקטים אחת מסוימת, או יותר. במקרים. כאלה, התוכניות יכולות להשתמש בפונקציה 609605ופןשאזס:. הפונקציה 600[665וק01₪ז0-ו3 חוור כאשר מתרחש אחד מהאירועים הבאים. 3% אובייקט אחד כלשהו שמוגדר, או כל האובייקטים המוגדרים, נמצאים במצב מסומן (5/003166), או במצב איתות. 1% משך פסק הזמן הסתיים. משתמשים בפונקציה 600(605/ק18שז910/ כמו בהגדרה שלהלן 106 6 בע 18160 ספסוום 6תם 1 4168הג3 05 עשמחמת // תטססת פהסאום ץע 18התמח 65שָמ0 // שמף 60 צספהנסק // = ,165במגאט1* ממסאתא צפאסס עבעע 16התמת-605מ0 // 8 11ת+1 פא 005 18 [מטעססה1 שמס-שח1ף // סו 8 / אחרי הקריאה, 1909[60ק3/6507%10 חוזרת בגלל כישלון, הצלחה, או פסק זמן. אם. הפונקציה 605ן609וטיַזסוּ נכשלת, הערך המוחור הוא 1!50א= דזאא; ואם' הפונקציה 609605ט6ַז. מצליחה, הערך המוחזר מציין את האירוע אשר גרס לה לחזור. הערך המוחור בעת הצלחה הוא אחד הערכים שמפורטים בטבלה 1 הפונקציה. 909(605!קטוטו*וסיש3/. מחליטה אס אובייקט אחד או יותר מאלה שהמטלה ממתינה להם, קיים את קריטריון ההמתנה. אס אף לא אחד מהאובייקטים. אשר המטלה ממתינה להם מקיים את קריטריון ההמתנה, המטלה הקוראת נכנסת למצב המתנה יעיל, שבו היא מנצלת זמן עיבוד קטן בשעה שהיא ממתינה לאובייקט. אחד או יותר מאלה שהמטלה ממתינה להם, כדי שיקיימו את קריטריון ההמתנה. כאשר הפרמטר וו