![]() |
Windows Message in Klasse
Wie kann ich in meine Klasse die Message WM_TIMECHANGE ? da kommt nichts an !
|
Re: Windows Message in Klasse
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 !" = ? |
Re: Windows Message in Klasse
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.
|
Re: Windows Message in Klasse
Als erstes bekommt Sunlight7 sein Hallo alle zusammen. :-D
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; |
Re: Windows Message in Klasse
Habe es jetzt so versucht
Delphi-Quellcode:
doch die NDU_WM_MMFNOTIFY = WM_USER + 1;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. kommt nich an :wall: |
Re: Windows Message in Klasse
Ich habe jetzt festgestellt das die normalen Windwos Meassages da ankommen
Delphi-Quellcode:
Warum kommt dann meins nicht an ? :gruebel:
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; |
Re: Windows Message in Klasse
Hallo nitschchedu!
So ist besser :wink: Also ich hab mir das angesehen, Du mußt entweder
Denn die WM_TimeChange Message wird nur an die Übergeordneten Fenster versendet, deshalb erreicht die Nachricht eine TWinControl nicht. Grüßle! |
Re: Windows Message in Klasse
Würde den die WM_COPYDATA ankommen wenn ich es so wie oben lasse?
Oder was würdest du mir empfehlen ? :gruebel: :roteyes: Ach ja und ein Dienst würde der auch eine Windows Message bekommen ? |
Re: Windows Message in Klasse
Wie, oben? Da stehen mehrere Varianten. :wink:
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 :stupid: Ein Tipp: Guck für die Messages in die OH bzw. bei MS ![]() ![]() |
Re: Windows Message in Klasse
Ok Dank für die Hilfe! :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz