Создание своего сообщения
В 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
доцент кафедры Информационных технологий и систем
кандидат физ.-мат. наук
Санников Е.В.