PracticU

בניית explorer של וונדוס מאפס - חלק 2

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

בניית explorer של וונדוס מאפס - חלק 2
ההרצאה ממשיכה בבניית הסייר: יצירת דיאלוג עם שדה נתיב וכפתור Go, הוספת List View עם עמודות וקישור כל הרכיבים לקוד דרך ה-API.
השלבים העיקריים
1. הוספת פקדים לדיאלוג: בעורך המשאבים מוסיפים שדה עריכה (Edit), כפתור Go ו-List View. לכל פקד מוגדר מזהה.
2. הצגת הדיאלוג: בתוך WinMain מפעילים DialogBoxParam עם מזהה הדיאלוג ופונקציית DialogProc שמטפלת בהודעות.
3. InitCommonControls: מאתחלים את ספריית הפקדים המשותפים, כדי שה-List View ירשם. ההרצאה מציינת שבלי זה החלון לא מזוהה.
4. הוספת עמודה: LVM_INSERTCOLUMN מקבל מבנה LVCOLUMN עם כותרת, רוחב וסדר העמודה, ונשלח עם SendMessage.
5. שליפת ה-HWND של הפקד: GetDlgItem מחזיר את ההנדל של List View לפי המזהה שלו, כדי שנוכל לשלוח לו הודעות.
6. סדר ההודעות: WM_INITDIALOG מופעלת פעם אחת בתחילת הדיאלוג, ומשם מאתחלים את הפקדים. ההחזרה של 1 אומרת למערכת להמשיך עם המיקוד הרגיל.
7. קריאת הטקסט: כמו בדיאלוג הקודם, הטקסט מהשדה נקרא בעזרת GetDlgItemText.
שימו לב
המרצה מזהיר שאם מעבירים מצביע למבנה שנוצר בתוך פונקציה ולא נשמר בזיכרון, הערכים עלולים להשתנות לפני שהפונקציה מסתיימת.
השיעור הבא בקורס: בניית explorer של וונדוס מאפס - חלק 3

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

  1. 00:00

    המשך מהרצאה קודמת: WinMain

  2. 00:39

    הצגת דיאלוג בקריאה ל-DialogBoxParam

  3. 02:03

    פונקציית הדיאלוג DlgProc

  4. 03:12

    תיקון טיפוס ההחזרה של DlgProc

  5. 03:56

    תבנית הדיאלוג החסרה בפרויקט

  6. 05:08

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

  7. 06:23

    include ל-resource.h וזיהוי IDD

  8. 07:46

    הדיאלוג מופיע לאחר ההגדרה הנכונה

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

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

  1. 00:03

    טוב ההרצאה הקודמת נקטעה לנו בלי כוונה אז אנחנו פשוט נמשיך מאותה נקודה יפה אז הלכנו לכאן ואנחנו רוצים לכתוב פה win main בואו נראה מה אומר לי על win main win main function זה lpstr וזהו ככה היא צריכה להיראות בלי c ובלי w ובואו ננסה להרליץ אותה נראה שזה רץ תלמדו לעבוד בשלבים וזה עובד יפה מאוד טוב אז יפה מאוד. מה שאנחנו אבל נרצה לעשות זה

  2. 00:39

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

  3. 01:04

    אינדירקט כן, לא מקבלת כלום. אז אינדירקט פראם וקונטרול שיפט יופי. זה היה הכי יפה, אז זה איזה אינסטנס לא ניתן לו, שייצג והטמפלייט, תכף ניתן לו את מה, אמרנו אתמול שזה קאסטינג לסטרינג של ה-ID של ה-resource של הדיאלוג, אז קאסטינג לסטרינג, נכון זה LPC לונג פוינטר ל-C דיאלוג טמפלייט, טמפלייט W,

  4. 01:43

    משום מה אתמול עשינו איזה קאסטינג לסטרינג, זה אמור להיות סטרינג, טוב תכף נחזור לזה, נעזוב את זה כרגע, נעביר בינתיים אפס, והפארנט אין לנו והדיאלוג פאנק זה יהיה דיאלוג פאנק והפרמטר אין לנו פרמטר, יפה מאוד, ומה שצריך זה רק את הדיאלוג פאנק בואו ניתן לו long std call dialogue punk שמקבלת hwnd hwnd uint msg wparam wparam ונשכבה את זה רק נשנה את זה ל-L ול-N וסוגר

  5. 02:52

    יפה וסטארט וגו אנטר ואנטר אנטר ו-Return 0 זה קונטרול בילד ו-Convert את מי? את פרמטר 4 1, 2, 3, 4 דיאלוג פאנק מה רע בדיאלוג פאנק?

  6. 03:15

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

  7. 03:59

    אז זה שנייה אחת אוקיי בואו נראה מה זה הפרמטר הזה lpc ונותן לו lpcdlgtemplatewf12 call dlgtemplate וgo to definitions אספרקט שלם בואו ננסה בלי indirect וקונטרול שיפט רבע, או הרבה יותר טוב קוראים לזה lpc רוצה קאסטינג לסטרינג מצוין אוקיי אז נעשה

  8. 04:47

    לקאסטינג סטרינג לסטרינג lpcwstr lpcwtskr עדיף t אם יש לו יש לו מצוין זה פשוט t זה גם w וגם אנסי יפה למה אני יכול פה לשים 0 כדי שזה יתקמפל אבל אני צריך לתת לו את ה-resource אני רוצה לוסיף ריסורס, אז בואו נוסיף ריסורס.

  9. 05:18

    וואי אם אני ואד ריסורס, אני רוצה להוסיף ריסורס. אני רוצה דיאלוג, שימו לב שיש בו כמה דיאלוגים דיפולטיביים שאני יכול כבר להוסיף.

  10. 05:32

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

  11. 05:54

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

  12. 06:11

    יפה, וואלה, זה אפשר להקטין קצת, מצוין, יפה. השאלה היא מה ה-ID שלו. פה כתוב לי שהוא ID דיאלוג, כף תחתון דיאלוג, כאילו זה הוא IDD כף תחתון דיאלוג, יפה, אז IDD, דיאלוג קונטרול רווח למה הוא לא מוצא אותו כי הוא נמצא פה ב-resource yes זה

  13. 06:38

    אז צריך לעשות include כמו של זה קונטרול cv ל-resource ל-resource שלהם אני יכול פשוט לגרור לסמן את זה לגרור את זה לא נותן את זה קליק על זה וקופי יותר טוב אי אפשר לכתוב כבר ימני וטקסט יפה מאוד וקונטרול רווח ולנצור את הריצה וקונטרול רווח יפה משלים יפה ונשים פה breakpoint ונריץ no מה הבעיה

  14. 07:23

    resource knowledge file or directory resource.h כן כשמחפש בספריות הסטנדרטיות אנחנו רוצים לחפש בספרייה המקומית והרת.

  15. 07:40

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

  16. 07:54

    אז סיימנו את השלב הראשון. השלב הבא שאנחנו רוצים לטפל בו זה אולי להציג טקסטבוקס, לאפשר למשתמש לרשום נתיב, וכפתור go ו-list view.

  17. 08:08

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

  18. 08:21

    כדי להיסגר, אז אנחנו נבדוק אם msg שווה ל-wm-close, אם זה קלוז, אז מה נעשה? ברגע שאנחנו מיד רוצים לסגור, אז איך סוגרים?

  19. 08:45

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

  20. 09:27

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

  21. 10:11

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

  22. 11:00

    ראשון בואו נציג רק מסג'בוק אז אם אני אעשה עליו דאבל קליק הוא יפתח לי את זה זה לא מעניין מה שקשור ל mfc לא מעניין כדי לשדך אותו עם האפליקציה אני צריך לשים לב למזהה שלו IDC בטן 1 כאן בקוד שלנו אנחנו צריכים לטפל ב-IDC בטן 1 אז if msg שווה ל-wm תתעלמו בבקשה command ctrl f וגור enter f וגור enter enter אז אז אם הלאו וורד אם

  23. 11:43

    המילה התחתונה המילה התחתונה זה בסך הכל של w פרם w פרם המילה המילה התחתונה שלו זה 0x555 זו המילה התחתונה אז אם המילה התחתונה שלו שווה לidctroledit או לא באטן בא אין לו באטן אז מה היה idcבטן למה הוא לא מכיר אותו idcבטן כאילו עוד לא שמענו בואו נעשה ctrl+shift+s נשמור גם את השני ואז ctrl יפה משלים אותו אז אם זה ה-button אז אנחנו רוצים להציג את

  24. 12:31

    הטקסט שבתוך ה-edit. אז צריך לקבל את הטקסט שבתוך ה-edit. ואיך מקבלים? למה זה קפץ? איך מקבלים את הטקסט שבתוך ה-edit? צריך להגיד לו get dlg item יש גם int יש אבל טקסט תן לי את הטקסט של ה-hdlg אין לנו hdlg בואו נשנה די אנג'י די אנג'י די אנג'י והאיי די של האדיט איי די סי אדיט קונטרול רווח והסטרינג הוא ימלא לי את הסטרינג הזה צריך

  25. 13:22

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

  26. 14:04

    זה מערך של אפסים לעומת אגב זה שזה רק התא הראשון הוא 0, null terminal string באיזונות אחרת ובגודל len. אם אני אגיד, אה, אחוואר, לא נתרמתי את האחוואר, עכשיו אני מבין למה הוא כיבד לי את ההרצאה, לא, הפד, הפד דלק, פן.

  27. 14:34

    טוב, פה אני אגיד לו, אם אני אגיד לו אם len שווה ל-1000 ותמיד תשתמשו ב-1000 ונעשה לו a control shift b, נעשה לו build, אז הוא יצא אקסטרקטית קונסטנט אקסטרקטי פה חייב לבוא קונסטנט אז או שתכתבו פה אלף או שתכתבו פה קונס יפה ואז לן לן לן מצויין לא כדאי להשתמש באלף אלף כי אם מחר תשנו את זה למאה זה עלול להישאר אלף אם תאכלו אותה יפה

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

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

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

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

  • Health Explorer
  • בניית עמוד LOGIN אמיתי מאפס בשפת DART
  • Internet Explorer Driver
  • Azure Storage Explorer

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

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