טיפים שימושיים

כיצד ליצור חלון (יישום)

Pin
Send
Share
Send
Send


  • - מהדר
  • - פלטפורמת Windows SDK.

רשום את מחלקת החלונות שתיצור, במידת הצורך. התקשר לפונקציות ה- API RegisterClass, RegisterClassEx או השתמש בפונקציונליות המתאימה של המסגרת המיושמת.

הפונקציות RegisterClass ו- RegisterClassEx לוקחות עצות למבנים מסוג WNDCLASS ו- WNDCLASSEX, בהתאמה, כפרמטר יחיד. ניתן להשתמש בערך החזרה מסוג ATOM במקום בשם המחלקה בעת יצירת חלון. אם שיחת הפונקציה נכשלה, הערך 0 יוחזר.

צור מופע של מבנה מסוג WNDCLASS או WNDCLASSEX. מלא את כל השדות הנדרשים. בפרט, יש להציב את הערכים הנכונים ב:

- cbSize - גודל המבנה בבתים,
- סגנון - קבוצה של סגנונות בכיתת חלונות,
- lpfnWndProc - מצביע להליך החלון,
- ידית מצב למודול בו רשום מחלקת החלונות,
- lpszClassName הוא השם הסמלי של הכיתה.

השדות הנותרים עשויים להכיל ערכי null. התקשר לפונקציה כדי לרשום את מחלקת החלונות. בדוק את התוצאה המוחזרת.

צור חלון של Windows. השתמש בפונקציות ה- API של CreateWindow, CreateWindowEx או בשיטות העטיפה המתאימות של אובייקטים המחלקה של המסגרת או הספרייה המשמשת. אב הטיפוס של הפונקציה CreateWindowEx הוא כדלקמן:

HWND CreateWindowEx (
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y
רוחב int,
גובה אינטש
HWND hWnd הורה,
HMENU hMenu,
HINSTANCE אינסטנט,
LPVOID lpParam
),

הפונקציה CreateWindow שונה מ- CreateWindowEx רק בהיעדר הפרמטר dwExStyle.

התקשר אל CreateWindow או CreateWindowEx. העבירו את השם או הערך של סוג ATOM של מחלקת החלונות שהוגדרו בשלב הראשון או השני כפרמטר lpClassName. פרמטרים x, y, n רוחב, n גובה יכולים להיות הקואורדינטות והממדים של החלון שנוצר. הידית לחלון האב (אם קיימת) מועברת דרך hWndParent.

שמור ונתח את הערך שהוחזר על ידי הפונקציות CreateWindow או CreateWindowEx. אם הם מצליחים, הם יחזירו את הידית לחלון החדש: אם זה לא יצליח, הם יחזירו את NULL.

ידע הכרחי:

בעת יצירת תוכנית זו, נשקול את העקרונות הבסיסיים ליצירת יישומי חלונות ב- C #, כמו גם שיטות למימוש כל יעדים אולטימטיביים איתם: במקרה שלנו, זה חלון בורח מצחיק.

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

חלון עבודה MS Visual Studio מכיל את חלונות העזר הבאים.
איור 2. חלונות עזר.
באיור המספרים מסומנים:

  1. החלון ארגז כלים (לוח בקרה) - אתה יכול למקם את הפקדים על הטופס שנוצר.
  2. החלון סייר הפתרונות (סייר הפתרונות) - כאן תוכלו לראות את הצמתים הבאים: נכסים - הגדרות פרויקט, קישורים (קישורים) - ספריות המחוברות לפרויקט, כמו גם קבצי מקור שנוצרו ומחוברים לפרויקט (עם סיומת .cs) וטפסים המחוברים לפרויקט (לדוגמה, טופס 1).
  3. החלון נוף בכיתה (חלון כיתה) - הנה כל השיעורים שנוצרו בתוכנית.
  4. החלון נכסים (מאפיינים) - על ידי בחירת פקד כלשהו או אפילו טופס, תוכלו לראות את כל הפרמטרים של אובייקט זה, כמו גם לשנות את ערכי ברירת המחדל בהם.

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

הוספת פקדים חדשים לטופס

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

לשם כך, גררו את אלמנט החלון הנדרש מחלון הכלים (ארגז כלים).

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

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

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

עבור אל מאפייני מחרוזת תווית 1היכן לשנות את הטקסט ל "האם אתה שואף להפוך את העולם למקום טוב יותר?". שנה גם את סוג הגופן, עבור זה מצא את הנכס גופן .
איור 5. מאפיין גופנים של רכיב התווית.
ואז הגדר את סוג הגופן טהומהרוחב גופן נועז והגודל שווה 16 .
איור 6. הגדרות גופן.
לאחר מכן, שנה את הטקסט בכפתורים באמצעות המאפיין טקסט.

הריק המתקבל מחלון התוכנית ייראה כך.
איור 7. הטופס ייראה כך.

החלק הטכני של התוכנית

  1. ראשית, נוסיף מטפל באירועי עכבר ונממש את הפלט של הקואורדינטות שלו x ו y לשני שדות קלט שנוצרו.
  2. בשלב הבא ניצור את מטפלי הפונקציות ללחיצה על כל אחד ממקשי העכבר (במיוחד משתמשים שעובדים קשה יכולים עדיין להגיע אל "כן כמובן!»).
  3. בשלב הבא נוסיף קוד המיישם תנועת חלון אקראית למקרה שהסמן יתקרב ל"כן כמובן!».

קביעת תנועת מצביע העכבר לפי צורה

לחץ ישירות על החלק הטופס של היישום (לא על אחד האלמנטים).

עבור אל מאפייני הטופס בלחיצה ימנית -> תפריט הקשר נכסים.

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

כדי להקצות מטפל לאירוע זה, מצא את הקו Mousemove ואז לחץ פעמיים בשדה שמימין לו - המטפל באירועי העכבר יתווסף אוטומטית והפונקציה תתווסף Form1_MouseMove בקוד התוכנית שלנו.
איור 9. לאחר לחיצה כפולה מימין ל- MouseMove, תופיע שורה זו והמעבר לקוד של פונקציית המטפל של אירוע זה יתרחש אוטומטית.
הוסף לפונקציה 2 שורות כך שהקוד שלה ייראה כך.


פונקציה זו המעבדת את האירוע של העברת מצביע העכבר מעל הטופס שמקבל 2 פרמטר: אובייקט שולח ומופע מחלקה MouseEventsArgsהמכיל מידע על הקואורדינטות של מצביע העכבר ותכונות נוכחיות אחרות.

textBox1 ו textBox2 אלה מקרים כיתתיים תיבת טקסטשמנהלים את רכיבי שדה הקלט שלנו.

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

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

עכשיו חזרה לריק הטופס שלנו. לשם כך, לחץ על הכרטיסייה המתאימה (Form1.cs [בנאי])כפי שמוצג באיור 10:
איור 10. מעבר למעצב הטופס C #.
לחץ פעמיים על הכפתור הראשון: סטודיו חזותי יוסיף אוטומטית את קוד העיבוד של לחצן זה כשתלחץ עליו.

הוסף את שורות הקוד הבאות:


עכשיו חזרו למעצב והוסיפו כפתור שני, גם על ידי לחיצה כפולה עליו.

הוא יכיל את הקוד הבא:


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

כעת עלינו להבין את תנועת החלון ברגע בו העכבר ניגש לכפתור "כן כמובן».

לשם כך אנו מוסיפים את הקוד לפונקציה:

חלל פרטיForm1_MouseMove (שולח אובייקטים, MouseEventArgs)

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

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

עלינו להכריז על כמה "עובדים"משתנים שנמשיך להשתמש בהם.

מצב המשימה

1. פיתוח תיבת דו-שיח הכוללת שני כפתורים, אישור וביטול.

איור. 1. הטופס שייצור

2. התקשר לתיבת הדו-שיח מחלון היישומים הראשי. הצג את ההודעה המתאימה אם לחץ על אחד משני המקשים בתיבת הדו-שיח: אישור וביטול.

2. צור פרויקט C ++ באמצעות תבנית היישום מבוסס דיאלוג

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

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

תיקיית יישום במקרה שלנו (לא חשוב):

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

כתוצאה מכך, שתי מחלקות ייווצרו עם השמות CMFCAppApp ו- CMFCAppDlg.

החלון של MS Visual Studio לאחר הפעולות שהושלמו ייראה כמוצג באיור 2.

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

3. שנה את המראה של הטופס הראשי

בואו נמחק את כפתור ה- OK. ושנה את שם כפתור הביטול ליציאה.

כדי למחוק את לחצן אישור, ראשית עליך לבחור אותו ולחץ על מקש המחיקה.

לפיכך, אנו מוחקים את האלמנט בו הוא כתוב:

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

איור. 3. שנה את שם הלחצן מ- "ביטול" ל"יציאה "

עד כה, בחלון החלונית Properties, יש לנו שני אלמנטים:

  • IDD_MFCAPP_DIALOG - חלון היישום הראשי,
  • IDCANCEL - לחצן "יציאה" (לשעבר "ביטול").

ניתן להוריד את היישום לביצוע ולבדוק את פעולתו.

שלחנו כפתור נוסף בטופס שאינו קשור למטפלי אירועים. אלמנט IDC_BUTTON1 אחר מופיע בחלון החלונית Properties.

טופס הבקשה יהיה כפי שמוצג באיור 4.

איור. 4. הסרת כפתור שלא קשור למטפל באירועים

מאפיין הכיתוב של כפתור IDC_BUTTON1 שונה ל- Form2. לאחר לחיצה על כפתור זה, תופיע תיבת דו-שיח.

5. גיבוש כיתה ומשאבים של תיבת דו-שיח

ב- MS Visual Studio, משאבי תיבות דו-שיח נוצרים אוטומטית לאחר יצירת מחלקת חלונות. לפיכך, על ידי יצירת מחלקת חלונות, אנו יוצרים אוטומטית משאב חלון.

כדי לעבוד עם שיעורים, נעשה שימוש באשף הכיתות. כדי להתקשר לאשף הכיתה, לחץ באמצעות לחצן העכבר הימני ובחר בפקודה "אשף הכיתה ..." בתפריט ההקשר (איור 5).

איור. 5. התקשר אל "אשף הכיתה ..." כדי ליצור תיבת דו-שיח של משאב ומשאב

כתוצאה מכך ייפתח חלון שמוצג באיור 6.

איור. 6. חלון "אשף מחלקת MFC"

החלון כולל את השדות הבאים:

1. שדה "פרויקט:" - פרויקטים קיימים בפתרון (פיתרון).

2. השדה "שם כיתה:" מציין את הכיתות הזמינות בפרויקט. במקרה שלנו, יש שלוש שיעורים עם שמות:

  • CMFCAppApp - מחלקת יישומים בכללותה,
  • CMFCAppDlg - כיתת תיבת דו-שיח ליישום,
  • CAboutDlg הוא המחלקה של תיבת הדו-שיח About שנוצרה כאשר ה- AppWizard יצר את הפרויקט.

3. השדה "מחלקת בסיס:" מציין את מחלקת הבסיס ממנה יורשת המחלקה המוצגת בשדה "שם כיתה:".

4. השדה "משאב:" מגדיר את שם המשאב התואם למחלקה מהשדה "שם כיתה:".

5. השדה "הצהרת מחלקה:" מגדיר את שם קובץ הכותרת עבור הכיתה, המוצג בשדה "שם כיתה:".

6. השדה "יישום מחלקה:" מגדיר את שם הקובץ בו מיושמות הפונקציות מהכיתה, המוצג בשדה "שם כיתה:".

לחלון יש גם חמש כרטיסיות, אשר עבור כיתה מהשדה "שם כיתה:" מתארות:

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

כדי להוסיף כיתה חדשה, אנו קוראים לפקודה הוסף כיתה.

איור. 7. הפקודה להוסיף כיתה חדשה

כתוצאה מכך, נפתח חלון "MFC Add Class Wizard", בו אנו קובעים את השדות לערכים, כמוצג באיור 8. כדי להגדיר את השדות, פשוט הקלד "CForm2" בשדה "Class Class:". כל שאר השדות יתמלאו אוטומטית למעט השדה "מחלקת בסיס:".

בשדה "בסיס> CDialog.

שם המשאב מוגדר כ- IDD_FORM2.

קובץ הכותרת וקובץ היישום של הכיתה נקראים "Form2.h" ו- "Form2.cpp".

איור. 8. יצירת מחלקה חדשה CForm2 ומשאב IDD_FORM2, המבוססים על CDialog בכיתה

לחץ על "סיום". בחלון הקודם, תוכלו לראות כי הכיתה CForm2 נוספה לשלושת הכיתות הקודמות.

לחץ שוב על "אישור".

6. חלון MS Visual Studio ופאנל סייר הפתרונות

לאחר הפעולות שבוצעו, החלון של חלון סייר הפתרונות נראה כמוצג באיור 9.

איור. 9. חלון סייר הפתרונות

כפי שניתן לראות בתרשים 9, הקבצים "Form2.h" ו- "Form2.cpp" הופיעו ברשימת קבצי הכותרות. בהתאם, אלה קבצי הכותרת והיישום עבור המחלקה החדשה CForm2 שהוקמה.

7. קוראים לתיבת הדו-שיח של כיתת CForm2 כמשאב

כדי להתחיל ליצור תיבת דו-שיח חדשה (כיתת CForm2), עליכם לקרוא לה כמשאב. לשם כך, ב- Solution Explorer, לחץ פעמיים על הקובץ "MFCApp.rc" מהכרטיסייה משאבים.

איור. 10. קורא לרשימת שמות משאב היישום

אנו מקבלים רשימת שמות של משאבים זמינים:

  • IDD_ABOUTBOX - משאב של תיבת הדו-שיח אודות,
  • IDD_FORM2 - משאב החלון החדש שנוצר,
  • IDD_MFC_APP_DIALOG - המשאב של חלון היישום הראשי.

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

איור. 11. חלון מחלקה CForm2, שעוברת בירושה מ- CDialog בכיתה

אתה יכול לשנות את גודל הטופס ואת מיקום כפתורי "אישור" ו- "ביטול".

8. תכנות אירוע הקליק בלחצן "Form2" בחלון היישום הראשי

באמצעות "סייר הפתרונות" וקובץ המשאבים "MFCApp.rc" (ראה עמוד 7), אנו עוברים למשאב IDD_MFCAPP_DIALOG של חלון היישומים הראשי.

איור. 12. חלון היישום הראשי

בחלון "מאפיינים", בחר בלחצן עם המזהה IDC_BUTTON1. לאחר מכן עבור לתוסף "אירועי בקרה".

איור. 13. רשימת אירועים בכרטיסייה אירועי בקרה בבקרת IDC_BUTTON1

ברשימת האירועים אנו מוצאים אירוע עם השם BN_CLICKED. לאחר מכן בחר בלחצן לבחירת התפריט מלמעלה למטה ובחר "OnBnClickedButton1" בתפריט.

איור. 14. בחירת האירוע BN_CLICKED והתקשר למטפל האירועים OnBnClickedButton1

כתוצאה מכך, חלון הקובץ "MFCAppDlg.cpp" נפתח עם שבר הקוד שנבחר של מטפל האירועים OnBnClickedButton1.

בין הסוגריים <> עליך להכניס קוד טיפול משלך לאירועים.

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

כעת תוכלו להריץ את היישום לביצוע ולבחון את פעולתו.

Pin
Send
Share
Send
Send