ماذا يحدث عندما "يرفع" القلم على جهاز الكمبيوتر اللوحي؟

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

سؤال

أنا أعمل على مشروع تراث في VC++/Win32/MFC.في الآونة الأخيرة أصبح من الضروري أن يعمل التطبيق على ملف حاسوب لوحي, ، وكان هذا إيذانا بظهور مجموعة من القضايا الجديدة.لقد تمكنت من العمل مع هذه القضايا وحولها، ولكن لا يزال لدي واحد يمكنني من خلاله استخدام بعض اقتراحات الخبراء.

لدي خطأ معين ناتج عن "رفع" القلم عن السطح النشط.في الأساس، يختفي مؤشر الماوس ثم يظهر مرة أخرى عند "الضغط" عليه مرة أخرى على الشاشة.

ومن المنطقي أن هذا غير محسوب في التطبيق.لا يمكنك يرفع المؤشر على جهاز كمبيوتر سطح المكتب.لذا فإن ما أبحث عنه هو نظرة عامة جيدة على ما يحدث (فيما يتعلق برسائل Windows، وما إلى ذلك) عند حدوث المصعد.هل يُترجم هذا إلى مجرد التركيز على التغييرات وأحداث تمرير الماوس؟يبدو أن خطأي يتضمن أيضًا تغييرات في المؤشر (قد لا يكون مرتبطًا بالرفع).من المؤكد أن "الرفع" غير المتوقع يؤدي إلى كسر حالة معالجة أداة التطبيق.

لذا فإن الأسئلة الملموسة هي:

  1. ماذا يحدث عندما يحدث "رفع" القلم؟الصحافة؟
  2. ما هي مكالمات API التي يمكن استخدامها لاكتشاف ذلك؟هل يترجم فقط إلى رسائل قياسية مع تعيين العلامات/القيم؟
  3. ما هي الطريقة الجيدة لاختبار/محاكاة ذلك عندما يكون جهاز الكمبيوتر الذي تستخدمه للتطوير عبارة عن سطح مكتب؟هل أنا أطير أعمى هنا؟(ليس لدي سوى إمكانية الوصول الدوري إلى جهاز الكمبيوتر اللوحي)
  4. ما الذي يمثل السلوك الصحيح أو أفضل الممارسات للتوعية بقلم الكمبيوتر اللوحي؟

شكرا على اعتبارك ، ee

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

المحلول

باعتباري مستخدمًا للكمبيوتر اللوحي، يمكنني الإجابة على بعض أسئلتك.

أولاً:

لا يمكنك بسهولة الحفاظ على "تركيز لوحة المفاتيح" على النافذة عندما يتعين على القلم الخروج من النافذة التي تم التركيز عليها للضغط على مفتاح على لوحة المفاتيح الافتراضية.

تسمح معظم لوحات المفاتيح الافتراضية التي استخدمتها (لوحة إدخال الكمبيوتر اللوحي التي تعمل بنظام Windows وواحدة ضمن ubuntu) للبرنامج الذي يكتبون فيه بالحفاظ على "تركيز لوحة المفاتيح".

ماذا يحدث عندما يحدث "رفع" القلم؟الصحافة؟

في نظام Windows، تنخفض قيمة الضغط، ولكن خارج ذلك لا يوجد أي حدث.(لا أعرف عن لينكس.)

ما هي مكالمات API التي يمكن استخدامها لاكتشاف ذلك؟هل يترجم فقط إلى رسائل قياسية مع تعيين العلامات/القيم؟

كما ذكر أعلاه، إذا كان بإمكانك الحصول على قيمة الضغط، فيمكنك استخدامها.

ما هي الطريقة الجيدة لاختبار/محاكاة ذلك عندما يكون جهاز الكمبيوتر الذي تستخدمه للتطوير عبارة عن سطح مكتب؟هل أنا أطير أعمى هنا؟(ليس لدي سوى إمكانية الوصول الدوري إلى جهاز الكمبيوتر اللوحي)

عندما يتم وضع القلم في مكان آخر، تتغير الإحداثيات العامة للمؤشر، لذلك، يمكنك محاكاة حركة المؤشر المفاجئة بأي شيء يسمح لك بتغيير قيم المؤشر العامة.(فئة Robot في Java تجعل هذا الأمر سهلاً إلى حد ما.)

ما الذي يمثل السلوك الصحيح أو أفضل الممارسات للتوعية بقلم الكمبيوتر اللوحي؟

أنصحك بقراءة ما تقوله Microsoft، حيث يحتوي موقع MSDN على عدد من المقالات الممتازة.(http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) سأشير إلى أن حجم الأزرار في تطبيقاتك يحدث فرقًا كبيرًا.

نأمل أن يكون هذا عونا.

نصائح أخرى

كما أفهمها، لا يوجد حدث "رفع" -- الحدث الوحيد يحدث عند إعادة القلم إلى الشاشة لاحقًا.بالطبع، هذا يعتمد على برنامج التشغيل الخاص بك وما إلى ذلك.

والأسوأ من ذلك هو أن الخطأ الذي تصفه قد يكون قابلاً للتكرار باستخدام ماوس نموذجي فقط.حاول تحريك الماوس بأسرع ما يمكن - فمن المؤكد أنه سيقفز عدة بكسلات مرة واحدة.أو حتى العشرات أو المئات، إذا قمت بتكوين إعدادات الماوس لأعلى سرعة للمؤشر.تحديث واحد، قد يكون الماوس عند 100,100.التحديث القادم قد يصل إلى 200.300.

في نظام Windows، تنخفض قيمة الضغط، ولكن خارج ذلك لا يوجد أي حدث.(لا أعرف عن لينكس.)

ضمن Linux ستحصل على "ProximityEvents"

على الأرجح أن هذه الأحداث WT_PROXIMITY متاحة في النوافذ (يرجى الرجوع إلى: http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

@Greg - توضيح، هذا جهاز كمبيوتر محمول مزود بجهاز لوحي مدمج وقلم مدمج.لا يحتوي الجهاز على لوحة مفاتيح مخصصة (وهي لوحة افتراضية على شاشة اللمس) وليس جهاز إدخال wacom.اسف لخلط الامور.

ويبدو أن هناك SDK لإصدار Microsoft Windows XP Tablet PC Edition الذي قد يكون لديه القدرة على الحصول على تفاصيل خاصة مثل الضغط.ومع ذلك، أعلم أنه يجب أن يكون هناك مستوى معين من التوافق القياسي مع التطبيقات الموجودة غير المخصصة للأجهزة اللوحية.أعتقد أنه يمكنني محاولة تثبيت Spy++ على الجهاز اللوحي ومحاولة التصفية وصولاً إلى رسائل/أحداث محددة.

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