Η έννοια της διεπαφής χρήστη στα Windows βασίζεται στην έννοια ενός παραθύρου. Οι διάλογοι, τα κουμπιά, οι πίνακες ελέγχου, οι λίστες είναι όλα τα παράθυρα. Επομένως, για να εκτελέσετε οποιαδήποτε ενέργεια με οποιοδήποτε στοιχείο της διεπαφής της δικής σας ή της εφαρμογής κάποιου άλλου, πρέπει να πάρετε μια λαβή παραθύρου.
Απαραίτητη
- - Πακέτο SDK πλατφόρμας
- - μεταγλωττιστής.
Οδηγίες
Βήμα 1
Αποκτήστε τη λαβή στο παράθυρο δημιουργώντας τη. Πραγματοποιήστε κλήσεις προς τις λειτουργίες CreateWindow ή CreateWindowEx API ή καλέστε τις κατάλληλες μεθόδους περιτύλιξης (στα απαραίτητα αντικείμενα) των κλάσεων του χρησιμοποιημένου πλαισίου ή βιβλιοθήκης που ενσωματώνει τη λειτουργικότητα εργασίας με παράθυρα ή χειριστήρια. Οι συναρτήσεις CreateWindow και CreateWindowEx επιστρέφουν απευθείας το λαβή παραθύρου για την επιτυχή δημιουργία. Εάν κληθούν με επιτυχία, επιστρέφουν NULL. Ο κωδικός λόγου σφάλματος μπορεί να ζητηθεί χρησιμοποιώντας τη συνάρτηση GetLastError API. Τα πρωτότυπα και οι λεπτομερείς περιγραφές των παραμέτρων των συναρτήσεων 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
Αποκτήστε μια λαβή σε ένα παράθυρο αναζητώντας το. Χρησιμοποιήστε τις συναρτήσεις FindWindow και FindWindowEx API ή τα κατάλληλα περιτυλίγματα αντικειμένων κλάσης για το πλαίσιο που χρησιμοποιείτε. Το 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.