Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОСОБИЕ СозданиеWindowsПриложений.doc
Скачиваний:
20
Добавлен:
01.03.2016
Размер:
3.35 Mб
Скачать
  1. Автоматический шаблон (каркас) windows-приложения (тип hello)

    1. Изучение свойств шаблона (тип Hello)

      1. Создать шаблон Windows-приложения (тип Hello)

Указанный шаблон можно получить, используя мастер Win32 Application (тип Hello). Он генерирует текст, похожий на типовой шаблон приложения ТШП [см. ЛистингТШП]. Но получаемое автоматически приложение: - по-другому структурировано (разбито на функции и использует расширенные структуры данных с суффиксом EX); - поддерживает несколько другой интерфейс. Так к стандартному окну с командным

меню и кнопками максимизации-минимизации окна добавляется пользовательское меню с пунктами Файл (подпункт Выход) и Помощь (подпункт About с вызовом модального диалогового окна About). Таким образом, новый интерфейс содержит форму, которая включает меню, пиктограмму, стандартные оконные кнопки и название окна. Диалоговое окно About содержит пиктограмму, выводимый текст и кнопку ОК.

      1. Изучить ресурсы шаблона

В полученный шаблон автоматически внесены изменения для обеспечения работы: - с диалоговым окном 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).