| |
|
|
| KompilierenMarkierenSeparierenSource wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Button: Größenänderung in Echtzeit
Im folgenden Beispiel wird die Größenänderung eines Steuerelementes,
in diesem Fall ein Button, in Echtzeit demonstriert. Mit Veränderung der Größe des Fensters
verändert sich auch die Größe des Buttons.
-Begin-----------------------------------------------------------------
-HeaderFiles---------------------------------------------------------
$H Windows.ph
$H Messages.ph
-Variables Declaration-----------------------------------------------
Declare Ende%, OldWndProc&, hButton%
-CallBack Routine----------------------------------------------------
Proc ChangeControl
Parameters hWnd&, Message&, wParam&, lParam&
Declare btnHeight&
If Message& = ~WM_SIZE
-Abfrage, damit Button nicht kleiner 16 Pixel Hoehe------------
If @Height(%hWnd) / 5 < 16
btnHeight& = 16
Else
btnHeight& = @Height(%hWnd) / 5
EndIf
-Groesse des Buttons aendern-----------------------------------
SetWindowPos hButton%, 10, 34 - @Width(%hWnd) - 20, btnHeight&
EndIf
Return ~CallWindowProc(OldWndProc&, hWnd&, Message&,
wParam&, lParam&)
EndProc
-Main----------------------------------------------------------------
-Erweitertes MessageHandling abschalten----------------------------
Set(FastMode, 1)
-Fenster oeffnen und GUI aufbauen----------------------------------
Window 0, 0 - 640, 480
WindowTitle Größenänderung von Steuerelementen in Echtzeit
-Hintergrundfarbe des Fensters setzten---------------------------
Declare Color&, Red%, Green%, Blue%
Color& = ~GetSysColor(~COLOR_3DFACE)
Red% = @GetRValue(Color&)
Green% = @GetGValue(Color&)
Blue% = @GetBValue(Color&)
Cls @RGB(Red%, Green%, Blue%)
-----------------------------------------------------------------
@Create(Text, %hWnd, Ändere die Größe dieses Fensters, 10,
10, 250, 20)
hButton% = @Create(Button, %hWnd, Ende, 10, 34,
@Width(%hWnd) - 20, @Height(%hWnd) / 5)
-ProgramMainRoutine mit CallBack umleiten auf eigene---------------
OldWndProc& = ~GetWindowLong(%hWnd, ~GWL_WNDPROC)
~SetWindowLong(%hWnd, ~GWL_WNDPROC, @ProcAddr(ChangeControl, 4))
-Dialog-Schleife---------------------------------------------------
Clear Ende%
WhileNot Ende%
WaitInput
If %Key = 2
Ende% = 1
ElseIf @Clicked(hButton%)
Ende% = 1
EndIf
EndWhile
-Urspruengliche ProgramMainRoutine wieder herstellen---------------
~SetWindowLong(%hWnd, ~GWL_WNDPROC, OldWndProc&)
-End-------------------------------------------------------------------
End
|
|
|
| |
|
|