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

Уроки по Visual C++ (MFC, платформа .NET)


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

Уроки по Visual C++.NET. Рассылки сайта progs.biz
Выпуск № 86
 
Начало > Visual C++ 6 > ATL > Урок 14

Бьерн Страуструп. Язык программирования С++. Специальное издание.
Бьерн Страуструп. Язык программирования С++. Специальное издание
Заказать на Озоне

Подробнее


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

Visual C++. ATL
Урок 14. Этап разработки и этап выполнения

Наш компонент может вести себя по-разному в зависимости от того, находится он на этапе разработки тестовой программы или на этапе запуска. Типичный пример такого разного поведения - это Timer в Visual Basic 6. Если тестовая форма находится на этапе разработки и программа еще не запущена, то расположенный на форме таймер не работает (т. е. код в обработчие для его события не выполняется), если же запустить программу, то таймер начинает работать и код, написанный для обработки его события, начинает выполняться.

Для выяснения, находится наш компонент на этапе разработки или выаолнения, служит метод GetAmbientUserMode, принимающий по ссылке переменную типа BOOL. Если после вызова этой функции переданный в неее параметр окажется равным TRUE, то контейнер (форма) для нашего компонента находится на этапе выполнения, а если FASLE, то на этапе разработки.

Вот пример кода, показывающий в зависимости от режима, в котором находится компонент, ту или иную надпись (это измененный метод OnDraw, который создается мастером):

    HRESULT OnDraw(ATL_DRAWINFO& di)
    {
        RECT& rc = *(RECT*)di.prcBounds;
        Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);

        SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
        LPCTSTR pszText;
        // Выясняем режим.
        BOOL bUserMode;
        GetAmbientUserMode(bUserMode);
        if(bUserMode)
        {
            pszText = _T("Run mode");
        }
        else
        {
            pszText = _T("Design mode");
        }
        TextOut(di.hdcDraw, 
            (rc.left + rc.right) / 2, 
            (rc.top + rc.bottom) / 2, 
            pszText, 
            lstrlen(pszText));

        return S_OK;
    }

На этапе разработки тестовой формы надпись в компоненте будет Design mode, а на этапе запуска тестовой формы надпись будет Run mode.

Рассылки сайта 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.lessonsfromai
Отписаться

В избранное