Я могу отлично преобразовать строки в шестнадцатеричные, если я определю их в источнике, например:
int input = 15;
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);
Результат — ‘f’, но как получится, если я сделаю это:
TCHAR buffer[500];
int input = GetDlgItemText(TOCON, buffer, 50);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);
Выход «2»? Я пробовал несколько других способов получения текста из элемента управления редактированием, но каждый из них дал неправильные результаты. Что-то не так с тем, как я получаю текст от элемента управления в целом, или что я установил для maxcount?
GetDlgItemText
копирует текст из элемента управления редактирования в буфер и возвращает количество символов, считанных из диалогового элемента управления, не текст интерпретируется как число. Путь состоит в том, чтобы сначала преобразовать строку в buffer
в целое число, а затем поставьте это output.Format
, Например, вы можете сделать это с помощью функции atoi
, Ваш модифицированный код будет выглядеть так:
TCHAR buffer[500];
GetDlgItemText(TOCON, buffer, 50);
int input = atoi(buffer);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);
Других решений пока нет …