Я пишу консольную игру на C ++, и я хотел бы иметь возможность легко создавать меню. Состояние экрана сохраняется в wchar_t * screen [screenWidth * screenHeight]. Я написал класс меню, которое должно написать в мой экранный буфер, чтобы отобразить табло. Класс имеет функцию рисования, которая берет указатель на буфер экрана и некоторые параметры координат. Функция draw использует swprintf_s для изменения состояния экранного буфера, однако когда я запускаю код, она ничего не выводит. Я попытался изменить вызов swprintf_s путем передачи литерала, но он все еще не работает. Однако, когда я просто использую raw swprintf_s из main (), он работает.
void Menu::draw(wchar_t* screen, int xScreen, int yScreen, int xField, int yField,
int xMenu, int yMenu) {
for (int i = 0; i < buttons.size(); ++i) {
int currentY = yMenu / (buttons.size() + 1) * (i + 1);
swprintf_s(&screen[xScreen * currentY + xField + xMenu / 2 - 7], 16, buttons[i].str);
}
}
кнопки - это вектор меню, str - это wchar_t * для текста меню. Когда я просто использую функцию в основном: swprintf_s(&screen[15 * nScreenWidth + nFieldWidth + 6], 16, L"SCORE: %8d", nScore);
выводит как следует. Есть предложения?