PDA

View Full Version : cost LPWSTR to char *



meysamg_alone
شنبه 26 اردیبهشت 1388, 00:25 صبح
سلام به همه
من یه سری کد تویه پروژه خودم می ریزم این کد ها تویه سیستم دوستم جواب میده ولی تویه سیتم من خطا میگیره تویه کل پروژه من به جایه LPSTR از LPWSTR استفاده کینه یعنی همه متغیر ها تویه حالت یونی کد تعریف میشن من می خواستم بدونم که چه طور میشه این رفتار سیستم رو عوض کرد یا رفتار برنامه رو عوض کرد یا اصلا راه cost کردن این متغیر چه جوری هست من که به شکل ساده کاست می کنم خطا نمییره ولی خوب نوشته بد میوفته ممکنه یه توضیعی بدین ممنون
برایه این که منظور خودمو واضع تر بگم مثلا messagebox دو حالت داره messageboxA و messageboxW خوب تویه سیستم من messagebox = messageboxW هست ولی من می خوام که messagebox = messageboxA بشه .
فکر کنم که وضع گفته باشم منظورمو :لبخندساده:

adinochestva
شنبه 26 اردیبهشت 1388, 00:46 صبح
ازWideCharToMultiByte() استفاده کن.
درضمن cast نه cost !

Nima_NF
شنبه 26 اردیبهشت 1388, 01:23 صبح
اگر قرار هست به جای یونیکد کدها نوع اسکی را استفاده کنید، همیشه به جای اینکع مستقیم از W یا انواع یونیکد استفاده کنید، از انواعی استفاده کنید که با تغییر تنظیمات کامپایلر خود به خود آن نوع را انتخاب کند و کامپایل کند.

مثلا :
- همیشه TCHAR برای رشته ها (به جای char یا wchar_t)
- همیشه تمام رشته ها با _T یا TEXT همراه باشد.
- همیشه توابع را بدون A یا W استفاده کنید.
- همیشه از LPTSTR برای رشته ها (به جای LPWSTR یا LPSTR)
- و ...

به این شکل، به منوی project و سپس properties بروید، در قسمت general نوع character set را unicode یا Multi-byte تنظیم کنید (برای هر دو حالت release و debug) تا برای همان نوع توابع فراخوانی و کامپایل شود.

meysamg_alone
شنبه 26 اردیبهشت 1388, 13:10 عصر
به این شکل، به منوی project و سپس properties بروید، در قسمت general نوع character set را unicode یا Multi-byte تنظیم کنید (برای هر دو حالت release و debug) تا برای همان نوع توابع فراخوانی و کامپایل شود
درست شد
ممنون

meysamg_alone
شنبه 26 اردیبهشت 1388, 13:13 عصر
ازWideCharToMultiByte() استفاده کن
میشه یه مثال بزنین این تابع گیج کننده هست من یه تازه کارم متوجه نمیشم