我的要求很小
我使用 GetDlgItem()
从文本字段中获取文本,但我在第四个参数(即缓冲区大小)中遇到问题。
LPWSTR txtbuff;
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50); // the fourth parameter (50)
MessageBox(NULL,txtbuff,L"Error message",MB_OK)
如何计算 txtbuff
答案 0 :(得分:8)
您可以使用GetDlgItem获取控件的HWND和GetWindowTextLength以确定控件保留的字符数。
答案 1 :(得分:0)
您需要自己分配一个缓冲区:
WCHAR txtbuff[50];
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50);
/* or... */
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, sizeof(textbuff)/sizeof(textbuff[0]));
MessageBox(NULL, txtbuff, L"Error message", MB_OK);
一个简单的LPWSTR
变量是一个指针,在你的例子中,你有一个指针,但它还没有指向任何地方。通过显式创建缓冲区,您可以指定大小,并可以将其提供给GetDlgItem
。
答案 2 :(得分:0)
你可以这样使用sizeof
:
TCHAR txtbuff[50];
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, sizeof(txtbuff) * sizeof(TCHAR));
答案 3 :(得分:0)
它不是缓冲区的大小。它是您实际要复制的字符串数量。您可以将其设置为理论上所需的任何非零大小。另一方面,你自己的缓冲区的大小是另一回事,只要确保你不会溢出。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645489%28v=vs.85%29.aspx