Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Windows poruke - hvatanje poruka o kreiranju forme

  • 4 odgovora
  • 2.399 pregleda

Najnovija ↓

Windows poruke - hvatanje poruka o kreiranju forme 13.09.2010. u 17:21 · pre 196 meseci #1
Zanima me da li neko zna kako uhvatiti poruke o kreianju nove forme u MDIForm aplikaciji(Bilo da su forme Normal ili MDIChild).

Poruke koje pokusavam da izfiltriram su
WM_CREATE, WM_MDICREATE, WM_NCCREATE, a takodje sam probala i WM_INITDIALOG

Probala sam na tri nacina:

* Application.HookMainWindow

* Application.OnMessage

* SetWindowLong

Medjutim, svaki nacin hvata manje vise isti set poruka ali ne i ove koje meni trebaju...

Hvala unapred!
Re: Windows poruke - hvatanje poruka o kreiranju forme 13.09.2010. u 18:54 · pre 196 meseci #2
Code:


...
FPrevIns, FCurIns: Pointer;
procedure WndProc(var M: TMessage);
...

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FPrevIns := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
  FCurIns := MakeObjectInstance(WndProc);
  SetWindowLong(ClientHandle, GWL_WNDPROC, Integer(FCurIns));
end;

procedure TMainForm.WndProc(var M: TMessage);
begin
  case M.Msg of
    WM_MDICREATE:
      ShowMessage('create mdi');
    WM_MDIDESTROY:
      ShowMessage('destroy mdi');
    // ostale poruke
  end;
  M.Result := CallWindowProc(FPrevIns, ClientHandle, M.Msg, M.wParam, M.lParam);
end;


Ovaj kod se postavi za main app form (mdi parent).
Potpis
TurboDispatchJumpAddressEnd
----
Knocka Fia
----
And so we meet, again in a different time
Re: Windows poruke - hvatanje poruka o kreiranju forme 14.09.2010. u 11:46 · pre 196 meseci #3
Da li to znaci da kod mora da se nalazi u MDI form (parent)? Jer ja ovo isto/slicno radim samo u zasebnoj klasi izvedenoj iz TObject... vise mi odgovara da filtriranje poruka bude u zasebnoj klasi, primenljivo je na vise projekata bez kopiranja koda. Da li mozda MDIForm salje neku drugu poruku aplikaciji pri kreiranju child-a, a koja moze da se uhvati sa strane?
Re: Windows poruke - hvatanje poruka o kreiranju forme 14.09.2010. u 14:25 · pre 196 meseci #4
Koliko je meni poznato window proc subclassing ne moze da radi u klasi izvedenoj iz TObject zato sto ta klasa nema window handle, a samim tim ni window proc, pa zato i ne radi, jer ne postoji msg loop.

Mozda je u tvom slucaju bolje resenje windows hook za filtriranje poruka, za vise detalja Google: "CallWndProc Callback Function"
Potpis
TurboDispatchJumpAddressEnd
----
Knocka Fia
----
And so we meet, again in a different time
Re: Windows poruke - hvatanje poruka o kreiranju forme 14.09.2010. u 14:41 · pre 196 meseci #5
Moguce je da si u pravu, ima smisla kad tako gledas, ali ja u sustini samo hocu da slusam poruke i na odredjene poruke pozovem neki nevezani kod ... znaci bez ikakvog uticaja na same poruke ili ono sto poruke rade.

Hvala ti za hint, pogledacu :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme