Konsep antara muka pengguna di Windows berdasarkan konsep tetingkap. Dialog, butang, panel kawalan, senarai adalah semua tetingkap. Oleh itu, untuk melakukan tindakan dengan elemen antara muka antara aplikasi anda sendiri atau orang lain, anda perlu mendapatkan tetingkap.
Perlu
- - Pakej SDK platform;
- - penyusun.
Arahan
Langkah 1
Dapatkan pemegang ke tingkap dengan membuatnya. Buat panggilan ke fungsi CreateWindow atau CreateWindowEx API, atau panggil kaedah pembungkus yang sesuai (pada objek yang diperlukan) dari kelas kerangka atau perpustakaan yang digunakan yang merangkumi fungsi bekerja dengan tingkap atau kawalan. Fungsi CreateWindow dan CreateWindowEx secara langsung mengembalikan pemegang tetingkap pada penciptaan yang berjaya. Sekiranya dipanggil tidak berjaya, mereka mengembalikan NULL. Kod sebab ralat dapat diminta menggunakan fungsi GetLastError API. Prototaip dan penerangan terperinci mengenai parameter fungsi CreateWindow dan CreateWindowEx boleh didapati dari pautan https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx dan https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Apabila menggunakan kelas dari pelbagai kerangka, penciptaan objek tetingkap sistem operasi boleh berlaku sama ada secara eksplisit (dengan memanggil kaedah) atau secara implisit (pelaksanaan strategi RAII). Oleh itu, lebih baik mendapatkan pemegang tetingkap pada objek yang sudah siap. Anda boleh belajar tentang kaedah kelas yang mengembalikan pemegang tetingkap yang dikemas oleh objek dalam dokumentasi kerangka yang sesuai. Sebagai contoh, dalam MFC, kaedah yang serupa adalah GetSafeHwnd dari kelas CWnd.
Langkah 2
Dapatkan pemegang ke tingkap dengan mencarinya. Gunakan fungsi FindWindow dan FindWindowEx API atau pembungkus objek kelas yang sesuai untuk kerangka yang anda gunakan. FindWindow mengembalikan pemegang ke tetingkap tingkat atas jika dijumpai, atau NULL pada kegagalan. Pencarian dilakukan mengikut nama kelas dan tajuk tetingkap. Penerangan mengenai parameter dan aspek fungsi boleh didapati di pautan https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. fungsi FindWindowEx serupa dengan FindWindow dengan satu-satunya perbezaan ialah mencari windows anak. Dokumentasi untuk FindWindowEx boleh didapati di
Langkah 3
Cari pemegang ke tingkap sambil menyenaraikan set mereka. Gunakan fungsi API EnumWindows, EnumChildWindows, EnumThreadWindows, atau kaedah objek kelas kerangka yang anda gunakan. Fungsi EnumWindows dan EnumChildWindows masing-masing merangkumi tetingkap tingkat atas dan tetingkap anak. Fungsi EnumThreadWindows menghitung semua tetingkap bukan anak dari utas yang ditentukan. Setiap fungsi ini mesti diteruskan penunjuk ke prosedur panggilan balik, yang akan melewati pegangan tetingkap yang dijumpai sebagai parameter semasa operasi. Dengan menggabungkan fungsi penghitungan, mendapatkan dan menganalisis sifat tetingkap dalam prosedur panggilan balik, anda dapat menemukan pegangan tetingkap yang diperlukan. Dokumentasi untuk fungsi yang dijelaskan diberikan di pautan: - 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.
Langkah 4
Dapatkan pemegang ke tetingkap pada koordinat yang diketahui. Fungsi WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx mengembalikan pegangan ke tingkap yang menjadi titik yang ditentukan. Fungsi WindowFromPoint adalah yang paling mudah digunakan, tetapi tidak mengembalikan pemegang untuk tingkap tersembunyi atau dilumpuhkan. Anda boleh mendapatkan dokumentasi penggunaannya di https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Fungsi ChildWindowFromPoint dan ChildWindowFromPointEx mencari pemegang untuk anak tetingkap tetingkap ibu bapa yang diberikan milik titik tertentu. Dalam kes ini, tingkah laku ChildWindowFromPointEx dapat dikendalikan secara fleksibel menggunakan parameter tambahan. Dokumentasi untuk fungsi ini disediakan oleh pautan: - 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.