Ввод «10» Вывод 1.0 из строки в плавающую версию 2 - PullRequest
0 голосов
/ 28 ноября 2011

В качестве продолжения для дорогого Роберта Харви, который утверждает, что это не произошло.

Как почти сказано в теме, я получил элемент управления для редактирования, который я предопределил с помощью "0,00", я запускаюмое приложение и введите для примера 10 в элемент управления EDIT, рядом с элементом управления EDIT я получил элемент управления BUTTON, под которым у меня есть этот код в качестве события.Код ниже возьмет массив «string» или char из элемента управления EDIT, преобразует его в число с плавающей точкой с «atof» из стандартной библиотеки C, а затем я записываю его обратно в элемент управления EDIT, но на этот раз я не получаю10.0, как и ожидалось, я просто получаю 1.

Я пробовал с «123», а затем я получаю только 12.0, поэтому вопрос в простой форме состоит в том, почему моя введенная строка «10» станет 1,00 со следующимкод и где бы я сделать это правильно.Я так понимаю, вам не нужен дополнительный код, поскольку вы, вероятно, получили рабочий скелет и вставили его в свой код или можете запустить его без необходимости прототипирования.

char fromTextField[1024];
HWND textfield = GetDlgItem(hwnd,(WM_USER+1001));
int fromTextFieldLength = GetWindowTextLength(textfield);
GetWindowText(textfield,fromTextField,fromTextFieldLength);
float ampl =atof(fromTextField);
char amplitudefromtextfield[100];
_snprintf(amplitudefromtextfield,sizeof(amplitudefromtextfield),"%f",ampl);
SetWindowText(textfield,amplitudefromtextfield);

1 Ответ

1 голос
/ 28 ноября 2011

Я подозреваю, что ваша проблема в том, что параметр длины, который вы передаете GetWindowText, является результатом GetWindowTextLength.Поэтому, если GetWindowTextLength возвращает 3, вы передаете 3 на GetWindowText.Но это не включает нулевой терминатор.Так что GetWindowText не завершает строку.И невозможно сказать, что уже может быть в буфере.

Измените ваш вызов на:

GetWindowText(textField, fromTextField, fromTextFieldLength+1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...