C++ 将char*复制到tchar*

C++ 将char*复制到tchar*,c++,windows,visual-studio,C++,Windows,Visual Studio,我试图将char*指向结构内部的tchar* typedef struct data { int count; TCHAR* msg; COLORREF colour; } DATA, *PDATA; // DATA non-pointer, PDATA pointer pdata = (PDATA)malloc(sizeof(pdata)); pdata->colour = RGB(255, 0, 0); pdata->msg = (TCHAR*)mall

我试图将char*指向结构内部的tchar*

typedef struct data {
    int count;
    TCHAR* msg;
    COLORREF colour;
} DATA, *PDATA; // DATA non-pointer, PDATA pointer

pdata = (PDATA)malloc(sizeof(pdata));
pdata->colour = RGB(255, 0, 0);
pdata->msg = (TCHAR*)malloc(sizeof(TCHAR) * 20);
// copy tchar to tchar in pdata->msg
// I have tried _tcscpy and _tcscpy_s but it is not working
SetWindowLongPtr(hwnd, 0, (LONG)pdata);
然后我试着把数据传过去

(PDATA)GetWindowLongPtr(hwnd, 0);

这是在一个单独的文件中调用的,然后用来显示屏幕上的文本

,那么,你能显示你的字符串复制吗?你确定你不想用C标签代替C++吗?<代码> Maloc(siDeof(pDATA));<代码>将为指针分配空间,而不是为结构分配空间。已修复!pdata=(pdata)malloc(sizeof(DATA));是problem@SpencerPollock:您的标题说您想将
char*
复制到
TCHAR*
中,但您的代码示例说您想将
TCHAR*
复制到
TCHAR*
中。这是两件截然不同的事情。如果要将
char*
TCHAR*
映射复制到
char*
UNICODE
未定义),可以按原样复制。但是,如果
TCHAR*
映射到
wchar\u t*
UNICODE
已定义),则无法按原样复制,必须使用
MultiByteToWideChar()
或等效工具执行运行时数据转换。