Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

2.  Выберите Win32 Application и в строке ввода Project Name укажите имя проекта При необходимости измените путь к папке проекта. Затем нажмите кнопку OK.

3.  Добавьте в проект файлы с исходным текстом: заголовочный файл Hello. h и файл реализации Hello. cpp. Для добавления каждого файла выбирайте команду FileÞNew, затем указывайте тип и имя файла. Убедитесь, что флажок Add To Project включен, так что этот файл будет добавлен в проект. Затем нажмите OK, и введите содержимое файла.

4.  Выберите команду ProjectÞSettings и перейдите на закладку General. В списке Microsoft Foundation Classes выберите вариант компоновки Use MFC In A Shared DLL и затем нажмите OK.

Параметр связи с MFC типа Use MFC In A Shared DLL приводит к уменьшению исполняемого файла, т. к. позволяет приложению обращаться к MFC посредством DLL. Если вы выберете вариант компоновки Use MFC In A Static Library, то Visual C++ присоединит к исполняемому EXE-файлу вашего приложения двоичный код MFC, что приведет к значительному увеличению объема EXE-файла. С другой стороны, приложение, статически скомпонованное с MFC, можно запустить на любом компьютере, независимо от того, есть на нем MFC DLL или нет.

3)  Прочитайте документ "Венгерская форма записи имен переменных и типы данных Windows" (см. CD-ROM). Какой тип имеют переменные с именами bRepaint, szMsg, nAge, cxLength, clrBtn? Запишите операторы описания этих переменных.

4)  Откройте файл WinMain. cpp (хранится в папке \DevStudio\Vc\Mfc\Src) и разберитесь с функцией AfxWinMain по описанию из п.2.4 лекции. Зачем в ней нужен оператор goto?

НЕ нашли? Не то? Что вы ищете?

Посмотрите исходный текст функций CWinApp::Run (файл AppCore. cpp) и CWinThread::Run (файл ThrdCore. cpp) и найдите, где именно вызываются OnIdle и ExitInstance.

5)  В приложении Hello обеспечьте вывод символьной строки красным цветом внутри зеленого описывающего прямоугольника. В контексте устройства для задания цвета текста и фонового цвета предназначены функции-члены SetTextColor и SetBkColor. Значение цвета имеет тип COLORREF. Это значение можно сформировать с помощью макроса RGB(r, g, b), например, красный цвет записывается так: RGB(255, 0, 0).

6)  На основе приложения Hello разработайте приложение, которое будет реагировать на следующие сообщения Windows:

WM_LBUTTONDOWN

щелчок левой кнопкой мыши

WM_RBUTTONDOWN

щелчок правой кнопкой мыши

WM_KEYDOWN

нажатие клавиши на клавиатуре

WM_MOVE

перемещение окна

WM_SIZE

изменение размеров окна

WM_NCRBUTTONDOWN

щелчок правой кнопкой мыши в неклиентской области окна

WM_CLOSE

закрытие окна

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

Прототипы функций-членов CMainWnd для обработки указанных сообщений узнайте в справочной системе, выполняя поиск по именам соответствующих макросов карты сообщений (ON_WM_LBUTTONDOWN и т. п.)

7)  Изучите англо-русский словарь терминов по теме 4-й лекции (см. CD-ROM).

Лекция 5. Отображение информации с помощью модуля GDI

1. Контекст устройства

В однозадачных ОС (MS-DOS), любая программа может рисовать непосредственно на экране. В многозадачных ОС программы так действовать не должны, т. к. при одновременной работе нескольких программ пользователь должен видеть на экране согласованную картину, сформированную в результате их совместной работы. Экранная область, принадлежащая программе A, должна быть защищена от информации, выводимой программой B. Доступом к видеоадаптеру, как и к другим устройствам, управляет ОС. Она позволяет программам выводить информацию только в пределах их окон. В Windows графическое отображение выполняет модуль GDI.

Windows-приложение не может рисовать что-либо непосредственно на экране, принтере или каком-нибудь другом устройстве вывода. Все операции рисования производятся на воображаемом "устройстве", представляемом с помощью контекста устройства. Контекст устройства – эта служебная внутренняя структура Windows, в которой хранятся все характеристики устройства и его текущего состояния, необходимые модулю GDI для рисования. До начала рисования приложение должно получить от модуля GDI дескриптор контекста устройства. Этот дескриптор надо передавать в качестве первого параметра всем функциям рисования GDI. Без корректного дескриптора контекста устройства, GDI не будет знать, на каком именно устройстве и в какой его области рисовать пикселы. В контексте устройства хранятся параметры, позволяющие GDI выполнять отсечение и рисовать графические примитивы только внутри заданных областей. Одни и те же функции GDI могут рисовать примитивы на различных устройствах, т. к. специфика устройства скрыта в контексте устройства.

MFC избавляет программиста от необходимости непосредственной работы с дескрипторами контекстов устройств. Дескриптор контекста устройства и функции рисования GDI инкапсулированы в класс "Контекст устройства" – CDC. От него унаследованы классы для представления различных контекстов устройств (см. табл. 5.1).

Таблица 5.1. Классы различных контекстов устройств

Имя класса

С чем связан этот контекст устройства

CPaintDC

Клиентская область окна (только в обработчиках OnPaint)

CClientDC

Клиентская область окна

CWindowDC

Окно, включая неклиентскую область

CMetaFileDC

Метафайл GDI (аналог макроса, в котором запоминаются вызовы функций GDI и потом их можно многократно воспроизводить)

Объекты этих классов можно создавать как автоматически, так и динамически. В конструкторе и деструкторе каждого класса вызываются функции GDI для получения и освобождения дескрипторов контекста устройства. Например, создать контекст устройства в обработчике OnPaint можно так:

CPaintDC dc(this);

// Вызовы каких-либо функций-членов для рисования примитивов

Конструктору CPaintDC передается указатель на окно, с которым будет связан контекст устройства.

Класс CPaintDC предназначен для рисования в клиентской области окна при обработке сообщений WM_PAINT. Но приложения Windows могут выполнять графическое отображение не только в OnPaint. Например, требуется рисовать в окне окружность при каждом щелчке мышью. Это можно делать в обработчике сообщения мыши, не дожидаясь очередного сообщения WM_PAINT. Для подобных операций отображения предназначен класс CClientDC. Он создает контекст устройства, связанный с клиентской областью окна, которым можно пользоваться за пределами OnPaint.

Ниже приведен пример рисования диагоналей в клиентской области окна с помощью CClientDC и двух функций-членов, унаследованных от CDC.

void CMainWindow::OnLButtonDown( UINT nFlags, CPoint point )

{

CRect rect;

GetClientRect(&rect);

CClientDC dc(this);

dc. MoveTo( rect. left, rect. top );

dc. LineTo( rect. right, rect. bottom );

dc. MoveTo( rect. right, rect. top );

dc. LineTo( rect. left, rect. bottom );

}

В редких случаях программе требуется получить доступ ко всему экрану (например, в программе захвата экрана). Тогда можно создать контекст устройства как объект класса CClientDC или CWindowDC, но в конструктор передать нулевой указатель. Например, нарисовать окружность в левой верхней части экрана можно так:

CClientDC dc( NULL );

dc. Ellipse( 0, 0, 100, 100 );

1.1 Атрибуты контекста устройства

В контексте устройства хранится ряд атрибутов, влияющих на работу функций рисования. В классе CDC есть функции-члены для чтения текущих значений и для изменения этих атрибутов (табл. 5.2).

Таблица 5.2. Основные атрибуты контекста устройства

Атрибут

Значение по умолчанию

Функция-член CDC для задания значения

Функция-член СDC для получения значения

Цвет текста

Черный

SetTextColor

GetTextColor

Цвет фона

Белый

SetBkColor

GetBkColor

Режим фона

OPAQUE

SetBkMode

GetBkMode

Режим преобразования координат

MM_TEXT

SetMapMode

GetMapMode

Режим рисования

R2_COPYPEN

SetROP2

GetROP2

Текущая позиция

(0,0)

MoveTo

GetCurrentPosition

Текущее перо

BLACK_PEN

SelectObject

SelectObject

Текущая кисть

WHITE_BRUSH

SelectObject

SelectObject

Текущий шрифт

SYSTEM_FONT

SelectObject

SelectObject

Различные функции рисования CDC пользуются атрибутами по-разному. Например, цвет, ширина и стиль (сплошная, штриховая и т. п.) линии для рисования отрезка функцией LineTo определяются текущим пером. При рисовании прямоугольника функцией Rectangle модуль GDI рисует контур текущим пером, а внутреннюю область заполняет текущей кистью. Цвет текста, фона и шрифт используются всеми функциями отображения текста. Фоновый цвет применяется также при заполнении промежутков в несплошных линиях. Если фоновый цвет не нужен, его можно отключить (сделать "прозрачным"):

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32