C ++ - swprintf_s не выводится в буфер в консоли - PullRequest
1 голос
/ 17 апреля 2020

Я пишу консольную игру на 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); выводит как следует. Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...