Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi10.doc
Скачиваний:
54
Добавлен:
06.02.2015
Размер:
259.58 Кб
Скачать

Создание своего сообщения

В Delphiсуществует возможность создать своё собственное сообщение и установить на него обработчик.

Задание 3.3. Запрограммируем так чтобы первое приложение имело возможность посылать второму приложению собственное сообщение придуманное программистом и второе приложение реагировало бы на него.

В DelphiСуществует специальная константаWM_USERблагодаря которой можно создать множество собственных сообщений. Например, величинаWM_USER+ 1 уже будет относиться ко второму сообщению,WM_USER+ 2 к третьему и т.д.

Создайте новый проект и Папку назовите Priloj_1. Здесь будетпервое приложение отправитель.

В свойстве Captionформы напишите: Приложение1

Скиньте button1 и напишите там текст: Отправить сообщение второй форме

Скиньте два компонента Edit, там будут значения, которые будут отправляться второму приложению

Рис. 4Приложение отправляющее «пользовательское» сообщение

другому приложению

Затем объявите имя вашего сообщения в интерфейсной части, например WM_MyMessageиспользуя константуWM_USER, то естьWM_MyMessage=WM_USER.

Рис. 5Объявляем свое собственное сообщениеWM_MyMessage

Таким образом, вы объявили свое собственное, «пользовательское» сообщение WM_MyMessage.

Далее в обработчике щелчка кнопки запишите varHWND:THandle;

А затем напишите следующее:

begin

HWND:=FindWindow('TForm1','Приложение2');//Определяем дескриптор второго

//приложения по его классу и надписи на заголовке

SendMessage(HWND,WM_MyMessage,StrToInt(Edit1.Text),StrToInt(Edit2.Text));

// Отправляем сообщение WM_MyMessageвторому приложению со значениями

// двух введенных параметров

end;

Далее откомпилируйте ваш проект, нажав Ctrl+F9 илиF9 на предмет ошибок и сохранив, закройте его.

Теперь нужно создать приложение–получатель.

Создайте новый проект и Папку назовите Priloj_2. Здесь будет приложение получатель. В свойствеCaptionформы напишите: Приложение2

Рис. 6Приложение–получатель

В окне редактора кода точно также объявите ваше сообщение с тем же именем WM_MyMessage=WM_USER; и вpublicукажите прототип обработчика вашего сообщения:

procedure WMMyMessage(var Message:TMessage); message WM_MyMessage;

затем нажмите Ctrl+Shift+C.

В появившемся обработчике вашего сообщения напишите:

MessageDlg('Получено сообщение WM_MyMessage'

+#10#13+'с параметрами '

+#10#13+IntToStr(Message.wParam)+' '+IntToStr(Message.LParam)

,mtInformation,

[mbOk],0);

Form1.Height:=Message.wParam;//Устанавливаем высоту Второй формы по

//полученному параметру

Form1.Width:=Message.LParam; //Устанавливаем ширину Второй формы по

//полученному параметру

Теперь откомпилируйте ваш проект на предмет ошибок и закройте его.

И закройте Delphi.

Далее, запустите ваше первое и второе приложение не используя Delphi, просто по щелчку наexeфайле. Попробуйте отправить значения второй форме-получателю используя первую-отправителя. Программа должна работать правильно.

Задание 4. Самостоятельно. С помощью переопределения метода WndProc узнайте координаты мыши относительно формы при щелчке на ней и выведите их на экран используя ShowMessage().

Подсказка: используйте проверку получения сообщения WM_LBUTTONDOWN щелчка мыши на форме, а затем выводите на экран, например, так:

ShowMessage ('X= '+inttostr(Message.Какое_то_поле)+

' Y= '+Inttostr(Message.Какое_то_поле));

автор и разработчик лабораторных

работ по Delphi

доцент кафедры Информационных технологий и систем

кандидат физ.-мат. наук

Санников Е.В.

Соседние файлы в папке Лабы IT