السلام عليكم
كثيرا من بارامترات التوابع تحتاج الى قيم من النوع LPTSTR وLPWSTR و LPCTSTR أعرف أن هذه مؤشرات الى سلاسل نصية من النمط UNICODE ولكن المشكلة عدم قدرتي على تعريف هذا النوع جربت أن أعرف مؤشر من النمط char ليستخدم في تابع يطلب بارامتر من النوع LPTSTR
مثلا
#include "iostream.h"
#include "windows.h"
char* getname()
{
char* pStr = new char[50];
GetUserName(pStr,(LPDWORD)strlen(pStr));
return pStr;
}
int main()
{
cout< return 0;
}والنتيجة طباعة أحرف غير مفهومة
جربت ايضا استخدام wchar_t بدل char واضافة W الى الدالة كما يلي
#include "iostream.h"
#include "windows.h"
wchar_t* getname()
{
wchar_t* pStr = new wchar_t[50];
GetUserNameW(pStr,(LPDWORD)wcslen(pStr));
return pStr;
}
int main()
{
cout< return 0;
}والنتيجة طباعة عنوان ذاكرة
أرجوا توضيح الطريقة الصحيحة لتعريف هذه الأنواع
سؤال أخر
أكثر التوابع تكون بصيغتين صيغة تستخدم مع ال ANSI ويكون أخر التابع حرف A وصيغة تستخدم للUNICODE ويكون أخر التابع حرف W فلماذا لم يعمل التابع بشكل صحيح عند كتابته بالشكل GetUserNameA مع ان سلسلة الحروف من النوع ANSI ، أرجوا تصحيحي ان كنت مخطئ .
أرجوا توضيح ذلك أيضا
وشكرا (f)