【发布时间】:2013-12-02 12:26:34
【问题描述】:
我对 Win32 gui 编码非常陌生,并且在捕获用户输入方面遇到了很多困难。
基本上我要做的是让用户在文本框中输入一些文本(称为文本框 A),单击一个按钮,然后将该文本复制到另一个文本框中(称为文本框 B)。我正在尝试使用 GetWindowsText() 函数将文本框 A 中的文本复制到缓冲区,然后在单击按钮时向文本框 B 发送消息,将文本设置为缓冲区的内容。简单吧? ...我的回调代码是:
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_MAIN_BUTTON:
{
GetWindowText(hwnd_path, buffer, 5);
SendMessage(hEdit,WM_SETTEXT,NULL,(LPARAM)buffer);
MessageBox(NULL, buffer, TEXT("Edit Text"), MB_OK);
}
break;
}
break;
hwnd_path 是文本框 A 的句柄,hEdit 是文本框 B 的句柄,缓冲区已声明为:TCHAR buffer[6] - 这些变量已全局声明,因此它们都应该在回调函数的范围内。我添加了消息框只是为了仔细检查缓冲区的值。
问题是单击按钮后,文本框 B 或消息框中都没有出现任何内容 - 在 GetWindowText(hwnd_path, buffer, 5) 命令之后,缓冲区似乎仍然是空的。
如果有人能提供任何建议,我将不胜感激。
杰克
【问题讨论】:
-
你调试了吗?并且更好地使用 SetWindowText 并在以后强制重绘。
-
GetWindowText 返回什么?如果返回 0,则调用 GetLastError 并查找错误代码。
-
您好,感谢您迄今为止的建议。调试时,似乎缓冲区值以值“\000\000\000\000\000”开头(我发现这令人不安,因为它似乎有比它初始化时更多的元素:/)并且是没有被 GetWindowText() 调用改变......我试图坚持使用 GetWindowText() 函数,因为我的真正目标是能够从文本框中获取用户输入,将其存储在变量中,然后使用我的一些代码处理它已经写了。任何更多的想法都会很受欢迎:)
-
'\000'等于'\0'等于0。寻求 ScottMcP-MVP 的建议。 -
GetWindowText的返回值是多少? GetWindowText返回0时GetLastError()的返回值是多少?