C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 71 - Пробуем рисовать / Диалоговые окна / Visual C++

Шаг 71 - Пробуем рисовать

Мы с Вами попробуем пока просто закрасить. Создадим функцию DrawWindowArea.

void CTestPaintDlg::DrawWindowArea(BOOL b)
{

}

И будем вызывать ее из сообщений.

BOOL CTestPaintDlg::OnNcActivate(BOOL bActive) 
{
	DrawWindowArea(TRUE);
	return TRUE;
}

void CTestPaintDlg::OnNcPaint() 
{
	DrawWindowArea(TRUE);
}

Ничего не изменится. Для того, чтобы отрисовать окно нам нужно получить контекст окна. Получим его.

void CTestPaintDlg::DrawWindowArea( BOOL b)
{
	CDC* cdWinDC= GetWindowDC();
	ReleaseDC(cdWinDC);
}

А теперь просто закрасим его красным цветом:

void CTestPaintDlg::DrawWindowArea( BOOL b)
{
	CDC* cdWinDC= GetWindowDC();
	CRect cr;
	CRect crtemp;
	GetWindowRect(&cr);
	crtemp.left=0;
	crtemp.top=0;
	crtemp.right = cr.Width();
	crtemp.bottom =  cr.Height();
	CBrush tempBrush1;
	tempBrush1.CreateSolidBrush(RGB(255,0,0));
	cdWinDC->FillRect(&crtemp,&tempBrush1);
	ReleaseDC(cdWinDC);
}

Как видите, во-первых, нам пришлось пересчитать прямоугольник в координаты окна. А вот результат.

71_1.gif (3181 b)

Немного поработав с этим окном Вы увидите кучу недостатков, мигание изображения например или исчезновение клиентской области. Все это говорит о том, что зарисовывать нужно не все, а только четыре прямоугольника, которые еще нужно рассчитать.


| |
Автор Каев Артем.
[AD]