Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 19:51   #1
programmm
Пользователь
 
Регистрация: 03.04.2011
Сообщений: 36
По умолчанию рисование прямоугольника

Прошу подсказать следующее вот у меня есть код создания прямоугольника красноватого оттенка .Подскажите как написать чтоб при нажатии на левую мышь над прямоугольником она меняла цвета в следующей последовательности красны зелёный синий красный очень надо прошу помочь спс заранее вот код рисования прямоугольника
case WM_PAINT:{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
COLORREF g_Green = RGB(255,0,0);
pc.right = oX+100;
pc.bottom = oY+100;
FillRect(hdc,&pc,CreateSolidBrush(g _Green));
EndPaint(hwnd,&ps);
break;}
programmm вне форума Ответить с цитированием
Старый 16.05.2011, 19:57   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

RGB(255,0,0) - красный
RGB(0,255,0) - зеленый
RGB(0,0,255) - синий

остальной код не меняется.

> как написать чтоб при нажатии на левую мышь над прямоугольником она меняла цвета

чтоб левая мышь меняла цвета, программа не нужна
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.05.2011, 19:59   #3
programmm
Пользователь
 
Регистрация: 03.04.2011
Сообщений: 36
По умолчанию

Veniside спс я понимаю)))я хотел бы узнать как дописать мой код чтоб при нажатии левой клаивши прямоугольник менял цвета помогите пожалуйсат
programmm вне форума Ответить с цитированием
Старый 16.05.2011, 20:06   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну у вас case уже есть, WM_PAINT обрабатывается

вот и обрабатывайте в том же кейсе WM_LBUTTONDOWN, координаты там вам передадут:

Код:
xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);
самое сложное, не промазать мимо прямоугольника (т.е. понять, когда координаты нажатия попали внутрь, а когда нет).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.05.2011, 20:09   #5
programmm
Пользователь
 
Регистрация: 03.04.2011
Сообщений: 36
По умолчанию

спс большое попробую разобраться!!!)))
programmm вне форума Ответить с цитированием
Старый 16.05.2011, 20:14   #6
programmm
Пользователь
 
Регистрация: 03.04.2011
Сообщений: 36
По умолчанию

сорь а не могли бы вы показать как WM_LBUTTONDOWN использовать просто принцип не понятен
programmm вне форума Ответить с цитированием
Старый 16.05.2011, 20:24   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

принцип "начни хоть с чего-то, дальше ясно станет само":

Код:
case WM_LBUTTONDOWN:
{
  int xPos = GET_X_LPARAM(lParam); 
  int yPos = GET_Y_LPARAM(lParam);

  // тут проверяем, попала ли точка (xPos, yPos) внутрь прямоугольника
  // типа xPos больше oX и меньше 100 и т.п.
  // если попала, меняем переменную, отвечающую за цвет по циклу
  // и посылаем окну InvalidateRect(), чтобы оно перерировалось где надо

  break;
}
ещё немного, и я допишу оставшийся код )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.05.2011, 20:29   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
CreateSolidBrush
создание есть, а где удаление обьекта?(да и создавать каждый раз, зачем? можно один раз в начале программы)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.05.2011, 20:29   #9
programmm
Пользователь
 
Регистрация: 03.04.2011
Сообщений: 36
По умолчанию

Ну допишите пожалйста ))) просто не могу написать чтоб она меняла цвета почемуто не меняет.Допишите пож )))
programmm вне форума Ответить с цитированием
Старый 16.05.2011, 21:48   #10
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Прикрепил в посте. Код плохой (по быстрому написал), но для примера сойдет.
Вложения
Тип файла: txt color_box_0.txt (5.5 Кб, 128 просмотров)
zotox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование прямоугольника в С# vedro-compota C# (си шарп) 4 19.12.2010 10:19
Вращение прямоугольника Ponaroshku Паскаль, Turbo Pascal, PascalABC.NET 11 03.11.2009 09:22
Вращение прямоугольника Ponaroshku Общие вопросы Delphi 0 25.05.2009 23:09
Стороны прямоугольника Caragius Microsoft Office Excel 8 27.12.2008 03:02