Bir Pencereye Bir Tutamaç Nasıl Alınır

İçindekiler:

Bir Pencereye Bir Tutamaç Nasıl Alınır
Bir Pencereye Bir Tutamaç Nasıl Alınır

Video: Bir Pencereye Bir Tutamaç Nasıl Alınır

Video: Bir Pencereye Bir Tutamaç Nasıl Alınır
Video: PİLELİ SİNEKLİK NASIL YAPILIR 2024, Mayıs
Anonim

Windows'taki kullanıcı arabirimi kavramı, bir pencere kavramına dayanmaktadır. Diyaloglar, butonlar, kontrol panelleri, listelerin hepsi pencerelerdir. Bu nedenle, kendi veya başka birinin uygulamasının arayüzünün herhangi bir öğesiyle herhangi bir işlem gerçekleştirmek için bir pencere tanıtıcısı almanız gerekir.

Bir pencereye bir tutamaç nasıl alınır
Bir pencereye bir tutamaç nasıl alınır

Gerekli

  • - Platform SDK paketi;
  • - derleyici.

Talimatlar

Aşama 1

Oluşturarak pencereye tutamacı alın. CreateWindow veya CreateWindowEx API işlevlerine çağrı yapın veya pencereler veya kontrollerle çalışma işlevselliğini kapsayan kullanılan çerçeve veya kitaplığın sınıflarının uygun sarmalayıcı yöntemlerini (gerekli nesneler üzerinde) çağırın. CreateWindow ve CreateWindowEx işlevleri doğrudan Başarılı oluşturmada pencere tutamacı. Başarısız olarak çağrılırsa, NULL döndürürler. Hata nedeni kodu GetLastError API işlevi kullanılarak istenebilir. CreateWindow ve CreateWindowEx işlevlerinin parametrelerinin prototipleri ve ayrıntılı açıklamaları https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx bağlantılarından elde edilebilir. ve https:// msdn.microsoft.com / tr-us / kitaplık / windows / masaüstü / ms632680% 28v = vs.85% 29.aspx Farklı çerçevelerin sınıflarını kullanırken, işletim sistemi pencere nesnelerinin oluşturulması açık bir şekilde gerçekleşebilir (bir yöntemi çağırarak) veya dolaylı olarak (RAII stratejisinin uygulanması). Bu nedenle, hazır bir başlatılmış nesne üzerinde pencere tutamağını almak daha iyidir. Nesne tarafından kapsanan pencere tutamağını döndüren sınıfların yöntemlerini ilgili çerçevenin belgelerinde öğrenebilirsiniz. Örneğin, MFC'de benzer bir yöntem, CWnd sınıfından GetSafeHwnd'dir.

Adım 2

Arayarak bir pencereye bir tanıtıcı alın. FindWindow ve FindWindowEx API işlevlerini veya kullandığınız çerçeve için uygun sınıf nesne sarmalayıcılarını kullanın. FindWindow, bulunursa üst düzey pencereye bir tanıtıcı veya hata durumunda NULL döndürür. Arama, sınıf adı ve pencere başlığına göre yapılır. Parametrelerin açıklaması ve işlevin yönleri https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx bağlantısında bulunabilir. FindWindowEx işlevi FindWindow'a benzer, tek farkı alt pencereleri aramasıdır. FindWindowEx belgelerine https://msdn.microsoft.com/en-us/library/windows/desktop/ms6335000%28v=vs.85%29.aspx adresinden ulaşılabilir.

Aşama 3

Setlerini listelerken pencerenin tutamağını bulun. API işlevlerini EnumWindows, EnumChildWindows, EnumThreadWindows veya kullandığınız çerçevenin sınıf nesnelerinin yöntemlerini kullanın. EnumWindows ve EnumChildWindows işlevleri sırasıyla üst düzey pencereleri ve alt pencereleri numaralandırır. EnumThreadWindows işlevi, belirtilen iş parçacığının tüm alt olmayan pencerelerini numaralandırır. Bu işlevlerin her biri, işlem sırasında bulunan pencerelerin tutamaçlarından parametre olarak geçirilecek olan bir geri arama prosedürüne bir işaretçi iletilmelidir. Sayılandırma işlevlerini birleştirerek, geri arama prosedüründe pencere özelliklerini alarak ve analiz ederek, tutamacı bulabilirsiniz. gerekli pencere. Açıklanan işlevlerin belgeleri bağlantılarda verilmiştir: - 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/masaüstü /ms633495%28v=vs.85%29.aspx.

4. Adım

Bilinen koordinatlarda bir pencereye bir tanıtıcı alın. WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx işlevleri, belirtilen noktanın ait olduğu pencerelere tanıtıcı döndürür. WindowFromPoint işlevi, kullanımı en kolay olanıdır, ancak gizli veya devre dışı bırakılmış pencereler için tanıtıcı döndürmez. Kullanımıyla ilgili belgeleri https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx adresinde bulabilirsiniz. ChildWindowFromPoint ve ChildWindowFromPointEx işlevleri çocuk için tanıtıcı bulur Belirli bir noktaya ait belirli bir ana pencerenin pencereleri. Bu durumda, ChildWindowFromPointEx'in davranışı, ek bir parametre kullanılarak esnek bir şekilde kontrol edilebilir. Bu işlevlerin belgeleri şu bağlantılarda sağlanır: - 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.

Önerilen: