كيفية الحصول على مقبض للنافذة

جدول المحتويات:

كيفية الحصول على مقبض للنافذة
كيفية الحصول على مقبض للنافذة

فيديو: كيفية الحصول على مقبض للنافذة

فيديو: كيفية الحصول على مقبض للنافذة
فيديو: Euro Cylinder - Key on the Inside 2024, يمكن
Anonim

يعتمد مفهوم واجهة المستخدم في 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.

موصى به: