Просто вскочил на C++ с win32 в Visual Studio 2012. Я опытный в C и C#, но мой C++ немного не хватает. Материал win32 просто, кажется, принимает любой намек на интуицию и бросает его в вулкан. Пока это была боль.C++ win32: базовая обработка строк
Вот что я пытаюсь сделать: 1) Извлечение текста из текстового поля «редактировать» управление 2) Преобразовать этот текст в Int 3) Сформировать строку, используя тип Sprintf форматировщик для удвоения номер с плавающей запятой 4) Возьмите полученную строку и отобразите ее в другом текстовом поле.
Я пробовал несколько разных вещей, которые я нашел в Интернете, но все они выглядят короткими. Это лучшее, что я мог сделать:
wchar_t buffer[30];
const wchar_t formatString[] = {'%','f','\0'}; //Yes I know this is awful, I don't know how to convert a string literal into a wchar_t array.
GetWindowText(txtFixedPtToFloatInputHandle, &buffer[0], 15);
//Convert to signed integer
fixedPtValue = _wtoi(&buffer[0]);
//get a float
floatVal = 12.50;
//Use formatter to create a string representation
swprintf(buffer, 30, &formatString[0], floatVal);
SetWindowText(txtFixedPtToFloatOutputHandle, buffer);
Это самое близкое, что я пришел. Это неприятно, я знаю, но все другие вещи, которые я нашел в Интернете, сократились (LPWSTR, boost ::, stdio.h). В этом коде все буферы загружаются с правильными строками! Проблема в том, что моя программа закрывается/выходит, когда функция возвращается! Любая помощь??
* «Я не знаю, как преобразовать строку буквального в массив wchar_t.» * - Поместите перед ним 'L'. - 'const wchar_t formatString [] = L"% f ";' –
Несвязанный: вам нравится набирать = P? Вы передаете 'buffer' в' SetWindowText', как и должно быть, но передайте '& buffer [0]' таким функциям, как 'GetWindowText'. Не какая-то земляная ошибка; это только стиль. Оба они абсолютно правильны, и если так, как вы делаете так, пусть будет так. Я просто нашел немного странным, что это было непротиворечиво. – WhozCraig
'Проблема в том, что моя программа закрывается/выходит, когда функция возвращается!' It should'n? Он выходит из строя или с ошибкой? Если с ошибкой, используйте отладчик. Если, как правило, я не вижу причин для отправки строкового кода. У вас есть «основная петля»? BTW, рассмотрим чтение книги на C++, которую вы все еще записываете в C. – Drop