2013-06-16 4 views
0

Итак, привет всем.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]; 

Мой вопрос в том, что когда я вводим только одноразрядный десятичный знак в любом из них или даже в пару из этих РЕДАКТОРОВ, эти числа считываются и выводятся правильно. Но когда я печатаю многозначные десятичные знаки - их обрабатывают как ноль. О чем эта проблема?

Заранее спасибо. Извините за мой сломанный английский.

ответ

0

Вы не показываете объявление buftext, но я подозреваю, что вы набрали его как широкий буфер символов и использовали _wtoi, когда вы намеревались использовать atoi.

+0

Да, buftext i объявлен как: 'wchar_t buftext [256];'. Но когда я использую 'atoi' вместо' _wtoi', я получаю сообщение об ошибке: ** 'atoi': невозможно преобразовать параметр 1 из 'unsigned short [256]' в 'const char *' Указанные типы не связаны; Для преобразования требуется reinterpret_cast, листинг типа C или функция-стиль. ** Возможно, есть способ получить текст EDIT как 'char *'? –

+0

Предполагая, что это не сборка _UNICODE, вам также нужно скорректировать ваше объявление buftext: 'char buftext [256];' –

+0

спасибо alot. Извините за этот «немой» вопрос. У меня нет опыта работы с winapi (поскольку у меня нет документации на нем). –

Смежные вопросы