32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
1

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

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

Привет.
Как получить цвет (фона экрана) консольного окна?
Можно и методами WinAPI. С меня печенька
Миниатюры
Получить цвет фона экрана консольного окна (можно и методами WinAPI)  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2012, 06:30
Ответы с готовыми решениями:

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

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

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

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

9
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 07:23 2
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
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 07:37  [ТС] 3
Оба функций пригодятся, спасибо
0
374 / 321 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
14.08.2012, 08:12 4
Вообще при работе с консолью, для решения этой задачи нужно использовать GetStdHandle, GetConsoleScreenBufferInfo, CONSOLE_SCREEN_BUFFER_INFO
1
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 08:12  [ТС] 5
Не пойму, почему не получается, когда я его меняю через свойства
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 6
C++
1
2
3
4
5
6
WORD GetConsoleHandleColor()
{
    CONSOLE_SCREEN_BUFFER_INFO csbf;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbf);
    return csbf.wAttributes;
}
1
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
14.08.2012, 08:26  [ТС] 7
Цитата Сообщение от 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
374 / 321 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
14.08.2012, 08:33 8
Вот пример старый нашел
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
yleart
14.08.2012, 09:29
  #9

Не по теме:

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

0
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
15.08.2012, 03:01  [ТС] 10
а можешь показать Set функций?
C++
1
2
3
void SetBackColor(WORD color);
void SetForeColor(WORD color);
void SetOtherColor(WORD color);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2012, 03:01
Помогаю со студенческими работами здесь

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

Цвет фона окна
package окно.входа.в.систему; import java.awt.Color; import static...

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

Цвет фона главного окна
Как изменить цвет фона у окна LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru