MFC تحرير مربع - شخصيات متعددة في ضربة المفتاح؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

واني اسعى الى خلق حوار بسيط في MFC باستخدام Visual C ++. مشكلتي هي أنه عندما أحصل على الحوار على الشاشة، ومحاولة كتابة في حقل تحرير بالغرف، إذا أنا اكتب حرف "أ" مرة واحدة، فإنه يظهر في مربع التحرير باسم 'AAAAAAAAAAA "(وهذا 12 ول). وعلاوة على ذلك، إذا حاولت التنقل في جميع أنحاء في المربع باستخدام مفاتيح الأسهم، وقيراط يتحرك 12 حرفا في وقت واحد.

وانها ليست مجرد خطأ العرض، والإخراج من مربع التحرير لا يزال "AAAAAAAAAAAA".

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

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

وشكرا كما هو الحال دائما.

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

المحلول

هل التقاط أي أحداث مثل WM_KEYUP في PreTranslateMessage لديك وظيفة () أو في أي مكان آخر في التطبيق الخاص بك؟

إذا كنت قد تجاوز الافتراضي التعامل مع أحداث لوحة المفاتيح، فإنه قد يتسبب في أعراض كنت ترى.

نصائح أخرى

لتصحيح هذا، إضافة وظيفة PreTranslateMessage إلى الحوار الخاص بك، ونرى بالضبط كم مرة يتم معالجة keydown.

BOOL DialogName::PreTranslateMessage(MSG* pMsg)
{

    if(pMsg->message==WM_KEYDOWN)
    {
        // TODO: see what is going on here
        return TRUE; //do not dispatch this message, so keydown will have no effect
    }

    return CDialog::PreTranslateMessage(pMsg);
}

لسبب هذا يعيد ذكريات غامضة من صراعات مبكرة مع MFC. هل بحثت عن العودية المتبادلة على الإطلاق؟ كنت إلى الأبد تفعل شيئا في بت واحد من التطبيق الذي أرسلت رسالة (دون علم مني) الذي تم انتقاؤها من قبل طريقة أخرى تسمى الطريقة الأولى ...

وتخميني هو انها واحدة من تلك صفعة تلك الجبهة. انه يعطيني هذا الشعور المزعج ديجافو أنني لا يمكن أن تجعل الخرسانة.

واذا كان العودية المتبادلة يجب أن تكون قادرا على رؤية ذلك في مكدس الاستدعاءات، إذا كان يمكنك العثور على المكان المناسب لكسر نقطة.

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

ولقد قمت بتثبيت حزمة الخدمات 2 في بلدي ويندوز إكس بي 64 OS ومشكلة الحصول على حل بالنسبة لي:)

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