2011-09-14 8 views
9

Win32 API फ़ंक्शन को कॉल करने में क्या अंतर है जिसमें W वर्ण के विपरीत A वर्ण अंत में जोड़ा गया है।Win32 API में 'ए` और' W` फ़ंक्शंस के बीच क्या अंतर है?

मुझे पता है कि इसका मतलब है ASCII और WIDE CHARACTER या यूनिकोड, लेकिन आउटपुट या इनपुट में क्या अंतर है?

उदाहरण के लिए, अगर मैं GetDefaultCommConfigA को कॉल करता हूं, तो क्या यह मेरी COMMCONFIG संरचना को WCHAR तारों के बजाय ASCII स्ट्रिंग के साथ भर देगा? (या GetDefaultCommConfigW के लिए इसके विपरीत)

दूसरे शब्दों में, मैं कैसे पता है कि स्ट्रिंग एन्कोडिंग में, ASCII या यूनिकोड है करते हैं, यह समारोह मैं A या W फोन के वर्शन के अनुसार होना चाहिए? सही बात?

मुझे यह question मिला है, लेकिन मुझे नहीं लगता कि यह मेरे प्रश्न का उत्तर देता है।

उत्तर

18

A कार्यों इनपुट और आउटपुट के रूप में एएनएसआई (नहीं ASCII) तार का उपयोग करें, और W कार्यों के बजाय यूनिकोड स्ट्रिंग का उपयोग (NT4 पर यूसीएस -2 और पहले, UTF-16 W2K पर और बाद में)। अधिक जानकारी के लिए Refer to MSDN

+4

+1 - यह भी ध्यान में रखना एक और बात यह है कि इन सभी के लिए पैरामीटर के रूप में पारित सभी संरचनाएं ए और डब्ल्यू संस्करणों में भी आती हैं; इसलिए उदाहरण के लिए RegisterClassExA एक WNDCLASSEXA लेता है जो एएनएसआई एलपीसीआरटी का उपयोग करता है, और डब्ल्यू संस्करण एलपीसीडब्लूएस का उपयोग करते हैं - यह आपको WCHARs को ए संस्करण में पास करने से रोकता है, और इसके विपरीत - यदि आप कोशिश करते हैं, तो आपको उन प्रकारों के बारे में एक कंपाइलर त्रुटि मिल जाएगी मिलान - एक सामान्य आम शुरुआत त्रुटि कास्ट का उपयोग करने के लिए कोड को बदलने के बजाय कोड को बदलने के बजाय "दूर जाना" त्रुटि बनाने के लिए कास्ट का उपयोग करना है। – BrendanMcK

संबंधित मुद्दे