PDA

View Full Version : Error این کد کجاست ؟



Sharif Lotfi
جمعه 09 فروردین 1387, 20:53 عصر
با سلام
من با ویژوال سی ++ 2005 شروع به برنامه نویسی کردم . یه پروژه MFC Application ساختم از نوع Dialog Based توی متد کلیک مربوط به دکمه OK یه MessageBox نوشتم :


void Cmy1Dlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
MessageBox ("This is test...");
OnOK();
}

بعد از اجرا این Error رو میده :


error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [16]' to 'LPCTSTR'

کتاب آموزش ویژوال سی 6 رو دارم . ولی هر چی میگردم نمیدونم اشکال کار کجاست (شاید 2005 فرق کرده)
از دوستان اگه کتاب آموزش (انگلیسی یا فارسی مربوط به 2005 رو داشتین به ایمیلم بفرستین ، لطفاً p_d_1382@yahoo.com)
اگه راهنمایی خاصی هم به ذهنتون میرسه لطفا بگین . خیلی ممنونم

Nima_NF
جمعه 09 فروردین 1387, 21:52 عصر
در ویژوال استادیو سری های جدید نوع پروژه به صورت Unicode کامپایل خواهد شد و در هر جای برنامه که از توابع استفاده می کنید از سری xxxW آن استفاده خواهد کرد و لذا هر جا که نوشته ای به کار می برید باید از نوع یونیکد باشد.

به عنوان مثال با استفاده از 2 مورد اول زیر، نوشته شما با توجه به تنظیمات پروژه یونیکد یا اسکی می شود و یا در مورد سوم صراحتا یونیکد ذخیره خواهد شد:



MessageBox ( _T("This is test...") );

MessageBox ( TEXT("This is test...") );

MessageBox ( L"This is test..." ); // just use unicode


اگر هم نمی خواهید یونیکد باشد چند را دیگر هم دارید، یا از تنظیمات پروژه شما در منوی project نوع کامپایل را به غیر یونیکد تغییر دهید تا به صورت اسکی کامپایل شود.
و یا هر جا که نمی خواهید تابع خاصی یونیکد کامپایل شود از نوع xxxA تابع استفاده کنید مثلا:



MessageBoxA ("This is test...");