【发布时间】:2013-08-15 12:05:53
【问题描述】:
我必须读取插入到 windows 中可编辑文本字段中的数据。
为了测试,我创建了以下测试代码。
//Define variable and textfield
LPTSTR radiusValue;
HWND hwndradiusValue;
//Create Text Field. Note that, hWnd is handler to original window
hwndradiusValue=CreateWindowEx(WS_EX_WINDOWEDGE,TEXT("Edit"), TEXT(""), WS_CHILD | WS_VISIBLE, 10, 10, 50, 25, hWnd, NULL, NULL, NULL);
//Get Text from handle
GetWindowText(hwndradiusValue,radiusValue,30);
//Display the message
MessageBox(NULL, radiusValue, "TESTING", MB_OK);
我期待消息在文本字段中显示该项目。但它没有。它显示空字符。我该如何解决这个问题?
【问题讨论】:
-
您创建了一个没有内容的编辑控件 (
TEXT(""))。此外,您正在混合字符编码。如果您使用的是TEXT(或_T)宏,请始终如一地使用。你应该学习 MSDN 中的Working with Strings。您似乎还安装了一个 pimped SDK;我的没有定义类型LTPSTR。如果那应该是LPTSTR,那么您正在写入随机存储器。 -
@Tim 感谢您的评论。即使我执行 TEXT("SOMERADIUS"),它也不会显示 SOMERADIUS。我正在使用 LPTSTR。那是一个错字。你在写随机存储器是什么意思?
-
GetWindowText将内容写入radiusValue指向的地址。这是一个未初始化的指针。您必须自己提供存储空间,即TCHAR radiusValue[30] = { 0 }; GetWindowText( hwndradiusValue, radiusValue, ARRAYSIZE( radiusValue ) );。 -
@Tim 谢谢你提供的信息。
标签: c++ winapi text textfield win32gui