Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
#1

Почему при изменении размера окна не меняется цвет заполнения? - C++

28.06.2010, 22:03. Просмотров 749. Ответов 5
Метки нет (Все метки)

Почему при изменении размера окна не меняется цвет заполнения?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
     case WM_PAINT:
    ...
            ... 
        static BYTE r,g,b;
        r=g=b=0;
 
        SetClassLong(hWnd, GCL_HBRBACKGROUND, (LONG) CreateSolidBrush(RGB(r++,g++,b++)) );
        
        if(r == 255)
             r=g=b=0;
                       break;
              ...
              ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2010, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему при изменении размера окна не меняется цвет заполнения? (C++):

Как сделать перерисовку окна при изменении горизонтального размера - C++
вобщем задача написать оконное приложение на с++ как сделать так чтобы окно появлялось по центру экрана есть какие то функции или в...

Почему не меняется цвет текста? - C++
Не пойму почему не меняется цвет текста? void FuncThread(HWND hWnd) { HDC hdc; hdc = GetDC(hWnd); ...

Размер контейнера не меняется при изменении итератора - C++
Почему размер контейнера не меняется? std::string m; std::string::iterator mi = m.begin(); *mi = 'd'; std::cout << m <<...

Double free or corruption при изменении размера динамического массива - C++
Сразу скажу, что у меня задание на работу с памятью, и std::vector по условию использовать запрещено. #include <iostream> #include...

Выравнивание компонентов при изменении размеров главного окна - C++
Посоветуйте, как лучше создавать интерфейс пользователя, чтобы при изменении размеров главного окна, в нем выравнивали свои позиции...

Почему при применении оператора = меняется правый операнд? - C++
#include <stdio.h> int main () { int*p; int array ; array = 100; printf ("%d\n", array ); p= array; printf...

5
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
28.06.2010, 22:27 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <windows.h>
using namespace std;
 
main()
{
  HANDLE consoleOutput; 
 consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); 
  SetConsoleTextAttribute(consoleOutput, 60 | 20 | 60);
  cout << "TEXT";
  
  cin.get();
}
вот пример как я делаю...есть еще второй способ
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.06.2010, 22:43 #3
В процедуре регистрации класса окна необходимо указать соответствующий стиль:

C
1
2
3
4
   WNDCLASS wc;
   /* заполнение других параметров */
   wc.style = CS_VREDRAW | CS_HREDRAW; /* указывает на необходимость перерисовки области при ее изменении */
   RegisterClass(&wc);
0
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
28.06.2010, 22:59  [ТС] #4
fasked, именно эти стили и установлены. Как я понимаю при каждой обработке WM_PAINT по идее должна меняться структура класса окна (WNDCLASSEX), а именно параметр wc.hbrBackground, но окно перерисовывается только раз в черный цвет, хотя RGB инкрементирую.
почему?
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.06.2010, 23:05 #5
так вот ты о чем.
Цитата Сообщение от jonson Посмотреть сообщение
r=g=b=0;
ты каждый раз обнуляешь переменные. вот и все.

Добавлено через 30 секунд
попробуй вот так:
C
1
2
3
4
         static BYTE r = 0, g = 0, b = 0;
         SetClassLong(hWnd, GCL_HBRBACKGROUND, (LONG) CreateSolidBrush(RGB(r++,g++,b++)));
         if(r == 255)
            r = g = b = 0;
1
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
28.06.2010, 23:17  [ТС] #6
fasked спасибо, слона то я и не заметил...
0
28.06.2010, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2010, 23:17
Привет! Вот еще темы с ответами:

Почему при проверке заполнения массива выводятся неправильные значения? - C++
// ConsoleApplication15.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Почему при изменении литерала const char* программа падает? - C++
точнее литерала. ладно, если бы выходил за пределы

Необработанное исключение при изменение размера окна - C++
Если долго менять размер у окна, то минут через 5 вылезет необработанное исключение, окно зависает и превращается во что то непонятное. ...

Настройка размера окна при открытии программы (main(), не WinMain() - C++
Доброго времени суток, форумчане! Во первых, хочу вас всех поблагодарить за помощь, благодаря вам я написал свою первую серьёзную...


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

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

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