PDA

View Full Version : تبدیل dword به lpstr



vasilopita
جمعه 06 آبان 1390, 00:12 صبح
سلام دوستان. فرض کنید یه داده dword داریم که نیازه به lpstr تبدیل بشه. یعنی مثلا فرض کنید می خوام توی
MessageBoxA() بجای یه رشته یه عدد رو چاپ کنم. چیکار باید بکنم؟ همینجوری که نمیشه نوشت:
DWORD x1;
LPSTR x2;
x2=x1;// or x2=(LPSTR)x1
تازه تو تابع messageboxA ، چیزی که داریم lpcstr هستش نه lpstr
کمک کنید لطفا
ممنون

mehdi.mousavi
شنبه 07 آبان 1390, 19:48 عصر
سلام.
می تونید بدین شکل عمل کنید:


WCHAR szResult[64] = {NULL};

DWORD dwValue = 0xFFFF;
_ultow_s(dwValue, szResult, 10);

MessageBox(NULL, szResult, L"CAPTION", MB_OK);


دقت کنید که من از _ultow استفاده نکردم، چون این تابع از دید SDL منقضی شده و باید از نسخه Secure اون استفاده کرد.

موفق باشید.

پاورقی: _ultoa_s به شما یک CHAR * میداره، اگر WCHAR * نمیخواهید!

Mokhless
دوشنبه 09 آبان 1390, 00:00 صبح
یادمه توی کتاب Windows Programming Charlz petzold از _vsntprintf() استفاده شده بود واسه اینکار !

mehdi.mousavi
دوشنبه 09 آبان 1390, 11:27 صبح
یادمه توی کتاب Windows Programming Charlz petzold از _vsntprintf() استفاده شده بود واسه اینکار !

سلام.
بله، از این تابع هم میشه استفاده کرد. از تابع stprintf_s_ هم میشه استفاده کرد:


DWORD dwValue = 0xFFFF;
TCHAR szResult[64] = {NULL};
_stprintf_s(szResult, sizeof(szResult), _T("%lu"), dwValue);

MessageBox(NULL, szResult, L"CAPTION", MB_OK);

همه اینها بستگی داره که چه هدفی رو دنبال کنیم... اگر هدف فقط ایجاد یک رشته برای نمایش باشه، من stprintf_s_ رو ترجیح میدم.

موفق باشید.