Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
infobos
Строитель
454 / 71 / 4
Регистрация: 18.06.2010
Сообщений: 499
1

Как установить цвет панели без рисования (по умолчанию установки цветов)?

13.01.2017, 15:58. Просмотров 863. Ответов 2
Метки нет (Все метки)

Обычная панель STATIC по умолчанию создает окно с определенным цветом (Панель 2) Серый приятный цвет.
Когда создаешь свою панель через класс, то по умолчанию устанавливается белый цвет.
Как в панели 1, в которой находится кнопка сделать такой же цвет как у панели 2.

Нужно как-то установить стиль цвета без рисования (Серый цвет как у панели 2)
Также для основного окна как сделать серый цвет как у панели 2?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2017, 15:58
Ответы с готовыми решениями:

Как установить цвет фона клиентской области без WM_PAINT
а, WM_CTLCOLORSTATIC вызывается только для дочерних элементов

Как задать цвет рисования с F1 поля со списком с названиями цветов, а рисуемый элемент (линия или прямоугольник) через меню.
Что то не пойму( Добавлено через 24 минуты В теме не вместилось, поэтому...

1 HDD на 3ТБ установки Windows 10 Как установить без разбития разделов без потерь ?
Здравствуйте, есть в наличии всего 1 HDD Размером на 3 ТБ уже как то умудрялся...

Как без QSS установить цвет background-а лейблу?
как без QSS установить лейблу цвет?

Как поменять цвет текста консоли на любой цвет из RGB цветов
Цвет консоли можно поменять используя только 16 встроенных цветов или можно...

2
infobos
Строитель
454 / 71 / 4
Регистрация: 18.06.2010
Сообщений: 499
13.01.2017, 15:58  [ТС] 2
Скриншот
0
Миниатюры
Как установить цвет панели без рисования (по умолчанию установки цветов)?  
infobos
Строитель
454 / 71 / 4
Регистрация: 18.06.2010
Сообщений: 499
13.01.2017, 16:28  [ТС] 3
Лучший ответ Сообщение было отмечено infobos как решение

Решение

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <windows.h>         // Подключаем заголовочный файл Windows
 
//MainWinProc - обработчик событий из windows. Windows запускает.
LRESULT CALLBACK MainWinProc(HWND   hwnd, UINT    msg, WPARAM  wparam, LPARAM  lparam)          
{
    
 switch (msg) 
  {
      case WM_CREATE:
          {
              //Создаем панель, в которой будет находится кнопка
              //DWORD dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              //DWORD dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              //HWND panel = CreateWindowEx(dwExStyle, TEXT("STATIC"), TEXT("Панель"), dwStyle, 10, 50, 300, 300, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
              DWORD dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              DWORD dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              HWND panel = CreateWindowEx(dwExStyle, TEXT("WINDOWSCLASS2"), TEXT("Панель"), dwStyle, 10, 50, 300, 150, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
              dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              HWND panel2 = CreateWindowEx(dwExStyle, TEXT("STATIC"), TEXT("Панель 2"), dwStyle, 10, 250, 300, 150, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
 
              //Создаем кнопку1 находиится на панели
              HWND knopka=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 1"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              50,50,100,30,panel,(HMENU)853,NULL,NULL);
 
              //Создаем кнопку2 работает но она не в панели
              HWND knopka2=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 2"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              330,100,100,30,hwnd,(HMENU)854,NULL,NULL);
          }
          break;
 
 
 
 
      case WM_COMMAND:// При нажатии кнопки 1 Это не вызывается!
          {
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==853)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 1!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
 
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==854)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 2!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
          }
   break;
 
      case WM_DESTROY://Методы при закрытие окна.
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
//MainWinProc - обработчик событий из windows. Windows запускает.
LRESULT CALLBACK MainWinProc2(HWND   hwnd, UINT    msg, WPARAM  wparam, LPARAM  lparam)          
{
    
 switch (msg) 
  {
      case WM_CREATE:
          {
 
          }
          break;
 
 
 
 
      case WM_COMMAND:// При нажатии кнопки 1 Это не вызывается!
          {
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==853)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 1!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
 
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==854)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 2!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
          }
   break;
 
      case WM_DESTROY://Методы при закрытие окна.
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
 
//WinMain - Точка входа программы. Отсюда начинается работа кода.
int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
 
{
 
WNDCLASSEX windowsclass;  // Создаем класс
HWND       hwnd;          // Создаем дескриптор окна
MSG        msg;           // Идентификатор сообщения
 
WNDCLASSEX windowsclass2;  // Создаем класс
MSG        msg2;           // Идентификатор сообщения
 
// Определим класс окна WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style          = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra     = 0;
windowsclass.cbWndExtra     = 0;
windowsclass.hInstance      = hinstance;
windowsclass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);//Курсор на окне
windowsclass.hbrBackground  = NULL;//(HBRUSH)GetStockObject(GRAY_BRUSH);Раскраска объекта в серый цвет (GRAY_BRUSH)
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = TEXT("WINDOWSCLASS");
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
 
// Определим класс окна WNDCLASSEX
windowsclass2.cbSize         = sizeof(WNDCLASSEX);
windowsclass2.style         = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass2.lpfnWndProc   = MainWinProc2;
windowsclass2.cbClsExtra        = 0;
windowsclass2.cbWndExtra        = 0;
windowsclass2.hInstance     = hinstance;
windowsclass2.hIcon         = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
windowsclass2.hCursor       = LoadCursor(NULL, IDC_ARROW);//Курсор на окне
windowsclass2.hbrBackground = NULL;//(HBRUSH)GetStockObject(GRAY_BRUSH);Раскраска объекта в серый цвет (GRAY_BRUSH)
windowsclass2.lpszMenuName  = NULL;
windowsclass2.lpszClassName = TEXT("WINDOWSCLASS2");
windowsclass2.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
 
// Зарегистрируем класс
RegisterClassEx(&windowsclass);
RegisterClassEx(&windowsclass2);
 
hwnd = CreateWindowEx(NULL,              // стиль окна
                       TEXT("WINDOWSCLASS"),         // класс
                       TEXT("Программа"), // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL,// | WS_HSCROLL,//Стили окна для разных работ
                       100,100,  // левый верхний угол 
                       500,500,   // ширина и высота окна
                       NULL,                   // дескриптор родительского окна 
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL);                  // указатель на данные окна         
 
 
ShowWindow(hwnd, ncmdshow);//Выводит окно на экран. Второй параметр означает как открыть окно. Его можно открыть на весь экран или свернуть.
UpdateWindow(hwnd);//Перерисовка окна после изменения
 
 
while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);//преобразует некоторые сообщения полученные с помощью клавиатуры
            DispatchMessage(&msg);//Отправляет сообщения оконной процедуре
    }
 
     return msg.wParam;
 
 
};
Добавлено через 1 минуту
Файл exe для теста

Добавлено через 26 минут
Ответ найден:

C++
1
windowsclass2.hbrBackground = (HBRUSH)5;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2017, 16:28

Как установить .NET приложение, но без установки самого .NET Framework?
Мне нужно установить .NET приложение, но без установки самого .NET Framework....

Как на ленте в панели рисования поменять кнопки?
здравствуйте. я постоянно пользуюсь кнопками полилиния и сплайн . подскажите...

Как создать палитру цветов и как узнать выбранный цвет
Подскажите как можно реализовать такую задачу, пользователь выбирает палитру...


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

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

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