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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2010, 23:05   #1
inzener-tolik
Пользователь
 
Регистрация: 06.03.2010
Сообщений: 12
По умолчанию Изменение размеров фигуры по F1

Здравствуйте!
Я создал своё окно, при нажатие клавиши мыши, в нём рисуется прямоугольник.
Подскажите как сделать, чтобы при нажатии клавиш F1..F9 менялся размер фигуры
и с помощью какой функции можно очистить окно (т.е удалить нарисованную фигуру).
Спасибо.

Прямоугольник нарисовал так:
LONG xCenter = rect.right/4 ;
LONG yCenter = rect.bottom / 4;
SelectObject(hDC, CreateSolidBrush(RGB(100, 209, 80)));
Rectangle(hDC, rect.left, rect.top, xCenter, yCenter);

может есть варианты получше?
Клавиши обрабатываю WM_KEYDOWN

Последний раз редактировалось inzener-tolik; 12.03.2010 в 23:35.
inzener-tolik вне форума Ответить с цитированием
Старый 13.03.2010, 08:25   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

а в чём вопрос-то?
в обработчике WM_KEYDOWN при нажатии клавиш F1..F9 рисуй другую фигуру. Ellipse - рисование эллипса или окружности, Arc рисование дуги, все остальные фигуры только с помощью LineTo и MoveTo
rpy3uH вне форума Ответить с цитированием
Старый 13.03.2010, 11:37   #3
inzener-tolik
Пользователь
 
Регистрация: 06.03.2010
Сообщений: 12
По умолчанию

Да так и пришлось сделать)
Я хотел немножко подругому, ну да ладно. Народ подскажите ещё кое-что:
1) как очистить окно после рисования фигуры? Invalidate,UpdateWindow(wnd)? если да то как их правильно использовать?
Код:
2)case WM_LBUTTONDBLCLK:
	   mesage1 = MessageBox(hwnd,"Приложение будет закрыто!Вы уверенны,что хотите продолжить?",NULL,MB_YESNO | MB_ICONQUESTION);

		if(IDYES ==mesage1)
		   DestroyWindow(hwnd);
		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

		case WM_RBUTTONDBLCLK:
		ShowWindow(hwnd,SW_MINIMIZE);
		break;

case WM_PAINT:
EndPaint(hwnd, &ps);
break;
case WM_KEYDOWN:
switch (wparam)
	{
		 case VK_F1:
				hDC = BeginPaint(hwnd, &ps);
				GetClientRect(hwnd, &rect);
				{
				LONG xCenter = rect.right/4 ;
				LONG yCenter = rect.bottom / 4;
					// Rectangle(hDC, rect.left, yCenter, rect.right, yCenter + 8);
					  // Rectangle(hDC, xCenter, rect.top, xCenter + 8, rect.bottom);

					 SelectObject(hDC, CreateSolidBrush(RGB(100, 209, 80)));
					 Rectangle(hDC, rect.left, rect.top, xCenter+8, yCenter+8);
					 }
					   break;
                 case VK_F2: //ну и так далее
2)Ели я пытаюсь RBUTTONDBLCL'ом закрыть окно до того как, нарисовал фигуру, то оно повисает,а если нарисовал и потом закрываю то всё ок?
Где-то я читал, что нельзя использовать такую конструкцию:case WM_PAINT:
EndPaint(hwnd, &ps);
break;
может из-этого?
3)Фигура рисуется при нажатие F1, F2... только по очереди(т.е после ресета) как сделать,чтоб рисовались подряд? Или это уже не через case?
inzener-tolik вне форума Ответить с цитированием
Старый 23.03.2010, 23:48   #4
inzener-tolik
Пользователь
 
Регистрация: 06.03.2010
Сообщений: 12
По умолчанию

Уже сделал.Тема закрыта
inzener-tolik вне форума Ответить с цитированием
Старый 24.03.2010, 15:37   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
hDC = BeginPaint(hwnd, &ps);
так получать контекст устройства можно только при обработке WM_PAINT, в остальных случаях нужно использовать GetDC и обязательно потом освобождать его ReleaseDC
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размеров фигур artemavd Общие вопросы Delphi 2 03.03.2010 21:40
Изменение размеров окна Light Alloy Общие вопросы Delphi 2 06.10.2009 07:21
Изменение размеров цикла mchip Microsoft Office Excel 6 16.03.2009 13:21
Изменение размеров pinksky Microsoft Office Excel 3 18.04.2008 15:52
Изменение размеров элементов romets Win Api 2 18.02.2008 23:28