ورود

View Full Version : سؤال در مورد لیست باکس ها ی mfc کمکم کنید...



yasi.88
دوشنبه 16 شهریور 1388, 11:27 صبح
با سلام و خسته نباشید. خواهش می کنم کمک کنید .من در کنترل لیست باکس مشکل پیدا کردم.تو کتابها می گن باید ورودی تابع باید رشته باشه...اما برنامه ی من در این تابع اشکال می گیره که باید از نوع LPCTSTR باشه نه رشته...من این نوع داده رو در msdn دنبال گشتم در مورد این یه چیزایی نوشته بود که نفهمیدم...کمکم کنید خواهش می کنم.اینم کدش:


char s[16];
for(i=0;i<10;i++)
{
_itoa_s(a[i],s,10);
list2.AddString(s);
}

Nima_NF
دوشنبه 16 شهریور 1388, 19:36 عصر
در MFC باید از رشته CString استفاده کنید.

در هر حال اگر خواستید با رشته های استاندارد کار کنید، باید با توجه به کامپایلر این کار را انجام دهید. در نسخه های جدید ++Visual C یونیکد هست، یعنی به جای char باید از TCHAR که همان wchar_t هست استفاده کنید:



TCHAR myStr[12] = L"text"


در کل توصیه می کنم وقتی از کلاس های MFC استفاده می کنید تا جای ممکن از CString استفاده کنید تا درگیر جزییات نشوید.


برای جزییات بیشتر FAQ بخش را مطالعه کنید، بارها بحث کار با رشته ها توضیح داده شده است.

yasi.88
سه شنبه 17 شهریور 1388, 03:59 صبح
از اینکه جوابمو دادید ممنونم اما منم CStringگذاشتم اما بازم میگه ورودی فقط باید از نوع LPCTSTRباشه...یعنی من جایی اشتباه کردم ؟

Nima_NF
سه شنبه 17 شهریور 1388, 16:24 عصر
شما وقتی دارید با CString و کلاس های MFC کار می کنید و وقتی با توابع استاندارد C کار می کنید متفاوت هست.

وقتی از CString می کنید برای راحتی کار از متد های همان کلاس CString استفاده کنید مانند format تا عدد را به رشته تبدیل کنید.

در غیر این صورت برای itoa باید از itot استفاده کنید که معادل یونیکد آن هست. پس برای اینکه درگیر نشوید به جای itot از همان کلاس های MFC استفاده کنید:



CString str;
int num = 543;

str.Format (_T("%i"), num );
list2.AddString(str);

//or

int num;
TCHAR myStr[12] = L"text";
_itot_s(num, myStr, 12, 10);

ضمنا LPCTSTR هیچ چیز خاصی نیست جز یک نام برای همان رشته های استاندارد:



#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif


typedef CONST WCHAR *LPCWSTR;


typedef wchar_t WCHAR;


typedef __nullterminated CONST CHAR *LPCSTR;

typedef char CHAR;

مثال های بیشتر برای کار با رشته ها:
http://barnamenevis.org/forum/showthread.php?t=99476
http://barnamenevis.org/forum/showthread.php?t=105390
http://barnamenevis.org/forum/showthread.php?t=101552

yasi.88
شنبه 21 شهریور 1388, 04:00 صبح
واقعا ممنون که کمکم کردید. اطلاعاتم خیلی بیشتر شد.