Итак, привет всем.WM_GETTEXT получает только первый символ
У меня установлен MSVC6 на win2k на виртуальной машине, но исполняемый файл выполняется под эмуляцией winXP (странно, а?).
У меня есть некоторый код, который создает массив редактирования:
for (i=0; i<NDRIVES_MASK+1; i++) {
hWndEdit_Nstep[i] = CreateWindowEx (NULL,
"EDIT",
"0",
WS_CHILD|WS_VISIBLE|WS_BORDER,
150, // x
45+40*i, // y
75, // w
40, // h
hWnd,
(HMENU)IDC_NSTEP_EDIT[i],
GetModuleHandle(NULL),
NULL);
sprintf(str, "Число полушагов [%3d]", i);
};
И у меня есть какая-то другая часть коды, которая пытается читать данные в этих правках:
for (i=0; i<NDRIVES_MASK+1; i++) {
DriveN = i;
printf("--- [DEBUG] - DriveN - %#x\n", DriveN);
SendMessage(hWndEdit_Nstep[DriveN],
WM_GETTEXT,
(WPARAM)256,
(LPARAM)buftext);
Nsteps = _wtoi(buftext);
printf("--- [DEBUG] - Nsteps - %#x\n", Nsteps);
wprintf(L"--- [DEBUG] - Nsteps - %s\n", buftext);
} // for (i, ndrives)
ОБНОВЛЕНИЕ:
buftext объявляется следующим образом:
wchar_t buftext[256];
Мой вопрос в том, что когда я вводим только одноразрядный десятичный знак в любом из них или даже в пару из этих РЕДАКТОРОВ, эти числа считываются и выводятся правильно. Но когда я печатаю многозначные десятичные знаки - их обрабатывают как ноль. О чем эта проблема?
Заранее спасибо. Извините за мой сломанный английский.
Да, buftext i объявлен как: 'wchar_t buftext [256];'. Но когда я использую 'atoi' вместо' _wtoi', я получаю сообщение об ошибке: ** 'atoi': невозможно преобразовать параметр 1 из 'unsigned short [256]' в 'const char *' Указанные типы не связаны; Для преобразования требуется reinterpret_cast, листинг типа C или функция-стиль. ** Возможно, есть способ получить текст EDIT как 'char *'? –
Предполагая, что это не сборка _UNICODE, вам также нужно скорректировать ваше объявление buftext: 'char buftext [256];' –
спасибо alot. Извините за этот «немой» вопрос. У меня нет опыта работы с winapi (поскольку у меня нет документации на нем). –