Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
fair7
10 / 10 / 1
Регистрация: 31.12.2010
Сообщений: 110
Записей в блоге: 5
1

Как в консоли автоматически выбрать шрифт Lucida Console, а не точечный шрифт?

18.12.2014, 01:02. Просмотров 3157. Ответов 7
Метки нет (Все метки)

Например №36 (размер шрифта 22х36).
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2014, 01:02
Ответы с готовыми решениями:

При запуске консоли автоматически устанавливать шрифт Lucida Console
Как сделать так чтобы при запуске консоли автоматически ставился шрифт Lucida Console, размер...

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

Как программно в консоли установить точечный шрифт, и его размер?
Как программно в консоли установить точечный шрифт, и его размер? Формулируйте вопрос в посте.

Как сделать большой шрифт слова в консоли?
как сделать большой шрифт слова в консуле?

7
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
18.12.2014, 18:13 2
С помощью функции SetCurrentConsoleFontEx() http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
0
fair7
10 / 10 / 1
Регистрация: 31.12.2010
Сообщений: 110
Записей в блоге: 5
21.12.2014, 16:38  [ТС] 3
Я пробовал разобратся с твоей подсказкой, пока такой результат:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h> 
#include <stdio.h>
 
int main() {
    HANDLE soh = GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_FONT_INFOEX cfi; 
    memset(&cfi, 0, sizeof(cfi)); 
    cfi.cbSize = sizeof(cfi); 
    GetCurrentConsoleFontEx(soh, FALSE, &cfi); 
    cfi.dwFontSize.Y += 6; 
    SetCurrentConsoleFontEx(soh, FALSE, &cfi); 
 
    printf("Press 'Enter' for return old font size\n");   
 
    SetCurrentConsoleFontEx(soh, FALSE, &cfi); 
 
    return system("pause"); 
}
чуть переделал иходник из интернета, но Dev C++ не понимает:
CONSOLE_FONT_INFOEX
пробывал, не помогло
PCONSOLE_FONT_INFOEX
Добавлено через 1 час 2 минуты
ещё нашёл исходник, но проблема та же, интересно, может у кавота заработает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#define _WIN32_WINNT 0x0601
#include <windows.h>
 
using namespace std;
 
void changeWindowSize();
void changeFontAttributes();
 
const int MY_WIDTH = 800;
const int MY_HEIGHT = 1000;
 
const int CHAR_WIDTH = 6;
const int CHAR_HEIGTH = 8;
 
int main()
{
    //Increases the size of console
    changeWindowSize();
 
    //Decreases the size of font
    changeFontAttributes();
 
    //Wait to terminate program
    cin.ignore();
    return 0;
}
 
//Increases the size of console
void changeWindowSize()
{
    //Will be used to store where the window is
    RECT winSize;
 
    //Gets all of the consoles current attributes
    HWND console = GetConsoleWindow();
    
    GetWindowRect(console, &winSize);
 
    MoveWindow(console, winSize.left, winSize.top, MY_WIDTH, MY_HEIGHT, true);
}
 
//Decreases the size of font
// compiles on g++ 4.8.0
void changeFontAttributes()
{
// CONSOLE_FONT_INFOEX is already declared in wincon.h, so you ndon;t need to define it again
    CONSOLE_FONT_INFOEX consoleFont; //allocate on stack
// in your code PCONSOLE_FONT_INFOEX is just a pointer
 
    HANDLE toScreen;
 
    toScreen = GetStdHandle(STD_OUTPUT_HANDLE);
 
    //Sets new font sizes
    consoleFont.dwFontSize.X = CHAR_WIDTH;
    consoleFont.dwFontSize.Y = CHAR_HEIGTH;
 
    SetCurrentConsoleFontEx(toScreen, true, &consoleFont);
}
Добавлено через 5 минут
ещё нашёл исходник (немного отредактировал) но выдаёт
[Linker error] undefined reference to `WinMain@16'
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <conio.h>
#include <windows.h>
BOOL PrintText(LPCTSTR szText);
BOOL SetConsoleAttrib(WORD wAttrib);
BOOL SetCurrentPos(SHORT x, SHORT y);
BOOL SetConsoleSize(SHORT x, SHORT y);
 
int _tmain(int argc, _TCHAR* argv[])
{
      ::SetConsoleTitle(("Пример программы на C++"));
      //
      SetConsoleSize(160, 80);
      SetConsoleAttrib(0x6F);
      //
      //_cputts(("Всем привет от меня!\r\n"));
      //_tcprintf(("%s\r\n"), ("Благодарю за внимание."));
      //
      SetCurrentPos(25, 10);
      PrintText(("Всем пока...\r\n"));
      //
getch(); // ожидание нажатия клавиши...
      return 0;
}
 
static HANDLE _ConsoleOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
 
BOOL SetConsoleAttrib(WORD wAttrib)
{
      ::SetConsoleTextAttribute(_ConsoleOut, wAttrib);
      CONSOLE_SCREEN_BUFFER_INFO csbi = {0};
      ::GetConsoleScreenBufferInfo(_ConsoleOut, &csbi);
      DWORD dw(0);
      COORD cr = {0, 0};
      return ::FillConsoleOutputAttribute(_ConsoleOut,
            wAttrib, csbi.dwSize.X * csbi.dwSize.Y, cr, &dw);
}
 
BOOL PrintText(LPCTSTR szText)
{
      DWORD dw(0);
      return ::WriteConsole(_ConsoleOut, szText, ::lstrlen(szText), &dw, NULL);
}
 
BOOL SetCurrentPos(SHORT x, SHORT y)
{
      COORD pos = {x, y};
      return ::SetConsoleCursorPosition(_ConsoleOut, pos);
}
 
BOOL SetConsoleSize(SHORT x, SHORT y)
{
      COORD size = {x, y};
      return ::SetConsoleScreenBufferSize(_ConsoleOut, size);
 
 
}
Добавлено через 16 часов 14 минут
интересно получается, если я начинаю задавать размер шрифта больше 11, то включается Lucida Console, а если выбрать 11 - Точечный шрифт. Вот пример, для проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include <conio.h>
#include <stdio.h>
 
void FontSize(short symbol_size=0)//PA3MEP CUMBO7A
{
    typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);
    SETCONSOLEFONT SetConsoleFont;
    HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");
    SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");
    SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),symbol_size);
}
int main()
{
 
    for(int i=12;i!=-1;--i)
    {            
        printf("\n nPUBET \1\n Привет \1");
        FontSize(i);
        if(getch()==27)return 0;
        printf("\n nPUBET \1\n Привет \1");
        FontSize(i+1);
    }
    getch();return 0;
}
0
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
21.12.2014, 16:40 4
Там не любой шрифт можно установить. Про это было обсуждение. Только те, которые в реестре зарегистрированы как консольные.
0
fair7
10 / 10 / 1
Регистрация: 31.12.2010
Сообщений: 110
Записей в блоге: 5
21.12.2014, 16:40  [ТС] 5
Можно считать: Задача решена
0
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
21.12.2014, 16:41 6
И к чему такие сложности с GetProcAddress()? Про функции с A вообще пора забыть.
0
fair7
10 / 10 / 1
Регистрация: 31.12.2010
Сообщений: 110
Записей в блоге: 5
21.12.2014, 16:48  [ТС] 7
А можно по подробнее, разве можно по проще? и почему функции с А нужно забыть?
0
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
21.12.2014, 16:49 8
Потому что они древние доюникодные.
1
21.12.2014, 16:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2014, 16:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Можно ли как-то осуществить вывод кириллицы в консоль, не используя Lucida Console
Собственно сабж в заголовке. Есть способ оставить стандартный Consolas?

Шрифт в консоли
Можно ли как нибудь программно увеличить шрифт в консоли?

шрифт в консоли
как увеличить или уменьшить шрифт в консоли?

Русский шрифт в консоли
Как подключить русский шрифт в консоли?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.