Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры печатать.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
379.36 Кб
Скачать

Особенности Microsoft Foundation Classes, относящиеся к Windows 95 и nt.

Microsoft утверждает, что использующий Microsoft Foundation Classes программист будет иметь возможность пользоваться такими средствами, которые не предлагаются другими поставщиками объектно-ориентированных библиотек. Эти средства в особенности полезны при создании приложений Windows 95 и Windows NT. В них входят:

  • Поддержка всех функций, управляющих элементов и сообщений Windows, графических примитивов GDI, меню и окон диалога.

  • Ликвидация большинства операторов switch/case, использование которых часто служит источником ошибок. Для всех сообщений возможна непосредственная связь с методом класса.

  • Улучшенная поддержка диагностики за счет возможности записывать в файл информацию об объектах программы. Есть также возможность проверять значения переменных класса.

  • Лаконичный текст с эффективной реализацией.

  • Определение типа объекта во время выполнения программы. Это позволяет динамически манипулировать полями объекта при создании экземпляра класса.

Изучаем win32mfctmp.Cpp.

В примере показано, как можно создавать в приложении MFC новые кисти и перья, а также использовать некоторые из графических примитивов GDI. Рассмотрим текст в начале функции OnPaint(). Здесь создается массив для хранения цветов, используемых при создании кистей и перьев.

static DWORD dwColor[12]=

{

RGB(0,0,0), // черный

RGB(255,0,0), // красный

RGB(0,255,0), // зеленый

RGB(0,0,255), // синий

RGB(255,255,0), // желтый

RGB(255,0,255), // лиловый

RGB(0,255,255), // циан

RGB(0,80,80), // оттенок 1

RGB(80,80,80), // оттенок 2

RGB(80,80,0), // оттенок 3

RGB(80,0,80), // оттенок 4

RGB(255,255,255) // белый

};

Классы CBrush и СРеn позволяют передать объект-кисть и объект-перо методам классов, производных от CDC (базовый класс для контекста устройства). Кисти могут быть сплошные (solid), штрихованные (hatched) или узорчатые (patterned). Перья могут рисовать сплошные (solid), пунктирные (dashed) и точечные (dotted) линии

CBrush newbrush; // новая кисть

CBrush* oldbrush; // старая кисть

CPen newpen; //новое перо

CPen* oldpen; //старое перо

Поскольку различные примитивы используются аналогичным образом, рассмотрим только два фрагмента. В первом из них изображается широкая черная линия, идущая по диагонали окна:

// толстая черная диагональная линия

newpen.CreatePen(PS_SOLID,6,dwColor[0]);

oldpen= dc.SelectObject(&newpen);

dc.MoveTo(20,20);

dc.LineTo(100,100);

dc.TextOut(60,20,"<-diagonal line",15);

При инициализации объекта- перо функцией CreatePen() задается сплошная черная линия шириной в шесть логических единиц. Когда перо проинициализировано, используется перегруженная функция Select0bject(), которая связывает готовое перо с контекстом устройства. Эта функция возвращает перо, использовавшееся ранее. Функции MoveTo() и LineTo() задают начальную и конечную точки линии, которая будет проведена выбранным пером. Наконец, функция TextOut() выводит подпись.

С кистями работают подобным же образом. В следующем фрагменте текста задается кисть, выполняющая перекрестную штриховку (HS_CROSS) синим цветом. Кисть выбирается в контекст устройства так же, как и перо.

// черный прямоугольник, закрашенный серым

newbrush.CreateSolidBrush(dwColor[7]);

oldbrush= dc.SelectObject(&newbrush);

dc.Rectangle(25,300,150,375);

dc.TextOut(50,325,"rectangle",9);