- •Методические указания
- •Оглавление
- •Теоретический материал
- •Введение
- •Типы данных Windows. Типы указателей Windows. Использование памяти
- •Венгерская нотация. Префиксы данных
- •Общая структура Windows-приложений
- •Описание класса (стиля) окна. Структура wndclass
- •Создание (визуализация) окна
- •Сообщения. Схема обработки. Прототипы функций-обработчиков сообщений
- •Ресурсы Windows-приложений
- •Встроенные редакторы ресурсов
- •Средства организации вывода данных
- •Средства организации ввода данных
- •Вывод растровых изображений в Windows-приложениях
- •Автоматические шаблоны (каркасы) windows-приложений (тип empty, simple)
- •Создать шаблон Windows-приложения (тип Empty) и изучить его свойства
- •Модифицировать шаблон
- •Создать шаблон Windows-приложения (тип Simple) и изучить его свойства
- •Типовой шаблон (каркас) windows-приложения (тшп)
- •Изучение свойств типового шаблона
- •Изучить листинг типового шаблона
- •Воспроизвести типовой шаблон
- •Изучить свойства типового шаблона
- •Модификация типового шаблона
- •Изменить интерфейс типового шаблона
- •Добавить строку приветствия в типовой шаблон
- •Использование типового шаблона
- •Организовать вывод данных с применением функций
- •Добавить ресурс - меню
- •Организовать ввод данных с применением меню и пользовательского диалогового окна
- •Автоматический шаблон (каркас) windows-приложения (тип hello)
- •Изучение свойств шаблона (тип Hello)
- •Создать шаблон Windows-приложения (тип Hello)
- •Изучить ресурсы шаблона
- •Изучить свойства шаблона
- •Модификация шаблона (тип Hello)
- •Получить типовой шаблон приложения (тшп) из шаблона (тип Hello)
- •Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
- •Индивидуальные задания
-
Автоматический шаблон (каркас) windows-приложения (тип hello)
-
Изучение свойств шаблона (тип Hello)
-
Создать шаблон Windows-приложения (тип Hello)
Указанный шаблон можно получить, используя мастер Win32 Application (тип Hello). Он генерирует текст, похожий на типовой шаблон приложения ТШП [см. ЛистингТШП]. Но получаемое автоматически приложение: - по-другому структурировано (разбито на функции и использует расширенные структуры данных с суффиксом EX); - поддерживает несколько другой интерфейс. Так к стандартному окну с командным
меню и кнопками максимизации-минимизации окна добавляется пользовательское меню с пунктами Файл (подпункт Выход) и Помощь (подпункт About с вызовом модального диалогового окна About). Таким образом, новый интерфейс содержит форму, которая включает меню, пиктограмму, стандартные оконные кнопки и название окна. Диалоговое окно About содержит пиктограмму, выводимый текст и кнопку ОК.
-
Изучить ресурсы шаблона
В полученный шаблон автоматически внесены изменения для обеспечения работы: - с диалоговым окном About; - с пунктами меню.
1. Диалоговое окно About (номер ID = IDD_ABOUTBOX, см. свойства окна в ресурсном просмотрщике).
1.1. С указанным ресурсом связаны события WM_INITDIALOG (инициализация окна) и WM_COMMAND (выбор команды – нажатие соответствующей кнопки окна, например IDOK или IDCANCEL). Обработка событий выполняется новой функцией
LRESULT CALLBACK About (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
Название функции может быть любым, главное, чтобы на него был настроен обработчик WndProc().
1.2. Само окно активизируется после выбора в меню подпункта About. При этом генерируется событие типа WM_COMMAND (case IDM_ABOUT:…), подхватываемое функцией WndProc(…). Функция инициализирует и рисует окно About командой
DialogBox ( hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC) About ) ,
где IDD_ABOUTBOX – номер диалогового окна, а About – название функции обработки связанных с ним событий-сообщений (см. предыдущий пункт). Фрагмент текста функции WndProc(…) приведен ниже
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
………………
switch (message)
{
case WM_COMMAND:
wmId = LOWORD (wParam);
wmEvent = HIWORD (wParam);
switch (wmId)
{
case IDM_ABOUT:
DialogBox( hInst, (LPCTSTR) IDD_ABOUTBOX, hWnd, (DLGPROC) About);
break;
case IDM_EXIT:
DestroyWindow ( hWnd);
break;
…………
}
break;
case WM_PAINT:
……………
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
…………..
}
return 0;
} .
2. Меню (ID-номер меню зависит от названия проекта и его можно увидеть в ресурсном просмотрщике).
2.1. При работе с главной формой кроме типовых событий (WM_PAINT, WM_DESTROY) для ресурса меню надо обрабатывать новые сообщения (тип WM_COMMAND), которые вызываются выбором конечных подпунктов меню Exit и About.
2.2. Обработка указанных сообщений выполняется стандартной функцией WndProc(…) путем добавления в нее новых секций case IDM_ABOUT:… и case IDM_EXIT:… (см. пункт 1.2).