Toon posts:

[Delphi/C++] hoe met API "sticky" windows?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag een window "sticky" maken, d.w.z. als je een window verplaatst dat het dan in de buurt van de schermgrenzen naar de schermgrenzen toe "trekt", hetzelfde als bijv. WinAmp ook heeft.

Ik heb daartoe de volgende code gebruikt, maar deze werkte niet...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Gedeelte uit de WindowProc functie
//
//De variabelen WindowWidth en WindowHeight zijn de afmetingen v/h window v/h progje
//De variabele Hwnd is de Handle v/h window
//De variabele WindowTop is de Rect.Top v/h WindowRect

WM_MOVING:begin
         Result:=LRESULT(True);
         with PRect(@lParam)^ do
        begin
         //Window rechts buiten het scherm bij een resolutie van 1024x768
         if Left>1024-WindowWidth then
          begin
           SetWindowPos(Hwnd,0,1024-WindowWidth,WindowTop+WindowHeight,0,0,SWP_NOSIZE or SWP_NOZORDER);
          end;
        end;
        end;

Kan iemand mij hiermee misschien helpen ????????

Thanx :)

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:24

Tomatoman

Fulltime prutser

1. Je zult rekening moeten houden met de schermbegrenzingen van de monitor waarop het form zichtbaar is (er kan meer dan 1 monitor aangesloten zijn!). Dit kan via Form.Monitor.WorkareaRect in nieuwe Delphi-versies. In oudere versies moet je deze informatie zelf vergaren via Screen.Monitors of GetSystemMetrics.

2. Je zult rekening moeten houden met andere schermresoluties dan 1024x768.

3. Je kunt kijken waar de muis zich bevindt ten opzichte van de linkerbovenhoek van je form én de linkerbovenhoek van je scherm. Dat kun je berekenen of je venster zich dichtbij een schermrand bevindt. Zo ja, dan laat je je venster tegen de schermrand plakken (maar je muis blijft gewoon op dezelfde plaats ten opzichte van het scherm). >:)

Een goede grap mag vrienden kosten.