Отправляет email-рассылки с помощью сервиса Sendsay

Windows API

  Все выпуски  

Windows API


Информационный Канал Subscribe.Ru

Windows API. Рассылки сайта progs.biz
Выпуск № 26
 
Начало > WinAPI > Основы > Урок 28

Г. Шилдт. Самоучитель C++.
Г. Шилдт. Самоучитель C++
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 28.

Windows API
Урок 28. Пример с пропаданием цвета

Сейчас мы посмотрим, почему надо обязательно удалять кисть (и другие объекты GDI - перья и др.). Делаем мы это, как вы помните из предыдущего урока, посредством вызова API-функции DeleteObject.

Закомментируйте эту строчку в вашем коде:

    ...
    //DeleteObject(br);
    ...

Теперь мы нашу кисть не уничтожаем.

Остается вызвать код по созданию кисти (т. е. функцию CreateSolidBrush) много-много раз. Можно, например, запустить программу и изменять размер окна - тогда будет вызываться обработчик для WM_PAINT. Но это очень долгий путь, так у нас кисти быстро не кончатся. Давайте поступим по-другому. А именно, будем вызывать WM_PAINT по таймеру, причем установим частоту работы таймера большой. Делаем это вот так:

LONG WINAPI WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    ...
    switch (Message){
    ...
    case WM_TIMER:
        // Перерисовываем окно по таймеру.
        InvalidateRect(hWnd, NULL, TRUE);
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        br = CreateSolidBrush(RGB(255, 0, 0));
        SelectObject(hdc, br);
        Ellipse(hdc, 10, 10, 40, 40);
        // Закомментировали удаление кисти.
        //DeleteObject(br);
        EndPaint(hWnd, &ps);
        break;

Разумеется, таймер мы должны создать (см. урок 6). При создании таймера укадите интервал как можно меньше (например, установите его равным 1 миллисекунде, т. е. уствновите в 1).

Компилируем и запускаем программу. Сначала все будет вроде точно также. Но это только первое время. Если подождать некоторое время (минуты две-три или около того), то наш кружок станет белого цвета!

Это потому, что краска кончилась ;). Точнее сказать не краска, а кисти, которых может быть только ограниченное число. Так что не забывайте вызывать функцию DeleteObject.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapilessons
Отписаться

В избранное