Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОСОБИЕ СозданиеWindowsПриложений.doc
Скачиваний:
21
Добавлен:
01.03.2016
Размер:
3.35 Mб
Скачать
    1. Средства организации ввода данных

Ввод данных для обработки в приложении может производиться: - из окошек редактирования диалоговых окон; - из файлов (с использованием функций традиционных и объектно-ориентированных библиотек ввода-вывода С, С++).

Ввод текста. Выполнняется, например, с использованием окошка (поля) редактирования ресурса – диалоговое окно и функции GetDlgItemText (…)

ВВЕСТИ_ТЕКСТ_ИЗ_ПОЛЯ_ДИАЛОГОВОГО_ОКНА(ДескрипторОкна, ДескрипторПоляРедактирова-

ния, СтрокаДляВводаДанных, ДлинаСтрокиДляВвода).

Прототип функции указан ниже

.

Пример использования функции

GetDlgItemText (hDlg, IDC_EDIT1, NumString1, 15) .

Ввод целых чисел. Выполняется с использованием окошка редактирования ресурса – диалоговое окно и функции GetDlgItemInt (…)

ВВЕСТИ_ЦЕЛОЕ_ИЗ_ПОЛЯ_ДИАЛОГОВОГО_ОКНА(ДескрипторОкна, ДескрипторПоляРедактиро-

вания, NULL, bool НаличиеЗнака).

Прототип функции указан ниже (если НаличиеЗнака = 1, то результат ввода преобразуется в целое со знаком; если НаличиеЗнака = 0, то результат ввода преобразуется в целое без знака)

.

Пример использования функции

Int I;

Int j;

…………………

i = GetDlgItemInt (hDlg, IDC_EDIT1, NULL, 0);

ji = GetDlgItemInt (hDlg, IDC_EDIT1, NULL, 1); .

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

ПРЕОБРАЗОВАТЬ_В_ВЕЩЕСТВЕННОЕ(Строка).

Пример использования функции

char MyString[20];

float MyFloat;

……..

GetDlgItemText (hDlg,IDC_EDIT1, MyString,15);

MyFloat = atof (MyString); .

    1. Вывод растровых изображений в Windows-приложениях

Интерфейс графических устройств GDI обрабатывает операторы работы с графикой, обеспечивая интерфейс использования, не зависящий от особенностей конкретных устройств вывода. Включает графические примитивы – наборы функций для рисования базовых элементов.

При выводе на экран в используемых функциях вывода, как правило, необходимо задание координат вывода в клиентской области экрана. Для задания координат могут использоваться разные режимы отображения, например логические единицы (виртуальная система координат) или логические координаты (пикселы, мм, дюймы, … ). Преобразование координат в физические (в систему координат устройства, т.е. в пикселы) производится в соответствии с установленным режимом отображения. Windows поддерживает семь режимов отображения, описанных в заголовочных файлах <windows.h> и <wingdi.h> [см. ПРИЛОЖЕНИЕ. РежимыОтображения]. Смена режима отображения выполняется функцией SetMapMode(…).

По умолчанию принят режим отображения MM_TEXT – пиксельные координаты (с шагом смещения в пикселах и со смещением при увеличении значения координаты по оси х вправо и по оси у вниз экрана). Верхний левый угол клиентской области экрана имеет координаты (0,0). В других режимах возможно другое направление смещения с шагом смещения в 0.1, 0.01 мм, в 0.01, 0.001 дюйма.

При рисовании используют: - контекст устройства (переменная типа HDC hdc. Например, hdc = BeginPaint (hWnd, &ps) ) и структуру типа PAINTSTRUCT ps; - перья (средство рисования контуров, линий с атрибутами – цвет, стиль, толщина); - кисти (средство заливки замкнутых контуров, рисования графических объектов с атрибутами – цвет, стиль заливки, стиль штриховки); - окно вывода (с заданием его атрибутов, например цвета фона, текста, областей вывода и т.д.).

Для получе­ния дескрипторов различных стандартных графических объектов, включая кисти, перья используют API-функцию GetStockObject (…) с прототипом:

HGDIOBJ GetStockObject (int Оbject).

Указанная функция возвращает дескриптор объекта, задаваемого параметром Оbject (тип HGDIOBJ задает дескриптор GDI-объекта).

Стили перьев см. в [ПРИЛОЖЕНИЕ. ПараметрыФункцииCreatePen]. Пример получения стандартного пера показан ниже

HPEN hPen;

………….

hPen = SelectObject (hdc, GetStockObject (WHITE_PEN)); .

Для создания пользовательского пера используется функция CreatePen(…).

Аналогично организуется работа с кистью – ресурсом рисования на экране с использованием готовой маски определенного размера, цвета и имеющем некоторый шаблон заполнения. Типовые параметры кисти см. в [ПРИЛОЖЕНИЕ. ВстроенныеКисти].

Схема взаимодействия программы и контекстов устройств при выводе растрового изображения в окно приведена на рисунке ниже.

Основные графические примитивы: - дуги эллипса Arc(…), ArcTo(…); - эллипсы и окружности Ellipse(…); - линии от текущей точки до точки, указанной в функции LineTo(hdc, x, y); - прямоугольники Rectangle(…); - полигоны Polygon(…); - связанные отрезки прямых PolyLine(…). А также функция рисования точки COLORREF SetPixel (hdc, x, y, COLORREF crColor), функция получения цвета точки в виде переменной типа COLORREF crColor = GetPixel(hdc, x, y), функция перемещения курсора к указанной точке с сохранением координаты текущей точки в структуре типа LPPOINT - BOOL MoveToEx(hdc, x, y, LPPOINT pPoint).

Пример использования функций приведен ниже

WndProc(…)

{

…….

HPEN hPen;

……

switch (messg)

{

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

hPen = CreatePen(PS_SOLID,1,RGB (0, 255, 0) ); //или PS_DASH или RGB (255, 0, 0)

SelectObject (hdc, hPen);

Ellipse ( hdc, 100, 100, 300, 300 );

MoveToEx(hdc, 50, 50, NULL);

LineTo(hdc, 400,400);

……………….

ValidateRect(hWnd,NULL);

EndPaint(hWnd, &ps);

break;

…………………..

}

} .