2009-04-07 17 views
6

को विस्तृत तार का उपयोग करते समय मैं अपने दृश्य स्टूडियो परियोजना यह मेरे सभी कार्यों जो चरित्र तार ले के लिए विस्तृत तार का उपयोग करने के लिए मजबूर कर रहा करने के लिए चूक बनाया से एक दृश्य स्टूडियो परियोजना परिवर्तित। संदेशबॉक्स() उदाहरण के लिए, एक कॉन्स char * के बजाय एक एलपीसीडब्लूआर लेता है। जबकि मैं समझता हूं कि यह बहुभाषी और पोर्टेबल अनुप्रयोगों के लिए बहुत अच्छा है, यह मेरे सरल छोटे ऐप के लिए पूरी तरह से अनावश्यक है। काफी स्पष्ट रूप से, यह मेरे सभी तारों के चारों ओर टेक्स्ट() को लगातार टाइप करने के लिए दर्द का अधिक दर्द है।कैसे आप साधारण तार

क्या कोई संकलक विकल्प, परिभाषित या परियोजना की स्थापना जो मैं अपने दृश्य स्टूडियो परियोजना में इसे ठीक करने को बदल सकते हैं?

उत्तर

14

सही अपनी परियोजना पर क्लिक करें -> गुण उसके बाद निम्न ट्री आइटम पर जाएँ:

विन्यास गुण -> सामान्य

यूनिकोड के लिए का चयन करें:
उपयोग यूनिकोड वर्ण स्ट्रिंग्स

चयन सामान्य मल्टी-बाइट के लिए:
उपयोग बहु बाइट वर्ण सेट

जब आप TEXT() या _T() अपने तार के आसपास डाल, तो आप इसे चरित्र स्ट्रिंग विकल्पों में से दोनों के साथ संगत कर रहे हैं। यदि आप Use multi-byte character set चुनते हैं तो आपको अपने तारों के आस-पास कुछ भी चाहिए नहीं। यदि आप Use unicode character set चुनते हैं, तो आपको कम से कम एल को अपने तारों के सामने चाहिए। MessageBoxW करने के लिए MessageBox नक्शे:

Use Unicode Character Strings का चयन करके आप डिफ़ॉल्ट Win32 एपीआई कि डब्ल्यू उदाहरण में खत्म हो के सभी का उपयोग करके भी कर रहे हैं।

जब आप Use multi-byte character set चुनते हैं तो आप डिफ़ॉल्ट रूप से सभी Win32 API का उपयोग करके डिफ़ॉल्ट रूप से भी होते हैं। उदाहरण: MessageBox मानचित्र MessageBoxA पर।

1

यह ध्यान देने योग्य है कि आप स्पष्ट रूप से फार्म की व्यापक चरित्र स्ट्रिंग शाब्दिक घोषणा कर सकते हैं लायक है:

WCHAR *s = L"Hello Wide World."; 

जो मैक्रो पाठ() या _T() की तुलना में कम कीस्ट्रोक्स आवश्यकता है, लेकिन जो एक विस्तृत चरित्र कर देगा स्ट्रिंग भले ही यूनिकोड परिभाषित नहीं किया गया हो।

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