Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab2.doc
Скачиваний:
5
Добавлен:
12.11.2019
Размер:
964.1 Кб
Скачать

2.4. Функция окна

Вторая функция, используемая в программе, — это функция окна. В данное случае она называется WindowFunc(), хотя ее название может быть произвольным. В качестве параметров функции окна передаются первые четыре параметра структуры MSG. Из них в примере используется лишь идентификатор сообщения.

В данном примере функция окна явно отвечает только на сообщение WM_DESTROY, которое генерируется, когда пользователь завершает работу с приложением. После получения этого сообщения программа должна вызвать API-функции PostQuitMessage(). Аргументом данной функции является код возврата, записываемый в поле msg.wParam в функции WinMain(). При вызове функции PostQuitMessage() приложению посылается сообщение WM_QUIT, после чего функция GetMessage() возвращает ноль и останавливает выполнение программы.

Все остальные сообщения, принимаемые функцией WindowFunc(), с помощью функции DefWindowProcO передаются обратно Windows, которая выполняет связанные с ними стандартные действия. Этот шаг необходим, поскольку все сообщения так или иначе должны быть обработаны.

3. Порядок выполнения работы

  1. Создать проект на Microsoft Visual С++

    1. Меню File – New .. – Projects.

    1. Выбрать из списка Win32 Application.

    2. В поле Location задать местоположение проекта.

    3. В поле Project Name указать название проекта.

    4. В случае VC ++ 6.0 указать Empty Project.

  1. Добавить в проект файл

    1. Меню Project – Add To Project – New ..

    1. Выбрать из списка C++ Source File.

    2. В поле File name указать имя файла.

  1. Скопировать в файл листинг программы.

  2. Откомпилировать и запустить на исполнение пример.

  3. Изменить в программе заголовок окна.

  4. Изменить размеры и координаты окна.

  5. Изменить стиль окна.

  6. Изменить цвет фона (черный, прозрачный).

  7. Изменить тип курсора (песочные часы, крест).

  8. Изменить пиктограмму.

  9. Изменить способ отображения окна (минимизированный, максимизированный, невидимый).

  10. Изменить программу так, чтобы строка, содержащая аргументы командной строки отображалась, как заголовок окна. Для выполнения данного пункта необходимо разобрать параметры главной функции.

    1. Пример: project1.exe Hi World!

В программу project1.exe передается строка, содержащая аргументы командной строки – Hi World!. В итоге должно быть окно с заголовком “Hi World!”.

  1. Найти в программе объявление, определение и регистрацию класса окна. Объяснить назначение класса окна и указать какие изменения были внесены в него.

  2. Найти в программе создание окна. Указать функцию, которая отвечает за создание окна. Объяснить назначение каждого параметра. Найти параметры, которые были изменены в процессе выполнения лабораторной работы. Пояснить назначение дескриптора окна.

  3. Найти в программе вызов функции для отображения окна. Объяснить назначение параметров.

  4. Найти в программе цикл сообщений. Закомментировать его и посмотреть на реакцию (объяснить поведение программы). Закомментировать поочередно строчки входящие в тело цикла сообщений и посмотреть на реакцию программы (объяснить поведение программы). Объяснить назначение цикла сообщений и механизм обработки сообщений (указать назначение каждой функции, которая вызывается в цикле сообщений, и ее параметров).

  5. Найти в программе функцию окна. Объяснить назначение функции окна и каждого ее параметра. Описать работу функции. Указать какие сообщения она обрабатывает и что происходит с сообщениями, которые она не обрабатывает. Ответ обосновать, показав необходимые фрагменты программы. Закомментировать обработку события разрушения окна.

LPCWSTR MultiCharToUniChar(char* mbString)

{

int len = strlen(mbString) + 1;

wchar_t *ucString = new wchar_t[len];

mbstowcs(ucString, mbString, len);

return (LPCWSTR)ucString;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]