הרעיון של ממשק המשתמש ב- Windows מבוסס על הרעיון של חלון. דיאלוגים, לחצנים, לוחות בקרה, רשימות הם כולם חלונות. לכן, על מנת לבצע פעולה כלשהי עם אלמנט כלשהו בממשק משלך או של יישום של מישהו אחר, עליך להשיג ידית חלון.
נחוץ
- - חבילת SDK לפלטפורמה;
- - מהדר.
הוראות
שלב 1
תביא את הידית לחלון על ידי יצירת אותו. בצע שיחות לפונקציות ה- API של CreateWindow או CreateWindowEx, או התקשר לשיטות העטיפה המתאימות (על האובייקטים הדרושים) של הכיתות של המסגרת או הספרייה המשומשות המקיפות את הפונקציונליות של עבודה עם חלונות או פקדים. הפונקציות CreateWindow ו- CreateWindowEx מחזירות ישירות את ידית חלון על יצירה מוצלחת. אם הם נקראים ללא הצלחה, הם מחזירים NULL. ניתן לבקש את קוד הסיבה לשגיאה באמצעות פונקציית ה- API של GetLastError. ניתן להשיג אבות טיפוס ותיאורים מפורטים של הפרמטרים של הפונקציות CreateWindow ו- CreateWindowEx מהקישורים https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx ו- https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx בעת שימוש בכיתות של מסגרות שונות, יצירת אובייקטים של חלונות מערכת ההפעלה יכולה להתרחש באופן מפורש (על ידי קריאה לשיטה) או במשתמע (יישום אסטרטגיית RAII). לכן, עדיף לקבל את ידית החלון על אובייקט מאותחל מראש. תוכלו ללמוד על שיטות המחלקות המחזירות את ידית החלון המורכבת על ידי האובייקט בתיעוד המסגרת המתאימה. לדוגמא, ב- MFC, שיטה דומה היא GetSafeHwnd מהמחלקה CWnd.
שלב 2
קבל ידית לחלון על ידי חיפוש זה. השתמש בפונקציות ה- API של FindWindow ו- FindWindowEx או בעטיפות האובייקט הכיתתיות המתאימות למסגרת בה אתה משתמש. FindWindow מחזיר ידית לחלון ברמה העליונה אם נמצא, או NULL כשלה. החיפוש מתבצע לפי שם הכיתה ושם החלון. תיאור הפרמטרים והיבטי הפונקציה ניתן למצוא בקישור https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. הסמנטיקה של הפונקציה FindWindowEx דומה ל- FindWindow, כאשר ההבדל היחיד הוא שהיא מחפשת חלונות ילדים. התיעוד עבור FindWindowEx זמין בכתובת
שלב 3
מצא את הידית לחלון תוך רשימת הסטים שלהם. השתמש בפונקציות ה- API EnumWindows, EnumChildWindows, EnumThreadWindows או בשיטות של אובייקטים בכיתה של המסגרת בה אתה משתמש. הפונקציות EnumWindows ו- EnumChildWindows מונות חלונות ברמה העליונה וחלונות ילדים בהתאמה. הפונקציה EnumThreadWindows מונה את כל החלונות שאינם צאצא של השרשור שצוין. יש להעביר כל אחת מהפונקציות מצביע להליך התקשרות חוזרת, שתועבר לידיות החלונות שנמצאו כפרמטרים במהלך הפעולה. על ידי שילוב של פונקציות ספירה, קבלת וניתוח מאפייני חלונות בהליך החזרה, ניתן למצוא את הידית של החלון הנדרש. התיעוד לפונקציות המתוארות ניתן בקישורים: - EnumWindows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library / windows / desktop /ms633495%28v=vs.85%29.aspx.
שלב 4
קבל ידית לחלון בקואורדינטות ידועות. הפונקציות WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx מחזירות ידיות לחלונות שהנקודה שצוינה שייכת לפונקציה WindowFromPoint היא הקלה ביותר לשימוש, אך אינה מחזירה ידיות לחלונות מוסתרים או מושבתים. תוכל למצוא תיעוד על השימוש בו בכתובת https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. הפונקציות ChildWindowFromPoint ו- ChildWindowFromPointEx למצוא ידיות לילד. חלונות של חלון הורה נתון השייך לנקודה נתונה. במקרה זה, ניתן לשלוט בגמישות על ההתנהגות של ChildWindowFromPointEx באמצעות פרמטר נוסף. התיעוד לפונקציות אלה מסופק על ידי הקישורים: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.