PracticU

בניית מחשבון של חלונות

בלי כתוביותעם כתוביות
PracticU › קורס C למתקדמים - עבודה מול חומרה Win32 › בניית מחשבון של חלונות
מילון מושגים:
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.

בניית מחשבון של חלונות
בונים מחשבון בסגנון Windows מתוך דיאלוג: כפתורים, שדה תצוגה, תפריט וחיבור של כל פקד לקוד.
השלבים העיקריים
1. פרויקט דיאלוג: נוצר פרויקט Windows Application, ומהעורך של המשאבים (resource) מוסיפים דיאלוג חדש. הכפתורים והשדות נגררים לתוך הדיאלוג.
2. הצגת הדיאלוג: הפונקציה DialogBoxParam מציגה את הדיאלוג ומטפלת בלולאת ההודעות בעצמה. לכן לא צריך לכתוב לולאה משלנו.
3. פקדים עם מזהה: לכל כפתור מוגדר מזהה (IDC), ו-WM_COMMAND מחזיר את המזהה בבתים התחתונים של WPARAM.
4. קריאה וכתיבה של טקסט: GetDlgItemText קורא את הטקסט מתיבת העריכה, ו-SetDlgItemText כותב אליה. את הטקסט החדש בונים עם wsprintf.
5. תפריט: בעורך המשאבים מוסיפים תפריט עם Edit, View ו-Help. לכל פריט בתפריט יש מזהה, והמזהה הזה מגיע ל-WM_COMMAND.
6. סגירה: כשהמשתמש לוחץ על Cancel או על X, קוראים ל-EndDialog כדי לסיים את הדיאלוג.
7. הדפסת תוצאות: ההרצאה בודקת שהטקסט מתעדכן בכל לחיצה ומציגה הודעה למשתמש כשצריך.
שימו לב
ההרצאה מציינת שההודעה WM_COMMAND מגיעה גם מלחיצות על כפתורים וגם מלחיצות בתפריט, ולכן מזהים הפקדים והתפריט צריכים להיות ייחודיים.
השיעור הבא בקורס: בניית explorer של וונדוס מאפס - חלק 1

פרקי ההרצאה: בניית מחשבון של חלונות

  1. 00:00

    פתיחת פרויקט ויצירת קובץ main.cpp

  2. 01:48

    WinMain והתחלת קוד הדיאלוג

  3. 02:35

    בחירת הפונקציה DialogBox לתצוגה

  4. 03:51

    פרמטרים של DialogBoxParam

  5. 05:11

    משאב דיאלוג חדש בפרויקט

  6. 06:15

    MAKEINTRESOURCE ומזהה הדיאלוג

  7. 07:33

    קובץ resource.h שנוצר אוטומטית

  8. 08:46

    include ל-resource.h ונתיבי הקומפיילר

תמלול ההרצאה: בניית מחשבון של חלונות

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

  1. 00:06

    היום אנחנו רוצים לבנות את המחשבון של Windows, בואו נפתח Visual Studio ו-Create Projects ו-Calculator 01 ו-Calculator 01 ו-OK. ואנחנו נעשה את זה די עירום ועירייה.

  2. 00:36

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

  3. 00:53

    אנחנו מוצאים, אנחנו מוצאים לבנות את המחשבון, את הדבר הזה, טופס. יפה. אז בסוף זה add new item c++ וזה יהיה יהיה made.

  4. 01:13

    enter ומוסיף cpp, יפה. נוסיף פה include windows.h ו-int std call win-main main h instance instance instance לא צריך אותו ועוד אחד כזה יפה ומה לא לא לא לא win-main win-main מקבלת פונקציה שיש רווח הוא אומר npscr npscr ו-int יפה יפה אוקיי ומה שאנחנו רוצים לעשות זה להציג דיאלוג יש פונקציה אני חושב שנקרא את showDialog בוא נגיד לו פשוט דיאלוג

  5. 02:28

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

  6. 03:08

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

  7. 03:24

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

  8. 03:46

    דיאלוג בוקס שוב go to definition וdialog box w go to definition זה בפני עצמו מאקרו כן זה אומר המשך בשורה הבאה שמפעיל את dialog box param dialog box param זה כבר פונקציה אז בוא נקרא שזה dialog box param dialog box param יפה ו-control שנפרסם הכי יפה h instance בוא נגיד שלא צריך template name שאלה טובה ווינדו איננו, דיאלוג פאנק, איזושהי פונקציה,

  9. 04:22

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

  10. 04:59

    צריך להגיד לה זה מהטמפלייט שוב בואו נחזור לדוגמא שלהם דיאלוג בוקס זה בעצם דיאלוג בוקס פרה הוא לא מראה לי את זה אבל מה שהם משתמשים פה זה make int resource עם idd about box בואו נלמד איך להשתמש בריסורסים ריסורס עכבר ימני עד ריסורס בואו נראה אם זה מה שאנחנו רוצים

  11. 05:25

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

  12. 06:00

    פה זה את הדבר הבא בואו נעבור לפה ונקרא ל make int resource make int resource לא משלים make int resource נכון make int resource יפה אבל נותנים לו את IDD קונטרול רווח קו דרכון את דיאלוג אחד שלנו בוא נעשה קונטרול שיפט b אולי הוא עדיין לא רואה שום דבר אנחנו עושים ביד עוד לא זה בסדר

  13. 06:29

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

  14. 06:54

    ועושה לו קאסטינג לסטרינג, זה הכל, אבל זה עדיין אותו ערך, אז הערך הזה, הוא בסך הכל ממיר אותו לסטרינג אז הוא מחזיר לי מה שאני אמור להעביר פה, מה אני אמור להעביר פה? lpcwstr, אני יכול לתת לו פה lpcwstr ctrl רווח ו-s שווה ל...

  15. 07:19

    ופה הוא פשוט להעביר את s וטאק הוא לא מוכן עדיין iddialog undeclared identified אוקיי איפה הוא נמצא? אז אם נחזור לכאן אנחנו נראה שלא רק שנוסס לנו rc פה אלא הוא נוסף לנו ריטוריוס נקודה h כאן w כאן זה ויש אז יצא לנו קובץ הריטוריוס הזה והוא אומר מייקרוסופט ג'נרייטד לא כדאי לגעת בזה

  16. 07:46

    ומה שאנחנו רואים פה זה ID דיאלוג 1 ומקרו שהערך שלו זה 101 כל האחרים אני לא יודע אולי נחזור עליהם בעיתונות אחרת יפה אבל ID דיאלוג 1 זה 101 מה זה ID דיאלוג 1 הזה?

  17. 08:01

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

  18. 08:16

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

  19. 08:39

    זה ID דיאלוג אחד, בואו ננסה להריץ את זה, אה זהו, הוא לא יודע מה זה ID, אני יכול להזין פה 101, זה לא יהיה נבון מצידי, מה שיותר פשוט זה לעשות include ל-resources.h, בואו נעשה include ל-resources.h, סולומית, include ל...

  20. 09:01

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

  21. 09:36

    פרויקט סנטינג דירקטורי סי פלוס פלאס פרויקט סנטינג זה לא מעניין דירקטורי זה מה שמעניין יפה אז יש פה כל מיני ספריות אפשר להבין את הנתיבים האלה אבל טוב אלה התיקיות של האקסקיוטיבל פיילס בוא נראה שזה אינקלוט פיילס זה אינקלוט פיילס אז יש משתנה עם מבלי visual scene installed איפה

  22. 10:09

    הוא עודכן תיקיית include שם ועוד תיקיית atl לא מעניין וwindows sdk טוב תלוי מה משתנה על זה אבל זה משתנה שמוגדר עבור הוויז'ל סטודיו בקיצור יש תיקיות יש תפריות ידועות נתיבים ידועים כשאני אומר לו משולשייה אז הוא הולך ומחפש לפי הסדר הזה זה הרעיון עכשיו פה אני לא רוצה שיחפש בשום מקום אני רוצה להגיד לו שזה כאן

  23. 10:39

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

  24. 11:11

    זה טייב דף אם פיתיח שזה בעצם לונג על כל וק HWND UNW פרה מל פרה, נשמע מוכר, יפה, אז בואו נגדיר נגדיר נגדיר לונג callback זה קו תחתון קו נכון std call זה יהיה הדיאלוג פאנק, כבר משלים אותי לא לא ברור כאילו מה פתאום שישלים אותי אבל לא יודע מה מה מה הוא רוצה זה hwnd hwnd וההודעה עצמה msg וה-w param אמרנו שזה int בסוף, unsigned

  25. 12:08

    int, אני כבר לא זוכר, נגיד לו פשוט w param, w param, ו-l param, כן, כנראה l param, יפה, ויפה מאוד, בואו נשים פה breakpoint וננסה שוב את מזלנו, עדיין לא, מה הוא רוצה?

  26. 12:33

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

  27. 13:00

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

  28. 13:37

    עדיין זה שני טיפוסים שונים אם אז c++ תהיה אותה אסטרונרית טיימפ, לא מקובל, לא מקובל על הטיפוסים שזה, מה זה ריטוריין אפס?

  29. 13:46

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

  30. 14:12

    יפה מאוד, x, לא רוצה שום דבר, אוקיי, זה סתם כפתורים שהם לא מחוברים. עכשיו, מה זה בעצם החלון הזה? החלון הזה זה בעצם חלון כמו שבנינו בהרצאות קודמות, שבמקום צבע לבן, ה-stock, ה-background שלו, ה-H, ה-handle, ה-brush הוא אפור, ועל איך משבצים כפתורים, זה בהזדמנות נלמד, אבל זה בעצם create window ומיקום הכפתורים איכשהו.

  31. 14:46

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

לקורס המלא: קורס C למתקדמים אונליין

ההרצאה הקודמת: Paint Brush

ההרצאה הבאה: בניית explorer של וונדוס מאפס - חלק 1

הרצאות קשורות מקורסים אחרים

  • בניית מודל
  • בניית שלב - חלק 1
  • בניית צ'אט באתר
  • פרויקט ב-#C - מחשבון פשוט - חלק 1

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C