我是Win Forms编程的新手,并尝试了一切可能的方法,但无济于事。我的问题是将文本框的内容放入WCHAR *缓冲区,如下所示:
String^ strTemp = tbSrc->Text; // tbSrc is a simple textbox
TCHAR* tszTemp = new TCHAR[strTemp->Length + 1]; // Allocate TCHAR buffer
strTemp->CopyTo(0, tszTemp, 0, strTemp->Length);
// **Won't compile as tszTemp is not an array type**
tszTemp[strTemp->Length] = NULL;
...
这个例子显然不起作用。我插入了CopyTo来说明我的问题。我不知道如何解决这个问题。有人可以提供一些帮助。非常感谢。
答案 0 :(得分:0)
假设你正在编译一个UNICODE项目(即TCHAR
是wchar_t
),你可以做这样的事情
String^ strTemp = tbSrc->Text; // tbSrc is a simple textbox
// use marshalling to get wchar_t
IntPtr pString = Marshal::StringToCoTaskMemAuto(strTemp);
wchar_t *szWideChar = (wchar_t*)pString.ToPointer();
// ... do what you want with szWideChar here ...
// free the marshalled object
Marshal::FreeHGlobal(pString);