65,202
社区成员




hEdit = CreateWindow(L"EDIT", L"0123456789", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_CENTER | ES_NOHIDESEL,
0,0, 400,25, hWnd, (HMENU )IDC_EDIT, NULL, NULL);
int len = SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
char* buffer = new char[len+1]; // 此处读取长度正常
SendMessage(hEdit, WM_GETTEXT, (WPARAM)len, (LPARAM)buffer);
string str(buffer); // buffer里只读到一个字符???
SendMessage(hEdit, WM_GETTEXT, (WPARAM)len+1, (LPARAM)buffer);
谢谢,
len+1,如上改了之后可以了,
很是奇怪,谁可以解释一下为什么?[/quote]
https://msdn.microsoft.com/en-us/library/ms632627%28VS.85%29.aspx
wParam
The maximum number of characters to be copied, including the terminating null character. SendMessage(hEdit, WM_GETTEXT, (WPARAM)len+1, (LPARAM)buffer);
谢谢,
len+1,如上改了之后可以了,
很是奇怪,谁可以解释一下为什么?int len = SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
TCHAR *buffer = new TCHAR[len+1]; // 此处读取长度正常
SendMessage(hEdit, WM_GETTEXT, (WPARAM)len, (LPARAM)buffer);
CString str(buffer);
TRACE(_T("%s"),str);
TRACE(_T("%S"),str);
IsWindowUnicode(hEdit)
看了,的确是Unicode
int len = SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
wchar_t* buffer = new wchar_t[len+1];
SendMessage(hEdit, WM_GETTEXT, (WPARAM)(len+1), (LPARAM)buffer);