أدوات wx:اكتشاف حدث النقر على عناصر التحكم المخصصة

StackOverflow https://stackoverflow.com/questions/98941

  •  01-07-2019
  •  | 
  •  

سؤال

كيفية إضافة مستمع حدث النقر إلى عنصر التحكم المخصص الخاص بي المصنوع باستخدام wxWidgets؟يستخدم عنصر التحكم المخصص wxWindow كقاعدة.في قائمة الأحداث أرى

wxEVT_LEFT_DOWN 
wxEVT_LEFT_UP 
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP 
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN 
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL 

ولكن لا يوجد wxEVT_LEFT_CLICK أو مشابه.

هل كانت مفيدة؟

المحلول

عادةً، لا يوجد حدث "نقر" (وفي حالة wxWidgets - لا يوجد).ينقسم إجراء النقر إلى قسمين:الماوس لأسفل والماوس لأعلى.عادةً ما يتم التعامل مع ما تعتقد أنه حدث "النقر بزر الماوس الأيسر" في حدث "النقر الأيسر لأعلى".

حاول:

  • قم بالتمرير فوق أحد الأزرار (مثل الزر "إضافة تعليق" في هذه الصفحة)
  • انقر فوق زر الماوس الأيسر لأسفل مع الاستمرار
  • حرك الماوس خارج الزر أثناء الضغط باستمرار
  • الافراج عن زر الماوس الأيسر
  • لا شيء يحدث!

هذا الوقت:

  • قم بالتمرير فوق نفس الزر
  • انقر فوق الزر الأيسر لأسفل مع الاستمرار
  • الافراج عن زر الماوس الأيسر
  • يتم تشغيل إجراء "النقر" الذي تتوقعه بواسطة حدث up!

نصائح أخرى

في المقام الأول، أوصي بالوراثة من wxControl وليس wxWindow، فقد تم تصميم wxControl لهذا الغرض تحديدًا ومن غير المرجح أن تجد نفسك تقاتل النظام.عندما أنظر إلى عنصر التحكم الذي أقوم بإنشائه في تطبيق wxWidgets الخاص بي، أرى أن معالج النقر الخاص بي متصل بـ wxEVT_LEFT_DOWN.عند البحث في نسختي من البرمجة عبر واجهة المستخدم الرسومية عبر النظام الأساسي باستخدام wxWidgets، يمكنني رؤية قائمة بجميع أحداث wxMouseEvents، ولا يوجد wxEVT_LEFT_CLICK.أود أن أقترح أن wxEVT_LEFT_DOWN هو الحدث المطلوب استخدامه.

الآن بعد النشر، قرأت إجابة بيرلي وأنا أتفق معه، تقدم wxWidgets الأحداث ذات المستوى الأدنى والتي تمنحك أقصى قدر من التحكم في واجهة المستخدم التي تنشئها للمستخدمين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top