|
|
|
erslgoeirjh |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 147 Регистрация: 16.12.2005 Репутация: нет Всего: нет |
Есть оконное диалоговое MFC-приложение. Это приложение вызывает консольное окно, в котором выводятся результаты решения задачи.
Можно ли вывести в этом консольном окне заглавную (прописную) греческую букву "дельта" -- Δ ? И можно ли вывести в этом консольном окне горизонтальную черту над латинскими буквами (например, над буквами r или v)? В том смысле, чтобы это было в одной строке? Если да, то как это можно сделать? |
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: -1 Всего: 0 |
Взять нужный файл шрифта, зарегить его в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont\
Заюзать функцию
Вывести нужные кракозябры и потом вернуть обратно старый шрифт. Както так |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Можно проще. BAT файл, сохранен в UTF-8 (кодовая страница 65001)
Так что SetConsoleCP и вывод Unicode'а через UTF-8 Или сразу писать в Unicode (через WriteConsoleW или fputws) |
|||
|
||||
vol4ek |
|
||||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: -1 Всего: 0 |
С дельтой пойдет а вот прямая над символом... ни в одном алфавите нет буквы r с такой фиговиной. Только отредактировать какойто из существующих шрифтов. например греческий. |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
В Unicode есть специальные символы, которые модифицируют те, что перед ними - https://en.wikipedia.org/wiki/Combining_character
В принципе прямую над символами сделать можно ( <symbol> + U+0305), проблема в том, что в консоли это не работает |
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: -1 Всего: 0 |
а по мне так проще взять любой редактор шрифтов коих сейчас тыщи да и не париться
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Можно. Но несколько удивляет изначальное построение программы:
Зачем MFC приложению понадобилась консоль? Если для возможности что то скопировать оттуда, или запустить в ней какое то другое консольное приложение, то вариант с заменой шрифта не пройдет - требуемые буквы будут только в консоли, при попытке их оттуда скопировать они неожиданно трансформируются в нечто. Если же в такой консоли что то запустить - то эти буквы могут неожиданно появиться там, где их быть не должно. Других вариантов, когда требуется именно консоль я придумать не могу. Так что ТС напрашивается совет не заморачиваться с консолями вообще, а выводить в нормальное Edit окно средствами GUI (в Unicode) |
|||
|
||||
vol4ek |
|
|||
конь в пальто Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: -1 Всего: 0 |
Думается ввод/вывод какихто формул или хз
|
|||
|
||||
erslgoeirjh |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 147 Регистрация: 16.12.2005 Репутация: нет Всего: нет |
И ещё вопрос: как правильно вывести в консольное окно строку, содержащую символы Unicode?
Надо ли для этого использовать функцию WriteConsole или же достаточно использовать функцию wprintf? И как сделать так, чтобы правильно выводились не только символы Unicode, но и символы кириллицы в такой строке в консольном окне? |
|||
|
||||
erslgoeirjh |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 147 Регистрация: 16.12.2005 Репутация: нет Всего: нет |
Что, действительно в консольном окне не работает вывод символа Unicode комбинированной верхней горизонтальной черты (код U-0305)? |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Почти достаточно. Еще нужно позвать _setmode на stdout что бы перевести его в Unicode режим.
Вы не поверите, но Unicode включает в себя и кириллицу Если вам нужно вывести в Unicode обычную char* в текущей кодировке Windows, то воспользуйтесь спецификатором формата %S в wprintf
Выводит как 2 отдельных символа - отдельно первый символ, отдельно верхнюю горизонтальную черту (2м символом). Экспериментально проверено в Windows 7 (более поздние не пробовал) Это сообщение отредактировал(а) xvr - 25.5.2017, 11:16 |
||||
|
|||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |