Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для vendeme
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88

Получить цвет фона экрана консольного окна (можно и методами WinAPI)

14.08.2012, 06:30. Показов 3834. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Как получить цвет (фона экрана) консольного окна?
Можно и методами WinAPI. С меня печенька
Миниатюры
Получить цвет фона экрана консольного окна (можно и методами WinAPI)  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2012, 06:30
Ответы с готовыми решениями:

Какой функцией изменить цвет фона окна windows bgi?
это окошко черное и белая надпись Hello.Мне нужно сделать его синим.Есть ли такая функция.Если можно ее синтаксис.

Получить размер консольного окна
Есть код:#include "stdafx.h" #include <iostream> #include "Lib.h" #include <conio.h> #include <cstdlib> #include <Windows.h> ...

Движение курсора мыши должно плавно менять цвет фона окна.
точнее 2 1) Движение курсора мыши должно плавно менять цвет фона окна. Левый верхний угол - красный цвет фона. Правый верхний -...

9
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 07:23
vendeme,
C++
1
2
3
4
DWORD WINAPI GetClassLong(
  __in  HWND hWnd,
  __in  int nIndex
);
где nIndex = GCL_HBRBACKGROUND. А из него уже цвет получаешь

Добавлено через 3 минуты
Ещё можно по тупому :
C++
1
2
3
4
5
COLORREF GetPixel(
  __in  HDC hdc,
  __in  int nXPos,
  __in  int nYPos
);
1
 Аватар для vendeme
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 07:37  [ТС]
Оба функций пригодятся, спасибо
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
14.08.2012, 08:12
Вообще при работе с консолью, для решения этой задачи нужно использовать GetStdHandle, GetConsoleScreenBufferInfo, CONSOLE_SCREEN_BUFFER_INFO
1
 Аватар для vendeme
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 08:12  [ТС]
Не пойму, почему не получается, когда я его меняю через свойства
C++
1
2
3
4
5
6
7
8
int main()
{
    while(1)
    {
        std::cout << GetClassLong(GetConsoleWindow(), GCL_HBRBACKGROUND) << std::endl;
        Sleep(1000);
    }
}
0
34 / 35 / 6
Регистрация: 03.10.2011
Сообщений: 61
14.08.2012, 08:25
C++
1
2
3
4
5
6
WORD GetConsoleHandleColor()
{
    CONSOLE_SCREEN_BUFFER_INFO csbf;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbf);
    return csbf.wAttributes;
}
1
 Аватар для vendeme
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 08:26  [ТС]
Цитата Сообщение от rescr1pt Посмотреть сообщение
C++
1
2
3
4
5
6
WORD GetConsoleHandleColor()
{
    CONSOLE_SCREEN_BUFFER_INFO csbf;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbf);
    return csbf.wAttributes;
}
Благодарю, заработало
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
14.08.2012, 08:33
Вот пример старый нашел
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <tchar.h>
#include <windows.h>
#include <iostream>
 
 
//
// Тип данных для хранения цвета.
//
typedef unsigned short COLOR;
 
 
//
// Исходные составляющие цвета, используемые для экрана консоли.
//
#define COLOR_BLACK 0x0000
#define COLOR_BLUE  0x0001
#define COLOR_GREEN 0x0002
#define COLOR_RED   0x0004
#define COLOR_HIGH  0x0008
 
 
//
// Маски текстовых атрибутов.
//
#define BACKCOLOR_MASK 0x00F0
#define FORECOLOR_MASK 0x000F
#define OTHERATTR_MASK 0xFF00
 
 
//
// Перечесление цветов, используемых для экрана консоли.
// (Вместо class можно оформить в виде enum).
//
class Color
{
public:
    static COLOR const Black        = COLOR_BLACK;
    static COLOR const Blue         = COLOR_BLUE;
    static COLOR const Green        = COLOR_GREEN;
    static COLOR const Cyan         = COLOR_BLUE  | COLOR_GREEN;
    static COLOR const Red          = COLOR_RED;
    static COLOR const Magenta      = COLOR_BLUE  | COLOR_RED;
    static COLOR const Brawn        = COLOR_GREEN | COLOR_RED;
    static COLOR const Gray         = COLOR_BLUE  | COLOR_GREEN | COLOR_RED;
    static COLOR const DarkGray     = COLOR_HIGH;
    static COLOR const LightBlue    = COLOR_BLUE  | COLOR_HIGH;
    static COLOR const LightGreen   = COLOR_GREEN | COLOR_HIGH;
    static COLOR const LightCyan    = COLOR_BLUE  | COLOR_GREEN | COLOR_HIGH;
    static COLOR const LightRed     = COLOR_RED   | COLOR_HIGH;
    static COLOR const LightMagenta = COLOR_BLUE  | COLOR_RED   | COLOR_HIGH;
    static COLOR const Yellow       = COLOR_GREEN | COLOR_RED   | COLOR_HIGH;
    static COLOR const White        = COLOR_BLUE  | COLOR_GREEN | COLOR_RED  | COLOR_HIGH;
};
 
 
//
// Получение цвета фона из атрибутов текста.
//
inline WORD GetConsoleBackColor(WORD attr)
{
    return ((attr & BACKCOLOR_MASK) >> 4);
}
 
//
// Получение цвета символа из атрибутов текста.
//
inline WORD GetConsoleForeColor(WORD attr)
{
    return (attr & FORECOLOR_MASK);
}
 
//
// Получение прочих атрибутов текста.
//
inline WORD GetConsoleOtherAttr(WORD attr)
{
    return ((attr & OTHERATTR_MASK) >> 8);
}
 
//
// Объединение цвета символа, цвета фона и прочих атрибутов текста.
//
inline WORD MergeConsoleAttr(WORD fore, WORD back, WORD attr)
{
    return (fore | (back << 4) | (attr << 8));
}
 
 
//
// Вывод названия цвета.
//
void OutputColorName(COLOR color)
{
    using std::cout;
 
    switch (color)
    {
    case Color::Black:        cout << "Black";         break;
    case Color::Blue:         cout << "Blue";          break;
    case Color::Green:        cout << "Green";         break;
    case Color::Cyan:         cout << "Cyan";          break;
    case Color::Red:          cout << "Red";           break;
    case Color::Magenta:      cout << "Magenta";       break;
    case Color::Brawn:        cout << "Brawn";         break;
    case Color::Gray:         cout << "Gray";          break;
    case Color::DarkGray:     cout << "Dark Gray";     break;
    case Color::LightBlue:    cout << "Light Blue";    break;
    case Color::LightGreen:   cout << "Light Green";   break;
    case Color::LightCyan:    cout << "Light Cyan";    break;
    case Color::LightRed:     cout << "Light Red";     break;
    case Color::LightMagenta: cout << "Light Magenta"; break;
    case Color::Yellow:       cout << "Yellow";        break;
    case Color::White:        cout << "White";         break;
    }
}
 
 
int _tmain()
{
    using namespace std;
 
    // Описатель стандартного устройства вывода.
    HANDLE stdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    if (stdOut == INVALID_HANDLE_VALUE)
        return GetLastError();
 
    // Сведения об экранном буфере стандартного устройства вывода.
    CONSOLE_SCREEN_BUFFER_INFO scrBufInfo = {{0}, {0}, 0, {0}, {0}};
    if (GetConsoleScreenBufferInfo(stdOut, &scrBufInfo) == FALSE)
        return GetLastError();
 
    // Текущий цвет фона.
    COLOR backColor = GetConsoleBackColor(scrBufInfo.wAttributes);
    cout << "Back color: "; OutputColorName(backColor); cout << endl;
 
    // Текущий цвет текста.
    COLOR foreColor = GetConsoleForeColor(scrBufInfo.wAttributes);
    cout << "Fore color: "; OutputColorName(foreColor); cout << endl;
 
    system("PAUSE");
 
    return 0;
}
1
14.08.2012, 09:29

Не по теме:

не то написал.. :)

0
 Аватар для vendeme
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
15.08.2012, 03:01  [ТС]
а можешь показать Set функций?
C++
1
2
3
void SetBackColor(WORD color);
void SetForeColor(WORD color);
void SetOtherColor(WORD color);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2012, 03:01
Помогаю со студенческими работами здесь

Как можно получить цвет границы активного окна
Здравствуйте. Как можно получить цвет границы активного окна? Допустим на приложении кремовый. Пробовал через GetSysColor но...

FASM + WinAPI, рисование фона окна
Нужно загрузить картинку из ресурса, и использовать её в качестве фона для окна. Вроде всё что требуется сделал, но не работает. Вместо...

Цвет фона окна
package окно.входа.в.систему; import java.awt.Color; import static javafx.scene.paint.Color.color; import javax.swing.Box; import...

Цвет фона окна
import tkinter foregroundColor = &quot;#eee&quot; backgroundColor = &quot;#555&quot; root = tkinter.Tk() root.background = backgroundColor ...

Цвет фона главного окна
Как изменить цвет фона у окна LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)? Подскажите, пожалуйста?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru