AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?
Thema durchsuchen
Ansicht
Themen-Optionen

Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

Ein Thema von MisterNiceGuy · begonnen am 15. Mai 2005 · letzter Beitrag vom 16. Mai 2005
Antwort Antwort
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 20:23
Ich habe folgenden Code zum Andocken eines Fensters (Screensnap).
Delphi-Quellcode:
function WndProc(WndHWND: HWnd; uMsg: UInt; wParam: WParam; lParam: LParam): LResult; stdcall;
const
  DISTANCE = 20;
var
  MyWndPos: PWindowPos;
  WorkAreaRect: TRect;
begin
   Result := 0;

   case uMsg of
    WM_WINDOWPOSCHANGING: begin
      // Nötige Informationen holen
      SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkAreaRect, 0);
      MyWndPos := PWINDOWPOS(lParam);

      // Oben und Unten
      if (MyWndPos.y <= DISTANCE) and
         (MyWndPos.y >= -DISTANCE) then
           MyWndPos.y := 0;
      if (MyWndPos.y + MyWndPos.cy > (WorkAreaRect.Bottom - DISTANCE)) and
         (MyWndPos.y + MyWndPos.cy < (WorkAreaRect.Bottom + DISTANCE)) then
           MyWndPos.y := WorkAreaRect.Bottom - MyWndPos.cy;

      // Links und Rechts
      if (MyWndPos.x <= DISTANCE) and
         (MyWndPos.x >= -DISTANCE) then
           MyWndPos.x := 0;
      if (MyWndPos.x + MyWndPos.cx > (WorkAreaRect.Right - DISTANCE)) and
         (MyWndPos.x + MyWndPos.cx < (WorkAreaRect.Right + DISTANCE)) then
           MyWndPos.x := WorkAreaRect.Right - MyWndPos.cx;
    end;

    WM_DESTROY: begin
      PostQuitMessage(0);
    end;

     else Result := DefWindowProc(WndHWND, uMsg, wParam, lParam);
   end;
end;
Ich würde nun gerne diese Funktion auf ein beliebiges Fenster dessen Handle ich habe anweden.
Leider scheitere ich an den Parametern.
Das Handle ist klar, aber was
uMsg: UInt; wParam: WParam; lParam: LParam tun weiß ich nicht!

Hoffe ihr könnt mir helfen.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 20:37
Moin MisterNiceGuy,

uMsg ist die Meldung mit der die WndProc aufgerufen wird.
In Deinem Beispiel würden die Meldungen WM_WINDOWPOSCHANGING und WM_DESTROY von der Procedure verarbeitet werden.

wParam und lParam enthalten die Parameter der jeweiligen Message.
Was diese jeweils genau bedeuten, musst Du bei der Message nachschlagen (z.B. im PSDK)
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 MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#3

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 20:53
Uff das PSDK ist insgesagt 1,4 GB groß bei 25 MB pro Segment.

Die Funktion soll definitiv durch WM_WINDOWPOSCHANGING aufgerufen werden,
nur hab ich keine Ahnung was ich für WParam und LParam beim Aufruf einsetzen muss!
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 21:03
Zitat von MSDN:
WM_WINDOWPOSCHANGING Notification

--------------------------------------------------------------------------------

The WM_WINDOWPOSCHANGING message is sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function.

A window receives this message through its WindowProc function.


Syntax

WM_WINDOWPOSCHANGING

WPARAM wParam
LPARAM lParam;

Parameters

wParam
This parameter is not used.
lParam
Pointer to a WINDOWPOS structure that contains information about the window's new size and position.
Return Value

If an application processes this message, it should return zero.
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 21:10
Moin MisterNiceGuy,

zum einen musst Du nicht das ganze PSDK herunterladen, zum anderen kannst Du auch direkt im MSDN nachschauen (z.B. MSDN-Library durchsuchenWM_WINDOWPOSCHANGING
Ausserdem könnte es möglich sein, dass Du einige der erforderlichen Informationen in der Hilfe von D7 enthalten sind.
Bei der PE weiss ich das allerdings nicht genau (bei D2005 PE sind sie dabei).
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 MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#6

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 15. Mai 2005, 21:34
Hat sich erledigt, ich gehe das Problem anders an. Vielen Dank für die Hilfe, alleine wäre ich nicht so weit gekommen.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 16. Mai 2005, 01:10
Zitat von MisterNiceGuy:
Hat sich erledigt, ich gehe das Problem anders an. Vielen Dank für die Hilfe, alleine wäre ich nicht so weit gekommen.
Hallo!

Denkst du nicht, dass deine Lösung auch für andere interessant wäre?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#8

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 16. Mai 2005, 10:24
Ja das stimmt schon, also mein Problem ist, dass ich nicht weiß, wie ich lParam verändern kann.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#9

Re: Was tun uMsg: UInt; wParam: WParam; lParam: LParam ?

  Alt 16. Mai 2005, 10:32
Zitat von MisterNiceGuy:
also mein Problem ist, dass ich nicht weiß, wie ich lParam verändern kann.
Typecasten.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  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 03:19 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