0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
1 | |
[ С++ ] Изменить шрифт в консольном приложение ( программно )31.07.2011, 18:58. Показов 50724. Ответов 24
Метки нет Все метки)
(
Нашел только что можно изменить шрифт с помощью, не документированной функции SetConsoleFont, так же есть документированная функция SetCurrentConsoleFontEx, но так как Я новичок Я не понимаю, как ими пользоваться. Ни кто не может показать, как ими пользоваться на конкретном примере?!
ОС: Windows. Заранее спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
31.07.2011, 18:58 | |
Ответы с готовыми решениями:
24
Как изменить шрифт dataGridView программно? |
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,644
|
|
01.08.2011, 02:01 | 2 |
Что-то я сомневаюсь, что эти недокументированные функции помогут. Дело в том, что если они недокументированы, то не только для тебя, а вообще. Вопрос: станет ли производитель IDE, уважающая, в общем-то себя фирма, возиться с фикцией? Сомневаюсь. По крайней мере у меня в инклудах DEV C++ не нашлось упоминания о SetConsoleFont. То есть если даже ты и найдёшь пример того, что она где-то у кого-то работает, как её заставить работать на твоей IDE, которая знать о ней не знает и слыхом не слыхивала?
Я бы сделал так: посмотрел бы, какой ключ меняет шрифт и попытался программно изменить этот ключ. Либо: попытался написать прогу, имитирующую ряд нажатий клавиш, приводящих к увеличению шрифта. Эмулятор.
0
|
3096 / 2415 / 257
Регистрация: 11.03.2009
Сообщений: 5,455
|
||||||
01.08.2011, 07:53 | 3 | |||||
Windows разные бывают, допустим для SetCurrentConsoleFontEx требуется минимум Windows Vista или Windows Server 2008.
Первая ссылка в гугле по запросу setconsolefont дала следующий результат:
http://vsokovikov.narod.ru/New... nsbase.htm Мысль интересная, но после изменения реестра придется перезапускать окно консоли.
2
|
Заблокирован
![]() |
||||||||||||
01.08.2011, 09:35 | 4 | |||||||||||
вобще на всех форумах пишут что недокументированное лучше не юзать, но вот как вариант русский для Висты, взял от сюда [ссылка удалена]
0
|
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
01.08.2011, 10:50 [ТС] | 5 |
Я написал Windows потому что хотелось бы научится делать для всех версий.
К сожалению у меня это не выводит в первых ссылках. Всем остальным спасибо за участие и за помощь! Буду пробовать ![]()
0
|
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,644
|
|
01.08.2011, 15:36 | 7 |
-=ЮрА=-,как оно будет работать если IDE про неё не знает? Или: угадаем- не угадаем?
0
|
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
01.08.2011, 17:11 [ТС] | 8 |
-=ЮрА=-, у меня ваш код к сожалению не запускается!
0
|
Заблокирован
![]() |
||||||
01.08.2011, 17:43 | 9 | |||||
Андрей ты этот код на компиляцию запускал?
Добавлено через 2 минуты kravam, тестировал в 6-й судии пост выше работает!
0
|
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
01.08.2011, 18:05 [ТС] | 10 |
-=ЮрА=-, у меня зароботало только с 12 шрифтом!
спасибо!
0
|
3096 / 2415 / 257
Регистрация: 11.03.2009
Сообщений: 5,455
|
||||||||||||||||||||||||||
02.08.2011, 06:53 | 11 | |||||||||||||||||||||||||
Если вкратце, то:
Создаем указатель на функцию:
Добавлено через 4 минуты Вот видишь, это особенность недокументированных функций. У автора программы заработало со значением 10, у нас с Юрием - 14, у тебя 12.
1
|
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
02.08.2011, 09:41 [ТС] | 12 |
получается, что бы точно изменить шрифт на всех машинах на которых программа будет запускаться, это только с реестром копаться?
и еще вопрос. Если через реестр менять, то там же тоже мы будем писать числа ( 10, 12, 14 ), а на всех машинах опять же будут числа разные?
0
|
3096 / 2415 / 257
Регистрация: 11.03.2009
Сообщений: 5,455
|
|
02.08.2011, 15:11 | 13 |
По крайней мере для ХР я прямого способа пока не нашел.
Числа будут другие, но вроде бы одинаковые, у меня с ХР и 7 разницы нет. Дефолтные настройки консоли находятся в ветке реестра HKEY_CURRENT_USER\Console Ключи: FaceName - строка, имя дополнительного шрифта, должна быть пустая для точечного шрифта; FontFamily - тип шрифта, 0х0 для стандартного точечного шрифта, 0х30 для точечных шрифтов других размеров, 0х36 Lucida Console; FontSize - ширина и высота шрифта, для стандартного точечного шрифта равняется 0. Для остальных младшие два байта - ширина символов (обязательный только для точечного шрифта), старшие два байта - высота.
0
|
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
|
|
03.08.2011, 11:36 [ТС] | 15 |
Ребят, где вы этому научились?!
Есть какие нибудь книги на эту тему на русском?
0
|
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,644
|
|||||||||||
14.02.2012, 17:40 | 16 | ||||||||||
Может, пригодиться кому:
работает со шрифта номер 0 и до 13-го безукоризнено, дальше повторения идут, может потому, что всего 14 шрифтов установлено? Прототипа GetCurrentConsoleFont не было в инклудах, чему я несказанно улдивлён, дописывал сам SetConsoleFont недокументированная функция, поэтому гарантированно работает исключительно на версии, как у меня (XP home SP2, ) Шрифты, меняются, по умолчанию для каждого шрифта- свой размер, чё за принцип я не понял, но похоже, что по возрастанию. SetConsoleCP (1251); SetConsoleOutputCP (1251); НУжны поскольку я работаю в Dev-Cpp, дабы увидеть русский язык при установлении Lucida Console, методом научного тыка выяснено, что это шрифты NN 6, 8, 10, 11 ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++ Как узнать версию оси;
0
|
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
|
||||||
14.02.2012, 18:45 | 17 | |||||
Вопрос немного не по теме. Вот вы используете GetModuleHandleA+GetProcAddress. А можно в C++ как нибудь добавить эту функцию в таблицу импорта?
На Delphi элементарно
0
|
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,644
|
|||||||||||
14.02.2012, 19:55 | 18 | ||||||||||
Оказалось, в С/С++ тоже есть такой способ, надо просто в хидерах написать её прототип:
0
|
быдлокодер
1722 / 909 / 106
Регистрация: 04.06.2008
Сообщений: 5,644
|
||||||
14.02.2012, 20:42 | 20 | |||||
А нигде, компилятор этого почему-то не требует, наверное потому, что kernell32.dll загружается автоматом ДЛЯ ВСЕХ приложений; а для некоторых функций надо явно указывать библиотеку, есть разные способы для этого (зависит от компилятора), так например, чтобы указать использование билиотеки pthreadGC2.dll для этого (если исползуешь компилятор g++), надо компилить (линковать) с ключом линковщика -lpthread
А для других компиляторов пишут в исходном коде директиву
0
|
14.02.2012, 20:42 | |
Помогаю со студенческими работами здесь
20
Как изменить шрифт в консольном приложений при вводе данных и в выводе данных ? Изменить шрифт Listbox программно по выбору из выпадающего списка Шрифт в консольном окне
Требуется изменить тип файла и изменить шрифт в документе
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |