Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 12:45   #1
Kolan
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 13
По умолчанию что делает этот код в приеме сообщений.(файлы работающей проги прилагаются)

Есть 2 программы одна посылает сообщения второй, вторая принимает сообщения от первой. Вот ссылка на 2 рабочие проги:
http://depositfiles.com/files/lpg8nxtgl.
Я не пойму что делает небольшой участок кода.
Код:
Const
wm_My=wm_User+300;  //В этой строчке
type
  TwmMy= packed record
    Msg: Cardinal;
    case byte of            //И в этой, и что оно меняет.
    0:(A:integer; B:integer; result: integer);
    1:(WParam : longint; LParam:LongInt; res:LongInt);
    end;
Мне это надо для того чтобы сделать задание:
Надо переделать код так чтобы он отправлял символьные значения а не численные, и выдавал результат - строку. Простой заменой типов и их значений дело не решилось.
Программа отправляющая сообщения:
Код:
unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

Const
wm_My=wm_User+300;
type
  TwmMy= packed record
    Msg: Cardinal;
    case byte of
    0:(A:integer; B:integer; result: integer);
    1:(WParam : longint; LParam:LongInt; res:LongInt);
    end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Windowname:hwnd;
mess:TWMMY;
begin
WindowName:=FindWindow(Integer(0),'Printmessage');
mess.A:=8  ;
mess.B:=7 ;
SendMessage(WindowName,wm_my,mess.WParam,mess.LParam);
end;

end.
Kolan вне форума Ответить с цитированием
Старый 01.11.2010, 15:53   #2
Man84
Новичок
Джуниор
 
Регистрация: 22.03.2010
Сообщений: 1
По умолчанию

Цитата:
wm_My=wm_User+300;
Устанавливает код сообщения: со значения wm_User начинаются пользовательские сообщения, меньше - сообщения Windows.
А далее идёт вариантная запись; чтобы посылал символы и выдавал строку:
Код:
  TwmMy= packed record
    Msg: Cardinal;
    case byte of
      0:(A:integer; B:integer;Result: integer);
      1:(WParam : longint; LParam:LongInt; res:LongInt);
      2:(D:char; E:char; Res3: char);
    end;
    ...
procedure TForm1.Button1Click(Sender: TObject);
var
  m:TwmMy;
begin
  m.D:='j';
  m.E:='t';
  SendMessage(findwindow(nil,'Printmessage'),wm_my,m.WParam,m.LParam);
end;
В принимающей части:
[CODE]
Код:
  TwmMy= packed record
    Msg: Cardinal;
    case byte of
      0:(A:integer; B:integer;Result: integer);
      1:(WParam : longint; LParam:LongInt; res:LongInt);
      2:(D:char; E:char; Res3: char);
    end;
    ...
procedure TDestination.Postmessage(var msg: TwmMy);
begin
  edit1.Text:=msg.D + msg.E;
end;
Man84 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делает этот скрипт? ROD JavaScript, Ajax 4 29.10.2010 12:54
Что делает этот код? Alex_sim Общие вопросы C/C++ 10 03.03.2010 23:45
Подскажите пожалуйста что делает этот код SlashMan JavaScript, Ajax 3 10.01.2010 22:41
Что делает этот код? lucky Общие вопросы Delphi 4 17.06.2009 17:02
Что делает этот while do? Levhik Общие вопросы C/C++ 4 25.01.2009 17:27