什么矿泉水比较好:利用RegisterWindowMessage在不同程序窗体间传递消息

来源:百度文库 编辑:中财网 时间:2024/05/11 05:27:04

unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    Button2: TButton; 
    procedure FormCreate(Sender: TObject); 
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
  private 
    { Private declarations } 
    UserMessage : UINT; 
  public 
    { Public declarations } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  sendmessage(HWND_BROADCAST,UserMessage ,handle,0); 
end; 
 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  UserMessage  :=   RegisterWindowMessage('WM_SAMPLE'); 
end; 
 
end. 
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
  sendmessage(HWND_BROADCAST,UserMessage ,handle,0);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  UserMessage  :=   RegisterWindowMessage('WM_SAMPLE');
end;

end.
 

 

 

 

 

view plaincopy to clipboardprint?unit Unit2; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, ExtCtrls; 
 
type 
  TForm2 = class(TForm) 
    Image1: TImage; 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private declarations } 
    UserMessage  :   UINT; 
    procedure   GetImage(Form1Window   :   HWND); 
  public 
    { Public declarations } 
     protected 
          procedure   WndProc(var   Message:   TMessage);   override; 
  end; 
 
var 
  Form2: TForm2; 
 
implementation 
 
{$R *.dfm} 
 
procedure TForm2.FormCreate(Sender: TObject); 
begin 
UserMessage   :=   RegisterWindowMessage('WM_SAMPLE'); 
end; 
 
 
 
 
 
procedure   TForm2.WndProc(var   Message:   TMessage); 
  begin 
      if   Message.Msg   =   UserMessage   then 
          GetImage(Message.WParam) 
      else   inherited; 
  end; 
 
  procedure   TForm2.GetImage(Form1Window   :   HWND); 
  var 
          Form1DC:   HDc; 
          Form1Rect:   TRect; 
  begin 
      image1.Picture   :=   nil; 
      Form1DC   :=   GetWindowDC(Form1Window); 
      GetWindowRect(Form1Window,Form1Rect); 
      image1.Width   :=   Form1Rect.Right-Form1Rect.Left; 
      image1.Height   :=   Form1Rect.Bottom   -   Form1Rect.Top; 
      BitBlt(Image1.Canvas.Handle,0,0,image1.Width, 
                    image1.Height, 
                    Form1DC,   0, 
                    0,   SRCCOPY); 
      Image1.Refresh; 
      ReleaseDC(Form1Window,   Form1DC); 
      SetForegroundWindow(handle); 
      beep; 
 
  end; 
 
 
 
end.