Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 11:19   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию Как сменить шрифт в консоле?

Как сменить шрифт в консоле? (программно) очень надо поставить Lucida Console
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.05.2013, 12:57   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
Как сменить шрифт в консоле? (программно) очень надо поставить Lucida Console
Запусти консольную программку. Кликни мышкой по верхней части окна (по заголовку) правым кликом. Далее в свойства, далее в шрифт, далее выбирай нужный из списка.
_Bers вне форума Ответить с цитированием
Старый 26.05.2013, 13:02   #3
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

_Bers, учимся читать

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
Как сменить шрифт в консоле? (программно) очень надо поставить Lucida Console
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.05.2013, 14:28   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Первая ссылка в яндексе:

Код:
// Windows XP SP3; BDS 2006; 21.03.2009;
// основано на материале с http://cboard.cprogramming.com/showthread.php?p=745558
#include <iostream>
#include <windows.h>
using namespace std;
 
typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);     // прототип недокументированый функции
 SETCONSOLEFONT SetConsoleFont;
 
int main(int argc, char* argv[])
{
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");     // функция здесь
  SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");   // берем ее адрес
  if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}   //   если ошибка
  SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),10);  // устанавливаем 10 шрифт..
  //эксперементально установил что в обычной XP  это Lucida  Console 14.
  //хз везде это ли - покажет практика.
  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода
  cout<<"по русски :)";
  cin.get();
  return 0;
}

Код не проверял. Благодарить не нужно.

for vista

Код:
#include <iostream>
#include <windows.h>
using namespace std;
 
typedef struct _CONSOLE_FONT_INFOEX {
  ULONG cbSize;
  DWORD nFont;
  COORD dwFontSize;
  UINT  FontFamily;
  UINT  FontWeight;
  WCHAR FaceName[LF_FACESIZE];
} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
 
typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);     // прототип недокументированый функции для XP
 
typedef BOOL (WINAPI *SETCURRENTCONSOLEFONTEX)(HANDLE,BOOL, PCONSOLE_FONT_INFOEX);  // для vista
SETCURRENTCONSOLEFONTEX SetCurrentConsoleFontEx  ;
SETCONSOLEFONT SetConsoleFont;
 
int main(int argc, char* argv[])
{
  OSVERSIONINFOEX osvi;
  CONSOLE_FONT_INFOEX cfon;
  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  GetVersionEx((OSVERSIONINFO *) &osvi) ;   // получение версии винды
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");     // функции здесь
  if (osvi.dwMajorVersion<6) {     // xp или ниже : для 9x не проверял.
     SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");   // берем  адрес функции
     if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}   //   если ошибка
     SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),10);  // устанавливаем 10 шрифт..
    //эксперементально установил что в обычной XP  это Lucida  Console 14.
    //хз везде это ли - покажет практика.
 
  }  else
  {
     SetCurrentConsoleFontEx =(SETCURRENTCONSOLEFONTEX) GetProcAddress(hmod, "SetCurrentConsoleFontEx");   // берем  адрес  функции
     if (!SetCurrentConsoleFontEx) {cout<<"error\n" ; exit(1);}   //   если ошибка
     ZeroMemory(&cfon, sizeof(CONSOLE_FONT_INFOEX));
     cfon.cbSize=sizeof(CONSOLE_FONT_INFOEX);
     //cfon.nFont=10;
     cfon.FontFamily=54;   //   Lucida  Console
     if (!SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), false, &cfon)) cout<<"error";
  }
 
  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода
  cout<<"по русски :)";
  cin.get();
  return 0;
}

Последний раз редактировалось Stilet; 27.05.2013 в 08:25.
_Bers вне форума Ответить с цитированием
Старый 26.05.2013, 14:35   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Код не проверял. Благодарить не нужно.
а зря... код не работает, не благодарю

решение найдено вопрос снят

Последний раз редактировалось Stilet; 27.05.2013 в 08:25.
NewLamer&Programer вне форума Ответить с цитированием
Старый 27.05.2013, 01:28   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
решение найдено вопрос снят
Поделиться решением конечно никак? Типа сам узнал, на остальных пофиг?
_Bers вне форума Ответить с цитированием
Старый 27.05.2013, 08:26   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
на остальных пофиг?
Думаю что паря просто в реестр кое-куда пишет новые параметры консоли и все )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2013, 10:05   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вот рабочий код с комментариями:

Код:
#include <vcl.h>
#include <iostream>
#pragma hdrstop
#pragma argsused
using namespace std;
 
typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);     // прототип недокументированый функции
 SETCONSOLEFONT SetConsoleFont;
 
int main(int argc, char* argv[])
{
  HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");     // функция здесь
  SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");   // берем ее адрес
  if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}   //   если ошибка
  SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), 8);  // устанавливаем 8-й шрифт..
  //эксперементально установил что в обычной XP  это Lucida  Console = 6 или 8.
  // разница только в размерах. 6 - помельче.
  SetConsoleCP(1251);            // устанавливаем кодировку ввода
  SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода
// ************ Здесь начинается код программы **************
  cout<<"по русски :)";
  cin.get();
  return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 27.05.2013 в 11:06.
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.05.2013, 10:27   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Если кто будет менять фонт, советую ознакомиться:
http://blogs.msdn.com/b/oldnewthing/...6/2659903.aspx
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цветной шрифт в консоле неполучаетса Xameleon666 Общие вопросы C/C++ 2 26.03.2012 10:52
Delphi 7 как вывести в консоле Андрей93 Общие вопросы Delphi 1 08.12.2011 11:24
Как перехватить поток вывода в консоле ? Konst_0327 Win Api 0 23.05.2011 19:07
Как в Qt в консоле отображать русские буквы? Lemo Помощь студентам 0 05.10.2010 14:53
Как избавиться от мерцания в консоле? MaRKer.nsk Общие вопросы C/C++ 8 13.04.2010 12:41