
- •Методические указания
- •Оглавление
- •Теоретический материал
- •Введение
- •Типы данных Windows. Типы указателей Windows. Использование памяти
- •Венгерская нотация. Префиксы данных
- •Общая структура Windows-приложений
- •Описание класса (стиля) окна. Структура wndclass
- •Создание (визуализация) окна
- •Сообщения. Схема обработки. Прототипы функций-обработчиков сообщений
- •Ресурсы Windows-приложений
- •Встроенные редакторы ресурсов
- •Средства организации вывода данных
- •Средства организации ввода данных
- •Вывод растровых изображений в Windows-приложениях
- •Автоматические шаблоны (каркасы) windows-приложений (тип empty, simple)
- •Создать шаблон Windows-приложения (тип Empty) и изучить его свойства
- •Модифицировать шаблон
- •Создать шаблон Windows-приложения (тип Simple) и изучить его свойства
- •Типовой шаблон (каркас) windows-приложения (тшп)
- •Изучение свойств типового шаблона
- •Изучить листинг типового шаблона
- •Воспроизвести типовой шаблон
- •Изучить свойства типового шаблона
- •Модификация типового шаблона
- •Изменить интерфейс типового шаблона
- •Добавить строку приветствия в типовой шаблон
- •Использование типового шаблона
- •Организовать вывод данных с применением функций
- •Добавить ресурс - меню
- •Организовать ввод данных с применением меню и пользовательского диалогового окна
- •Автоматический шаблон (каркас) windows-приложения (тип hello)
- •Изучение свойств шаблона (тип Hello)
- •Создать шаблон Windows-приложения (тип Hello)
- •Изучить ресурсы шаблона
- •Изучить свойства шаблона
- •Модификация шаблона (тип Hello)
- •Получить типовой шаблон приложения (тшп) из шаблона (тип Hello)
- •Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
- •Индивидуальные задания
-
Воспроизвести типовой шаблон
Типовой шаблон можно воспроизвести, например, следующими способами: 1) на базе шаблона мастера Win32 Application (тип Simple); 2) на базе шаблона мастера Win32 Application (тип Hello).
Создать типовой шаблон Windows-приложения, используя первый способ. Результаты привести в ОТЧЕТЕ.
Для этого создать проект (WinStandardTemplate) на базе шаблона Windows-приложения (тип Simple) (см. ШаблонSimple). В основной файл проекта *.cpp вставить текст типового приложения [либо ЛистингТиповогоШаблона, либо текст из предыдущего параграфа] вместо имеющегося там текста, сохранив только команду #include "stdafx.h". Внести изменения в полученный текст с целью его структурирования, сохранить и выполнить.
-
Изучить свойства типового шаблона
Изучить свойства ТШП, созданного в предыдущем параграфе: - интерфейс приложения, в части облика и предоставляемых возможностей; - файловый состав проекта (выписать структуру проекта, дерево папок, состав файлов, указать назначение файлов и их соподчиненность по включению); - функциональный состав проекта (привести схему иерархии функций приложения, указать состав и соподчинение функций, описать функции, указав интерфейсы, прототипы, назначение); - ресурсный состав проекта (описать типы используемых ресурсов, их назначение, идентификаторы, выполнить поэлементное описание структуры включенных ресурсов); - состав классов проекта (привести диаграмму классов приложения с указанием базовых классов, описать назначение используемых классов, их свойства и методы). Результаты привести в ОТЧЕТЕ..
-
Модификация типового шаблона
-
Изменить интерфейс типового шаблона
Изменить вид окна ТШП, состав его элементов (кнопок, линий прокрутки и т.п.). Результаты привести в ОТЧЕТЕ.
Для этого снова создать проект ТШП (WinStandardTemplateChanged) из шаблона Windows-приложения (тип Simple) и сохранить его.
Внести изменения в параметры, хранимые в полях структуры wcApp типа WNDCLASS [см. ПоляСтруктурыWNDCLASS].
Внести изменения в параметры функции CreateWindow(…).Изменить значения третьего параметра, определяющего стиль окна dwStyle [см., СтилиОкна]. Например, добавить окно с рамкой, добавить полосы прокрутки, убрать-добавить командные кнопки. Внести изменения в координаты и размеры окна – использовать соответствующие параметры функции CreateWindow (…,…,…, x, y, Width, Height). Сохранить проект.
-
Добавить строку приветствия в типовой шаблон
Для этого выполнить вставку в функцию WndProc(…) приложения следующего фрагмента в место размещения пользовательского текста:
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, "Hello", strlen("Hello"), &rt, DT_CENTER); .
Изменить выводимый в окне текст, а также параметры его форматирования.
-
Использование типового шаблона
-
Организовать вывод данных с применением функций
В проект ТШП (WinStandardTemplateOut), созданный из шаблона Windows-приложения (тип Simple), внести необходимые изменения с целью организации вывода данных в окно. В качестве примера использовать данные параграфа 1.10 (см. ФункцииВводаВывода).
Организовать вывод данных в соответствии с примером ниже
for ( i=0 i<4; i++)
{
wsprintf (szMyString1, "ИНДЕКС i = %d", i );
TextOut (hdc, 0, 115 + 15 * (i + 1), szMyString1, strlen (szMyString1 ) );
}; .
Вывести версию ОС (использовать переменную dwVersion типа DWORD и функцию GetVersion() для получения ее значения). Примерный вид окна результатов представлен рисунком ниже.
wsprintf (szMyString2, "ВЕРСИЯ ОС = %x", dwVersion);
TextOut (hdc, 0,200, szMyString2, strlen(szMyString2 ));
Протабулировать заданную функцию и вывести значения в виде таблицы. Результаты привести в ОТЧЕТЕ.
-
Организовать вывод информации с применением окон сообщений
В проекте ТШП (WinStandardTemplateMB), созданном из шаблона Windows-приложения (тип Simple), организовать вывод данных в окно с применением диалоговых окон MessageBox(). За основу взять исходные данные и примеры параграфа 1.10 (см. ФункцииВводаВывода).
-
Организовать ввод-вывод данных с применением окон сообщений
Модифицировать приложение, созданное в предыдущем параграфе: вывести окно сообщения заданной конфигурации и организовать анализ кода возврата окна с выводом сообщений о типе нажатой клавиши. Реализовать также с помощью MessageBox(). Результаты привести в ОТЧЕТЕ.
-
Организовать вывод графических данных
В проекте ТШП (WinStandardTemplateGRPH), созданном из шаблона Windows-приложения (тип Simple), организовать вывод графических данных (точек, линий, фигур, графиков) в соответствии с параграфом ВыводРастровыхИзображений. Результаты привести в ОТЧЕТЕ.
-
Добавить ресурс - диалоговое окно
В проект ТШП (WinStandardTemplateDLG), созданный на базе шаблона Windows-приложения (тип Simple), внести изменения: сконструировать и добавить диалоговое окно с кнопками, статичными элементами, окошками редактирования. Настроить его свойства и свойства элементов окна, подключить к приложению. Компилировать. Изучить сгенерированный текст описания окна. Параметры стилей диалоговых окон приведены в [ПРИЛОЖЕНИЕ. СтилиДиалоговыхОкон]. Примерный вид создаваемого окна показан ниже. Результаты привести в ОТЧЕТЕ
ПОРЯДОК (СХЕМА) ВЫПОЛНЕНИЯ ЗАДАЧИ.
Описать переменную-дескриптор приложения hInst как глобальную переменную (команда - HINSTANCE hInst), чтобы обеспечить доступность к ней и за пределами функции WinMain(…). Убедиться в работоспособности приложения, выполнив его.
1. Создать ресурсный файл и подключить его к проекту:
- создать файл описания ресурсов (или просто файл ресурсов *.rc), для чего выполнить ГМ-Project-AddToProject-New-Files, выбрать тип – Resource Script, а в качестве имени задать имя типа <ИмяПриложения.rc>. Если ИмяПриложения – main, то соответственно после создания файла ресурсов *.rc в папке проекта появятся файлы с названиями main.rc, resourсe.h;
- подключить файл ресурсов к приложению посредством команды #include "resource.h" ;
- выполнить приложение (диалоговое окно не появится!).
2. Спроектировать и описать ресурс:
- разработать вид и состав окна (здесь две командные кнопки – OK и CANCEL);
- добавить ресурс - диалоговое окно в ресурсный файл приложения командой ГМ-Insert-Resource-Dialog;
- в свойствах окна определить его дескриптор-идентификатор ID (пусть ID = IDD_DIALOG1);
- выполнить приложение (диалоговое окно не появится!).
3. Описать функцию диалогового окна - программу обработчик и ее прототип:
LRESULT CALLBACK TO_PROCESS_DIALOG_BOX (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK TO_PROCESS_DIALOG_BOX (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return FALSE;
case WM_COMMAND:
switch (wParam)
{
case IDOK:
EndDialog(hDlg,TRUE);
break;
case IDCANCEL:
EndDialog(hDlg,FALSE);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
};
- выполнить приложение (диалоговое окно не появится!).
4. Инициализировать диалоговое окно
- вставить вызов-инициализацию окна в пользовательскую секцию функции WndProc(…)
DialogBox( hInst, (LPCTSTR) IDD_DIALOG1, hWnd, (DLGPROC) TO_PROCESS_DIALOG_BOX);
- выполнить приложение - появится диалоговое окно.
5. Добавить в функцию TO_PROCESS_DIALOG_BOX(…) реакцию на тип нажатой клавиши в виде вывода соответствующего окна сообщения типа
MessageBox( hDlg, "OK", "DIALOG_BOX", MB_OK); .