Я очень новичок в кодировании графического интерфейса Win32, и у меня было довольно много трудностей с захватом пользовательского ввода.
По сути, я пытаюсь сделать так, чтобы пользователь ввел некоторый текст в текстовое поле (назовите его текстовым полем 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)
.
Если кто-то может дать какой-либо совет, я был бы очень признателен.
Джек
'\000'
равно'\0'
равно0
. Прислушайтесь к совету ScottMcP-MVP. - person alk   schedule 02.12.2013