2009-01-11 13 views
14

मैं एक ऐसा नियंत्रण बनाना चाहता हूं जो उपयोगकर्ता इनपुट को संभालता है, इसलिए मैं अलग-अलग कीबोर्ड को संभालने में सक्षम होना चाहता हूं, और तरीकों में से एक IME का उपयोग कर रहा है।आप आईएमई का उपयोग कैसे करते हैं?

आप इसे संभाल नहीं है, वहाँ एक अस्थायी विंडो प्रकट होता है कि आपके पास IME के ​​सक्रिय (सक्रिय उदाहरण जापानी लेखन के लिए) है। मुझे उन संदेशों को मिला जिनकी देखभाल की जानी चाहिए, लेकिन मुझे नहीं पता कि मैं उन कुंजी को कैसे भेजूं जिन्हें मैं आईएमई में फंस रहा हूं और मुझे वैध रूपांतरित चर कब मिलता है।

उत्तर

21

मैं किसी Microsoft SDE कि (Windows और कार्यालय) थोड़ी देर के लिए कोरियाई IME बनाए रखने के लिए इस्तेमाल किया ...

दुर्भाग्य से सबसे अच्छा IME API दस्तावेज़ गैर- Microsoft साइटों द्वारा प्रदान की जाती है:


यहाँ (माइक्रोसॉफ्ट के क्रेडिट करने के लिए निम्न पिछले दो विंडोज ड्राइवर डेवलपमेंट किट का हिस्सा हुआ करता था) आधिकारिक माइक्रोसॉफ्ट दस्तावेज है:

टेक्स्ट सर्विसेज फ्रेमवर्क (टीएसएफ) के आधार पर एक नया, अधिक उन्नत आईएमई भी है जो माइक्रोसॉफ्ट आपको उपयोग करना पसंद करेगा, लेकिन यह और भी जटिल है और पुरानी एपीआई बहुत अच्छी तरह से नकली है। यदि आपको किसी भी उन्नत सुविधाओं की आवश्यकता नहीं है (जैसे टैबलेट/वॉयस रिकॉग्नाइजेशन/फैनसीयर आईएमई/आदि के माध्यम से इनपुट) तो पुरानी एपीआई का उपयोग करना पर्याप्त है।

टेक्स्ट सेवा फ्रेमवर्क पर सबसे अच्छा दस्तावेज TSF Aware Blog है जो किसी अन्य Microsoft dev द्वारा लिखा गया है। यदि आप इस मार्ग पर जाते हैं तो एरिक ब्राउन व्यक्तिगत रूप से आपके सवालों का जवाब भी दे सकता है।

यहाँ TSF के लिए आधिकारिक माइक्रोसॉफ्ट प्रलेखन है: जो आपके लिए उपयोगी हो सकता है TSF की Text Services Framework (MSDN)

एक विशेषता IME का प्रतिपादन को दबाने के लिए की क्षमता है (पूर्ण स्क्रीन खेल IME खुद को प्रस्तुत करने के लिए जरूरत है कि के लिए की जरूरत है, के लिए उदाहरण)।बस टीएसएफ को बताएं कि आपका ऐप आईएमई जीयूआई प्रस्तुत करेगा, फिर एक खाली प्रतिपादन विधि लागू करें: UILess Mode Overview (MSDN)

+0

यह दयालु है कि पहले चार लिंक सभी नीचे हैं। मुझे अब क्रोमियम स्रोत में * ime_input.h/cc * नहीं मिला - ऐसा लगता है कि उन्होंने स्रोतों को कई फ़ाइलों में विभाजित कर दिया है। – ComFreek

+1

@ कॉमफ्रीक: मुझे ime_input.h/cc के ~ 200 संस्करण मिले और मेरे उत्तर में लिंक अपडेट किए। – Leftium

+0

अपडेट किए गए लिंक: [ime_input.h] (https://chromium.googlesource.com/chromium/chromium/+/8da845c82ec64ba85c8222e61c249244a492bebd/chrome/browser/ime_input.h) [ime_input.cc] (https: //chromium.googlesource। कॉम/क्रोमियम/क्रोमियम/+/8da845c82ec64ba85c8222e61c249244a492bebd/क्रोम/ब्राउज़र/ime_input.cc) – eyelash

0

मुझे नहीं लगता है कि आप प्रदर्शित होने से किसी IME को दबाने के लिए चाहते हैं। मैंने कभी परीक्षण के अलावा एक दूसरे का उपयोग नहीं किया है, लेकिन यह मेरी समझ है कि एक आईएमई एक अंग्रेजी कीबोर्ड का उपयोग कर गैर-अंग्रेजी अक्षरों में प्रवेश करने का अपेक्षित/डिफ़ॉल्ट तरीका है।

यदि आप नियंत्रण लिख रहे हैं और आईएमई का पूरी तरह से समर्थन करना चाहते हैं, तो मुझे लगता है कि आपके पास दो विकल्प हैं जो विभिन्न विंडोज संदेशों (जैसे WM_IME_START_COMPOSITION, WM_IME_COMPOSITION, आदि) का जवाब देना है या टेक्स्ट सेवा फ्रेमवर्क (टीएसएफ)। यह मेरी समझ है कि टीएसएफ भविष्य है, और विस्टा और विंडोज 7 में सभी आईएमई कोड टीएसएफ से अलग हैं, विंडोज़ संदेशों के साथ पुराने कार्यक्रमों के साथ संगतता के लिए अभी भी वहां हैं।