1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
1

Некорректный вывод текста

06.07.2012, 05:37. Показов 978. Ответов 6
Метки нет (Все метки)

Здравствуйте! Есть такая функция:
C++
1
2
3
4
5
6
7
8
9
10
11
wchar_t* GetPlayerInfo()
{
    wchar_t buffer[64];
    .......
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    swprintf_s(buffer, L"Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Результат отрисовки текста (DX11, шрифт Arial):
 Комментарий модератора 
Создайте изображение, которое видно не только под микроскопом, и прикрепите его к сообщению (расширенный режим -> управление вложениями)

Когда просто вывожу текст с помощью MessageBoxW всё отлично...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2012, 05:37
Ответы с готовыми решениями:

Некорректный вывод текста
Вот учусь писать функции, и наткнулся на проблемку. После написание и компилирования вот этой...

Некорректный ввод русского текста
Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с файла текст на...

Некорректный вывод
Доброго времени суток Суть такова: есть прога, выполняющая действия с односвязным списком....

Некорректный вывод
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые...

6
871 / 769 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 06:03 2
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
0
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 06:34  [ТС] 3
Цитата Сообщение от MrCold Посмотреть сообщение
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
Я рисую:
C++
1
DrawText(GetPlayerInfo(), 16, 0, 0, 0xff0099ff, 0);
P.S. Когда я в GetPlayerInfo возвращаю простой текст, например -
C++
1
return L"Test string";
, то он правильно рисуется (не иероглифами)
0
871 / 769 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 07:06 4
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
0
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 07:26  [ТС] 5
Цитата Сообщение от MrCold Посмотреть сообщение
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Для рисования текста в DirectX 11 используется WCHAR
0
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
06.07.2012, 09:05 6
Цитата Сообщение от MrCold Посмотреть сообщение
еще ошибка возврат
локальной переменной
Вот тут корень всех проблем. Переменная на стеке затирается раньше, чем до нее доберется DX
Проще буфер снаружи в процедуру передавать.
Ну, или static, но это не самое красивое решение.
0
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 16:16  [ТС] 7
Спасибо большое, да вы права проблема была именно с буфером!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2012, 16:16
Помогаю со студенческими работами здесь

Некорректный вывод
Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу понять, как обратиться...

Некорректный вывод
#include "stdafx.h" #include <iostream> #include <cstring> #include <stdio.h> #include...

Некорректный вывод
Правильно считает только х выводит не правильно, если убрать ссылки то все корректно #include...

Некорректный вывод
Доброго времени суток, дамы и господа. Программа элементарная, как и задача. Но не мои тараканы,...

Некорректный вывод
Почему-то все выводимые y равны 1. #include "stdafx.h" #include <iostream> #include <math.h>...

Некорректный вывод
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru