LAB2 (ЛР №2 - Отправка сообщения в другое окно)
Описание файла
Файл "LAB2" внутри архива находится в следующих папках: ЛР №2 - Отправка сообщения в другое окно, [APIWin] Лаборторная №2. Документ из архива "ЛР №2 - Отправка сообщения в другое окно", который расположен в категории "". Всё это находится в предмете "api windows" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "api windows" в общих файлах.
Онлайн просмотр документа "LAB2"
Текст из документа "LAB2"
Лабораторная работа 2.
Программа может послать сообщение в адрес другого окна с помощью одной из двух функций.
Первая функция может послать сообщение обработчику минуя очередь.
LRESULT SendMessage(hwnd, uMsg, wParam, lParam)
Вторая функция посылает сообщение в очередь окна.
BOOL PostMessage(hwnd, uMsg, wParam, lParam)
Пример : PostMessage(hWnd,WM_USER+1, (WPARAM)hWnd, 0);
С помощью следующей функции осуществляется поиск дескриптора окна, которому надо передать сообщение. Второй параметр может быть NULL.
HWND FindWindow(lpszClassName, lpszWindow)
В файле определения модуля:
Первая строка необходима для 16-битных приложений, для 32-битных не нужна.
EXETYPE WINDOWS
Директива CODE имеет следующий синтаксис:
CODE
[FIXED | MOVEABLE]
[DISCARDABLE | NONDISCARDABLE]
[PRELOAD | LOADONCALL]
Опции означают: сегмент фиксированной длины, сегмент может быть перемещён в памяти, может быть выгружен, не может быть выгружен, загружается в память при запуске приложения, загружается при обращении к некоторому его элементу.
Директива DATA имеет следующий синтаксис:
DATA
[NONE | SINGLE | MULTIPLE]
[READONLY | READWRITE]
[PRELOAD | LOADONCALL]
[SHARED | NONSHARED]
Опции означают:сегмент данных отсутствует, 1 сегмент, разделяемый всеми процессами, несколько сегментов данных, данные в сегменте можно читать, но не изменять, можно читать и изменять, сегмент заранее автоматически загружается в память, загружается при обращении к нему, одна копия сегмента разделяется всеми процессами, отдельная копия сегмента загружается для каждого процесса.
Директивы HEAPSIZE и STACKSIZE устанавливают размер локальной динамической памяти и стека программы.
Директива STUB вставляет в файл .EXE кода для WINDOWS программу DOS.
Пример
EXETYPE WINDOWS
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE MULTIPLE
HEAPSIZE 4096
STACKSIZE 8192
Задание.
Сформировать два приложения, которые открывают по одному окну.
В окне 1 по щелчку левой клавиши мыши:
-
При помощи FindWindow() найти дескриптор окна 2. Выдать сообщение об этом.
-
Если операция неудачная, то выдать сообщение об этом.
-
При помощи функции SendMessage() и поля WPARAM передать свой дескриптор второму окну.
-
Выдать сообщение об этом.
В окне 2
-
При получении сообщения WM_USER+1 выдать сообщение об этом.
Сформировать и включить в проект файл определения модуля.
1 | Сформировать 2 приложения. Отправить сообщение от одного к другому. Выдать подтверждение о получении сообщения | Разрешить перемещение модуля 1 в оперативной памяти | Запретить перемещение модуля 2 на жёсткий диск | Данные загружать одновременно с приложением | Данные можно только читать |
2 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
3 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
4 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
5 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
6 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
7 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
8 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
9 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
10 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
12 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
13 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
14 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
15 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
16 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
17 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
18 | -//- | разрешить | запретить | при обращении к ним | Данные можно читать и изменять |
19 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
20 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
21 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
22 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
23 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
24 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
25 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |
26 | -//- | разрешить | запретить | одновременно с приложением | Данные можно только читать |
27 | -//- | запретить | разрешить | при обращении к ним | Данные можно читать и изменять |