BUG: معالج الرسائل BN_DOUBLECLICKED بإصابة غير مربع الحوار MFC

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

اضغط هنا لرابط المقالة باللغة الانجليزية247323
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
على Windows CE باستخدام فئات MFC عند إضافة معالج رسالة BN_DOUBLECLICKED لزر على مربع حوار أو إطار ، المعالج لا يسمى عند النقر المزدوج فوق الزر. يتم استدعاء المعالج على نظام التشغيل Microsoft Windows 95 و Microsoft Windows 98 Microsoft Windows NT 4.0 و Microsoft Windows 2000.
السبب
كانت هذه المشكلة بسبب خطأ في نظام التشغيل Windows CE.
الحل
دقة ممكنة واحدة إضافة معالج BN_CLICKED لهذا الزر. من داخل المعالج ، استخدام تعليمة برمجية مشابهة لما يلي لاختبار ما إذا كان الزر تم النقر فوقه في آخر مللي ثانية قليلة:
  static BOOL s_bLastClicked = TRUE;  static DWORD s_dwTickCount = 0;  if (s_bLastClicked)  {    DWORD dwTickCount = GetTickCount();    if ((dwTickCount - s_dwTickCount) < 500) //Last click less than 500ms?    {      s_bLastClicked = FALSE; //Was double-clicked, don't test next time...      //Assume a double click...      //Do your double-click code here...    }    s_dwTickCount = dwTickCount;  }  else     s_bLastClicked = TRUE;				
يدوياً إضافة CS_DBLCLKS إلى نمط فئة الإطار وإضافة BS_NOTIFY نمط على الزر لا ساعدك. على الرغم من ذلك، تسمح هذه العملية اليدوي الرسالة لإرسالها عند تشغيلها على الأنظمة الأساسية الأخرى بالإضافة إلى Windows CE.
تصريح
أقرت Microsoft أن هذا خطأ في منتجات Microsoft المسردة في بداية هذه المقالة.
معلومات أخرى

خطوات إعادة إنشاء السلوك

  1. إنشاء تطبيق جديد يستند إلى الحوار باستخدام AppWizard MFC WCE. تقبل كافة القيم الافتراضية وانقر فوق إنهاء.
  2. في أسلوب OnInitDialog بإضافة التعليمة البرمجية التالية قبل عبارة الإرجاع:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. إضافة زر إلى مربع الحوار. انقر بزر الماوس الأيمن فوق الزر ثم انقر فوق خصائص. انقر فوق علامة التبويب أنماط ثم حدد خانة الاختيار الإعلام.
  4. استخدم ClassWizard عن طريق النقر فوق القائمة عرض تحديد عنصر القائمة ClassWizard. ضمن المقطع "معرفات كائن" ، انقر فوق IDC_BUTTON1. ضمن المقطع "الرسائل" ، انقر فوق الرسالة BN_DOUBLECLICKED. انقر فوق إضافة دالة ثم انقر فوق تحرير التعليمات البرمجية.
  5. ضع نقطة فاصل في معالج الرسالة BN_DOUBLECLICKED لهذا الزر.
  6. لإنشاء التطبيق وتشغيله فوقه عند الانتهاء من إنشاء.
يجب أن تلاحظ أن نقطة الإيقاف لا الحصول على إصابة عند التشغيل في عن بروتوكول المضاهاة أو عند تشغيلها على الجهاز. إذا قمت بإجراء الخطوات السابقة في أحد تطبيقات Win32 لا يعمل على Windows CE المعالج يعمل كما هو متوقع.
انقر نقراً مزدوجاً CE معينة WM_LBUTTONUP WM_LBUTTONDOWN BN_DOUBLECLICKED BN_CLICKED WM_LBUTTONDBLCLK

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 247323 - آخر مراجعة: 02/23/2014 01:18:55 - المراجعة: 2.0

Microsoft Windows CE Toolkit لـ Visual C++ 6.0

  • kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 KbMtar
تعليقات