如何在使用GetDlgItemText()函数时计算LPWSTR大小

时间:2012-02-18 12:55:12

标签: c++ winapi

我的要求很小 我使用 GetDlgItem() 从文本字段中获取文本,但我在第四个参数(即缓冲区大小)中遇到问题。

LPWSTR txtbuff;
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50); // the fourth parameter (50)
MessageBox(NULL,txtbuff,L"Error message",MB_OK)

如何计算 txtbuff

的大小

4 个答案:

答案 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