Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Windows poruke - hvatanje poruka o kreiranju forme

[es] :: Pascal / Delphi / Kylix :: Windows poruke - hvatanje poruka o kreiranju forme

[ Pregleda: 1730 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sosingus

Član broj: 31461
Poruke: 140
*.dynamic.isp.telekom.rs.

Sajt: www.sportin.biz


Profil

icon Windows poruke - hvatanje poruka o kreiranju forme13.09.2010. u 16:21 - pre 165 meseci
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!
 
Odgovor na temu

nikomak
Nikola Makić
Beograd

Član broj: 177053
Poruke: 65
*.rcub.bg.ac.rs.



+1 Profil

icon Re: Windows poruke - hvatanje poruka o kreiranju forme13.09.2010. u 17:54 - pre 165 meseci
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).
TurboDispatchJumpAddressEnd
----
Knocka Fia
----
And so we meet, again in a different time
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.dynamic.isp.telekom.rs.

Sajt: www.sportin.biz


Profil

icon Re: Windows poruke - hvatanje poruka o kreiranju forme14.09.2010. u 10:46 - pre 165 meseci
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?
 
Odgovor na temu

nikomak
Nikola Makić
Beograd

Član broj: 177053
Poruke: 65
*.rcub.bg.ac.rs.



+1 Profil

icon Re: Windows poruke - hvatanje poruka o kreiranju forme14.09.2010. u 13:25 - pre 165 meseci
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"
TurboDispatchJumpAddressEnd
----
Knocka Fia
----
And so we meet, again in a different time
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.dynamic.isp.telekom.rs.

Sajt: www.sportin.biz


Profil

icon Re: Windows poruke - hvatanje poruka o kreiranju forme14.09.2010. u 13:41 - pre 165 meseci
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 :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Windows poruke - hvatanje poruka o kreiranju forme

[ Pregleda: 1730 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.