2012-12-19 16 views
8

मैं विंडोज प्रोग्रामिंग के लिए काफी नया हूं। मैं खिड़की का नाम पुनः प्राप्त करने की कोशिश कर रहा हूं।charWindowText char []

char NewName[128]; 
GetWindowText(hwnd, NewName, 128); 

मुझे एक char [] का उपयोग करने की आवश्यकता है लेकिन यह मुझे गलत प्रकार की त्रुटि देता है।
जो मैंने पढ़ा है, उससे एलपीडब्लूआरआर एक प्रकार का char * है।

के साथ मैं char[] का उपयोग कैसे कर सकता हूं?

बहुत बहुत धन्यवाद! या तो

+0

एलपीडब्लूआरआर का अर्थ है वाइड स्ट्रिंग के लिए लांग पॉइंटर, यानी विस्तृत वर्णों से बना एक स्ट्रिंग, 'wchar_t' प्रकार,' char' नहीं। –

+0

आप कहते हैं कि आपको एक char [] 'का उपयोग करने की आवश्यकता है, आपका कारण क्या है? –

+0

नया नाम strcmp के साथ प्रयोग किया जाता है। – MaT

उत्तर

11

आप शायद एक यूनिकोड परियोजना संकलन कर रहे हैं, तो आप कर सकते हैं:

  • स्पष्ट रूप से समारोह (GetWindowTextA) की एएनएसआई संस्करण कॉल करें, या
  • उपयोग wchar_t बजाय char (LPWSTR के लिए सूचक है wchar_t)
1

आधुनिक विंडोज प्रोग्रामिंग के लिए (इसका मतलब है, वर्ष 2000 के बाद जब माइक्रोसॉफ्ट ने विंडो के लिए यूनिकोड के लिए परत प्रस्तुत किया एस 9 एक्स), आप "यूनिकोड" का उपयोग करके बहुत बेहतर हैं, जो विंडोज़ में सी ++ में wchar_t का उपयोग करना है।

char के बजाय wchar_t का उपयोग करें, और std::string के बजाय std::wstring का उपयोग करें।

<windows.h> समेत UNICODE को परिभाषित करना याद रखें। NOMINMAX और STRICT को परिभाषित करना भी एक अच्छा विचार है। हालांकि आजकल बाद में डिफ़ॉल्ट रूप से परिभाषित किया गया है।

1

या तो ए (एएनएसआई) या डब्ल्यू (चौड़ा चार) जोड़कर एक स्पष्ट संस्करण निर्दिष्ट किए बिना विंडोज एपीआई को कॉल करते समय आपको हमेशा TCHAR का उपयोग करना चाहिए। TCHARUNICODE#define डी या नहीं के आधार पर सही प्रकार पर मानचित्र करेगा।