سؤال

وأنا أعمل على تطبيق وثيقة وجزء من هذا التطبيق لقد لإضافة دعم لقراءة لوحة المفاتيح ضغط الأحداث واستبدال الأحرف محددة مسبقا تحديد إذا كان هذا إدخال لوحة المفاتيح وهي المباراة مع شكل ما قبل defind قصيرة / word.The نفذت التطبيق الفعلي في C ++.

يرجى تزويدي أفكارك حول كيفية تنفيذ ذلك. هل هناك أي برنامج عينة C ++ للرجوع إليها؟ خوارزمية / المفاهيم؟

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

المحلول

وستاندرد C ++ لا يدعم الأحداث بضغطة، لذلك سيكون لديك للنظر في أي وظيفة OS، أو وظيفة الإطار. الأطر المحمولة C ++ مثل كويدغيتس أو كيو تي الأحداث الدعم بضغطة على ويندوز وماك ولينكس.

نصائح أخرى

وتعلم كيفية التقاط الأحداث keydown باستخدام كويدغيتس المعهد، ربما هنا: http://docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#eventhandlingoverview إيلاء الاهتمام ل . تنفيذ التحول في C ++ لمعرفة ما تركيبة المفاتيح تم الضغط، وتعيين النص إلى تحرير وفقا لذلك. ما أنا أفكر هنا هو لتحويل CTRL-SHIFT-A بضغطة إلى نص مثل الضغط على مفتاح Ctrl التحول واحد في مربع التحرير.

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

إذا كنت تحت ويندوز يمكنك استخدام استدعاء API GetAsyncKeystate ومراقبة التغييرات، أو استخدام السنانير لوحة المفاتيح على مستوى منخفض (قليلا أكثر تعقيدا) (وظائف CreateHookEx + ذات الصلة).

وتحت DOS (أو ربما لينكس) يمكنك استخدام _kbhit في conio.h في وضع وحدة التحكم، وعادة ما تلتصق هذه في حلقة (بينما (_ kbhit ())؛!) ل"اضغط على أي مفتاح للمتابعة"، ولكن باستخدام _getch يمكن استرداد المفتاح الذي تم الضغط

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