AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Message in Klasse

Ein Thema von nitschchedu · begonnen am 25. Okt 2006 · letzter Beitrag vom 26. Okt 2006
Antwort Antwort
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#1

Windows Message in Klasse

  Alt 25. Okt 2006, 15:55
Wie kann ich in meine Klasse die Message WM_TIMECHANGE ? da kommt nichts an !
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Windows Message in Klasse

  Alt 25. Okt 2006, 17:16
1. Ein Hallo und freundlicherer Umgang wäre nicht schlecht
2. Welche Klasse?
3. Was hast Du bereits gemacht? Quelltext wäre zum helfen hilfreich.
4. "da kommt nichts an !" = ?
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Windows Message in Klasse

  Alt 25. Okt 2006, 17:40
um windowmessages zu bekommen musst du auch ein Window haben. Die muss zwar nicht zwangsläufig ein sichtbares sein aber eine einfache Klasse von TObject abgeleitet hat eben kein solches Handle. Es wäre also interessant zu wissen wovon du abgeleitet hast.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#4

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 07:20
Als erstes bekommt Sunlight7 sein Hallo alle zusammen.

Ich habe es mit WinControl versucht, welche Klasse wäre den dafür geeignet ?

Bis jetziger Code ist

Delphi-Quellcode:
 TTimeCheck = class(TWinControl)
 private
  Timer: TTimer;
  procedure WMTimeChange(var Msg: TMessage); message WM_TIMECHANGE;
  procedure TimeEdit(Sender: TObject);
 public
  constructor Create;
  destructor Destroy; override;
 end;
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#5

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 09:58
Habe es jetzt so versucht

Delphi-Quellcode:

unit nduComponent;

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, Dialogs;

type
  TnduWindowHook = function(var Message: TMessage): Boolean of Object;
  TnduOnReceiveUserMessage = procedure(Msg: Cardinal; wParam, lParam: Integer;
    var Handled: Boolean) of object;
  TnduOnReceiveOtherMessage = procedure(var Handled: Boolean) of object;

  TnduComponent = class(TComponent)
    function MessageHook(var Msg: TMessage): Boolean; virtual;
  private
    FHooked: Boolean;
    FOnReceiveUserMessage: TnduOnReceiveUserMessage;

    procedure SetOnReceiveUserMessage(const Value: TnduOnReceiveUserMessage);
  protected
    function DoUserMessage(Msg: TMessage): Boolean; dynamic;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property OnReceiveUserMessage: TnduOnReceiveUserMessage read FOnReceiveUserMessage write SetOnReceiveUserMessage;
  end;


implementation

{ TnduCompoent }

constructor TnduComponent.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FHooked := False;

  if not (csDesigning in ComponentState) then
  begin
    Application.HookMainWindow(MessageHook);
    FHooked := True;
  end;

end;

destructor TnduComponent.Destroy;
begin
  if FHooked then
  begin
    Application.UnhookMainWindow(MessageHook);
  end;

  inherited Destroy;
end;

function TnduComponent.DoUserMessage(Msg: TMessage): Boolean;
begin
  Result := False;

  if Assigned(FOnReceiveUserMessage) then
  begin
    FOnReceiveUserMessage(Msg.Msg, Msg.wParam, Msg.LParam, Result);
  end;
end;

function TnduComponent.MessageHook(var Msg: TMessage): Boolean;
begin
  Result := False;
end;

procedure TnduComponent.SetOnReceiveUserMessage(
  const Value: TnduOnReceiveUserMessage);
begin
  FOnReceiveUserMessage := Value;
end;

end.
doch die NDU_WM_MMFNOTIFY = WM_USER + 1;

kommt nich an
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#6

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 10:55
Ich habe jetzt festgestellt das die normalen Windwos Meassages da ankommen

Delphi-Quellcode:
function TnduProKumRecv.MessageHook(var Msg: TMessage): Boolean;
begin
  Result := False;

  case Msg.Msg of
    NDU_WM_MMFNOTIFY:
    begin
      ProRecv(Msg);
      Result := True;
    end;
  end;

end;
Warum kommt dann meins nicht an ?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#7

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 12:31
Hallo nitschchedu!

So ist besser

Also ich hab mir das angesehen, Du mußt entweder
  • in der Form die Message abfangen
  • einen Hook auf eine Form machen
  • einfach die Application Messages beobachten

Denn die WM_TimeChange Message wird nur an die Übergeordneten Fenster versendet, deshalb erreicht die Nachricht eine TWinControl nicht.

Grüßle!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#8

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 13:08
Würde den die WM_COPYDATA ankommen wenn ich es so wie oben lasse?
Oder was würdest du mir empfehlen ?
Ach ja und ein Dienst würde der auch eine Windows Message bekommen ?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#9

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 13:20
Wie, oben? Da stehen mehrere Varianten.

Die WM_COPYDATA wird ja nicht von Windows gesendet, sondern von Deinem Programm aus, ergo muß es das Fenster (in diesem Fall auch TWinControl), welches als Empfänger angegeben ist, diese empfangen können.

Dienste können im Normalfall Messages erhalten, aber das ist leider nicht mein Fachgebiet

Ein Tipp: Guck für die Messages in die OH bzw. bei MS MSDN-Library durchsuchenWM_COPYDATA & MSDN-Library durchsuchenWM_TIMECHANGE,
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#10

Re: Windows Message in Klasse

  Alt 26. Okt 2006, 13:39
Ok Dank für die Hilfe!
  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 14:07 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