- •Методические указания
- •Оглавление
- •Теоретический материал
- •Введение
- •Типы данных Windows. Типы указателей Windows. Использование памяти
- •Венгерская нотация. Префиксы данных
- •Общая структура Windows-приложений
- •Описание класса (стиля) окна. Структура wndclass
- •Создание (визуализация) окна
- •Сообщения. Схема обработки. Прототипы функций-обработчиков сообщений
- •Ресурсы Windows-приложений
- •Встроенные редакторы ресурсов
- •Средства организации вывода данных
- •Средства организации ввода данных
- •Вывод растровых изображений в Windows-приложениях
- •Автоматические шаблоны (каркасы) windows-приложений (тип empty, simple)
- •Создать шаблон Windows-приложения (тип Empty) и изучить его свойства
- •Модифицировать шаблон
- •Создать шаблон Windows-приложения (тип Simple) и изучить его свойства
- •Типовой шаблон (каркас) windows-приложения (тшп)
- •Изучение свойств типового шаблона
- •Изучить листинг типового шаблона
- •Воспроизвести типовой шаблон
- •Изучить свойства типового шаблона
- •Модификация типового шаблона
- •Изменить интерфейс типового шаблона
- •Добавить строку приветствия в типовой шаблон
- •Использование типового шаблона
- •Организовать вывод данных с применением функций
- •Добавить ресурс - меню
- •Организовать ввод данных с применением меню и пользовательского диалогового окна
- •Автоматический шаблон (каркас) windows-приложения (тип hello)
- •Изучение свойств шаблона (тип Hello)
- •Создать шаблон Windows-приложения (тип Hello)
- •Изучить ресурсы шаблона
- •Изучить свойства шаблона
- •Модификация шаблона (тип Hello)
- •Получить типовой шаблон приложения (тшп) из шаблона (тип Hello)
- •Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
- •Индивидуальные задания
-
Средства организации вывода данных
Типовые средства вывода данных из приложений включают: - функции вывода данных на экран (в пользовательскую, клиентскую часть окна) типа TextOut(…), DrawText(…), вывод сообщений в виде модальных окон сообщений MessageBox(…) и другие; - функции вывода данных в файлы (используются традиционные и объектно-ориентированные библиотеки ввода-вывода С, С++). Ввод-вывод данных требует указания контекста используемого для этого устройства. Для его хранения используется переменная типа HDC - дескриптор (хендл) контекста устройства (например HDC hdc).
Так в функции WndProc(…) дескриптор получают от ОС Windows при выполнении функции BeginPaint(…)
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
и освобождают функцией EndPaint(hWnd, &ps).
Могут быть использованы также и другие функции, например, GetDC(…), ReleaseDC(…). Здесь hWnd – дескриптор окна, &ps – ссылка на структуру типа PAINTSTRUCT (PAINTSTRUCT ps), которая хранит информацию о клиентской части окна.
Общая схема взаимодействия программы и контекста устройства при выводе в окно приведена на рисунке ниже

Вывод текста. Выполняется, например, с использованием функции TextOut(…)
ВЫВЕСТИ_ТЕКСТ(Окно, КоординатаX, КоординатаY, СтрокаВывода, ДлинаСтроки).
Пример использования функции
char lpszString[ ] = “Строка вывода”;
int iCount = strlen (lpszString);
int x = 50;
int y = 50;
……………….
TextOut (hdc, x, y, lpszString, iCount); .
Вывод числовых данных. Требует предварительного преобразования чисел в строки, например, с помощью функции wsprintf(…)
ПРЕОБРАЗОВАТЬ_В_СТРОКУ(Строка, ШаблонВывода, СписокВывода).
Пример использования функции
char szMyString [80] = “ ”;
………………..
wsprintf (szMyString, "Был год - %d", 1952);
TextOut (hdc, 0,130, szMyString, strlen(szMyString));
Для преобразования вещественного значения можно использовать sprintf() либо
![]()
ПРЕОБРАЗОВАТЬ_В_СТРОКУ(ВыводимоеЧисло, ДлинаСтроки, Строка).
Пример использования функций
#include <stdio.h>
……………
float FloatNumber1 = 12.345;
float FloatNumber2 = 13.345;
char OutputStr[100];
…………..
sprintf(OutputStr,"%f",FloatNumber1);
TextOut(hdc, 10,10, 9, strlen(OutputStr));
……………
_gcvt (FloatNumber2, strlen(OutputStr), OutputStr );
TextOut(hdc, 100,100, OutputStr, strlen(OutputStr));
Вывод окна сообщения. Производится с использованием функции MessageBox(…)
ВЫВЕСТИ_ОКНО_СООБЩЕНИЯ(Окно, СтрокаСообщения, НазваниеОкна, СоставКнопокОкна).
Параметры MessageBox, определяющие СоставКнопокОкнаСообщения, а также типы возвращаемого результата [см. ПРИЛОЖЕНИЕ. ФункцияMessageBox]. Пример использования функции
MessageBox (hWnd, “Работает MessageBox ”, "Демо", MB_OK); .
Окно сообщения можно использовать для ввода управляющей информации в виде данных о нажатых кнопках, например
if ( MessageBox (hWnd, "Работает MessageBox ", "Демо", MB_OKCANCEL) == IDCANCEL)
MessageBox (hWnd, "IDCANCEL", "Демо", MB_OKCANCEL); .
Средство вывода с усиленными возможностями редактирования – функция DrawText(…)
ИЗОБРАЗИТЬ_ТЕКСТ(ДескрипторУстройства, АдресСтрокиВывода, ДлинаСтрокиВывода,
АдресСтруктурыПрямоугольникаВывода, ФлагиФорматирования).
Прототип
.
Здесь АдресСтруктурыПрямоугольникаВывода задает прямоугольную часть клиентского окна (описывает ее в структуре типа RECT) для организации вывода. Пример использования функции
RECT rt;
…………..
GetClientRect (hWnd, &rt);
DrawText (hdc, “Hello”, strlen(“Hello”), &rt, DT_CENTER);
или
RECT rt;
rt.left = 5;
rt.top = 5;
rt.right = 1000;
rt.bottom = 1000;
…………..
GetClientRect(hWnd, &rt);
DrawText(hdc, “Hello”, strlen(“Hello”), &rt, DT_CENTER);
или с флагом DT_EXPANDTABS.
