如何在使用GetDlgItemText()函数时计算LPWSTR大小
How to compute LPWSTR size when using GetDlgItemText() function
我的请求很小我使用GetDlgItem()
从文本字段中获取文本,但在第四个参数(即缓冲区大小)中出现问题。
LPWSTR txtbuff;
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50); // the fourth parameter (50)
MessageBox(NULL,txtbuff,L"Error message",MB_OK)
如何计算txtbuff
您可以使用GetDlgItem获取控件的HWND和GetWindowTextLength来确定控件包含的字符数。
您需要自己分配一个缓冲区:
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
。
这不是缓冲区的大小。它是您实际想要复制的字符串的数量。理论上,你可以将其设置为任何你想要的非零大小。另一方面,你自己缓冲区的大小是另一回事,只是要确保你不会溢出。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645489%28v=vs.85%29.aspx
您可以像这样使用sizeof
:
TCHAR txtbuff[50];
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, sizeof(txtbuff) * sizeof(TCHAR));
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 函数计算用户按下按钮的频率
- C++ 在编译时具有函数计算全局变量
- C++ - 使用特定函数计算 x 和 y 的最终值
- 尝试使用函数计算有剩余球员的球队数量
- 我正在尝试创建一个布尔函数,该函数计算字符并在字符为"()*-+"时返回 true
- 哈希函数计算
- 为什么 if 语句对于运算符重载函数计算 false
- 使用C 中的内在函数计算相交
- 如何使用 2 个迭代器进行求和函数计算映射<字符串、双精度>
- vector.size() 函数计算量大吗?
- 如何使用opencv函数计算图像的孔数(二进制)
- 斐波那契函数计算不正确
- 如何用3个用户定义的函数计算一个数字的真平方根
- 元函数计算 x^n 并返回整数限制而不溢出(如果不可能)
- 使用递归函数计算字符串中的元音
- 如何使用 pow() 函数计算 C++ 中超过 2^32 的幂
- 返回 void 的函数的无序函数计算
- 在 C++ 中使用尾递归函数计算列表的总和
- 使用结构和函数计算线的长度