AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wo muss die WNDProc eingebunden werden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wo muss die WNDProc eingebunden werden?

Ein Thema von Chris P · begonnen am 7. Jun 2004 · letzter Beitrag vom 7. Jun 2004
Antwort Antwort
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#1

Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:08
Hi Leute,

soweit ich weiß, dient doch die Prozedur WNDProc zur
Behandlung von Windowsbotschaften.

Aber wo muss ich diese in mein Programm einbinden
damit Windows die Botschaften schicken kann??
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:23
Wenn du nicht selbst definierte Nachrichten abfangen willst oder die standard Nachrichten von Windows umbiegen willst, dann brauchst du gar nichts machen, macht alles die VCL für dich.

Delphi-Quellcode:
const
  MY_MESSAGE = WM_USER + 1974;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var msg: TMessage);
begin
  inherited;
  case msg.Msg of
    MY_MESSAGE: Showmessage(PChar(msg.LParam));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Text: String;
begin
  Text := 'Hello world';
  SendMessage(Handle, MY_MESSAGE, 0, Integer(PChar(Text)));
end;
Mal eben so in einer Minute hingerotzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:25
Wozu muss denn inherited aufgerufen werden?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:30
Machst du das nicht werden die geerbeten Methoden nicht aufgerufen und alle Nachrichten außer deiner werden nicht korrekt bearbeitet, was katastrophale Folgen für dein Fenster haben dürfte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:35
Ok, aber eine Frage hab ich noch:

Wenn Windows zB. eine WM_MOUSEMOVE-Botschaft schickt.
Wie kann ich diese abfangen? Steht sie in Msg.wParam oder Msg.lParam oder woanders?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:48
Moin Chris,

schau Dir dazu doch mal die Felder von TMessage an, und, ggf. noch ein paar beliebige Messages und deren Parameter.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:48
Sie steht in msg.Msg. im wParam bzw lParam stehen Nachrichten spezifische Informationen: MSDN-Library durchsuchenwm_mousemove.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 19:50
Ok, dass hat mir geholfen... Danke
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#9

Re: Wo muss die WNDProc eingebunden werden?

  Alt 7. Jun 2004, 21:48
Eine andere Möglichkeit

Delphi-Quellcode:
type
  TMyMessage = packed record // statt TMessage
    dwMsg,
    reserved : Cardinal;
    cStr : PChar;
  end;

const
  MY_MESSAGE = WM_USER + 1974;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure MyMessage(var msg : TMyMessage); message MY_MESSAGE;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MyMessage(var msg: TMyMessage);
begin
  Showmessage(msg.cStr);
  inherited; // optional: ruft den Message DefaultHandler auf und der ruft WndProc
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Text: String;
begin
  Text := 'Hello world';
  SendMessage(Handle, MY_MESSAGE, 0, Integer(PChar(Text)));
end;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz