Page 1 of 2
ResizeWindow halting
Posted: Sun Apr 18, 2004 5:30 pm
by Phant0m``
Hey folks
I’ve been looking everywhere and I couldn’t find nothing that worked, so once again I bring my questions to the forum.
I have Window that I want resized, but not resized any smaller then the default Window size, but not prevent the Window from being resized bigger.
Now using
Code: Select all
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
I was capable of using ResizeWindow() command but the only problem is while forcing the window smaller then the default size, it flickers, bounces… I simply want the resizing to smaller size then the Default Window size halted on spot, if I’m not mistaking I think using SetWindowCallback() is probably low enough level to-do that but I’m clueless where to start. In addition I’m already using SetWindowCallback() command for Column sorting and when I try to implement there is a conflict which prevents Column Sorting from functioning.
Posted: Mon Apr 19, 2004 2:12 pm
by Phant0m``
Nice to know i'm not the only one...

Posted: Mon Apr 19, 2004 2:22 pm
by Dare2
I'll join the queue waiting for this answer. Anything I've tried gets lousy jerky results - basically fights with the user.

Posted: Mon Apr 19, 2004 2:29 pm
by Phant0m``
Posted: Mon Apr 19, 2004 2:35 pm
by freak
Here you go:
Code: Select all
;
; Max/Min Window size tracking..
;
Procedure SizeCallback(WindowID, Message, wParam, lParam)
; Here is the trick. The GETMINMAXINFO must be processed
; and filled with min/max values...
;
If Message = #WM_GETMINMAXINFO
*SizeTracking.MINMAXINFO = lParam
*SizeTracking\ptMinTrackSize\x = 100
*SizeTracking\ptMinTrackSize\y = 100
*SizeTracking\ptMaxTrackSize\x = 600
*SizeTracking\ptMaxTrackSize\y = 300
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0,10,10,200,200,#PB_Window_SystemMenu | #PB_Window_SizeGadget, "Resize me !")
SetWindowCallback(@SizeCallback())
Repeat
Until WaitWindowEvent() = #PB_EventCloseWindow
EndIf
(originally posted by fred ages ago

)
Phant0m``:
If you allready have another callback, don't set this up as another one,
because you can only have 1 callback procedure at a time.
(So if you add another one, the first won't work anymore)
Instead, just copy the code inside this callback procedure into your
own one. This should work.
Timo
Posted: Mon Apr 19, 2004 2:42 pm
by Dare2
Hi Freak,
Thanks. And to set the maximums:
GetSystemMetrics_(#SM_CXSCREEN)
GetSystemMetrics_(#SM_CYSCREEN)
would be safe bet? This is to the edge of the window, not the edge of the client area?
Posted: Mon Apr 19, 2004 2:54 pm
by Fred
I think I could add a native command for this. Any name suggestion for this ? I can't find a good one:
Code: Select all
SomethingName(#Window, MinWidth, MinHeight, MaxWidth, MaxHeight)
Posted: Mon Apr 19, 2004 3:03 pm
by Dare2
That would be neat.
Um
.. DefineWindowSizeLimits(smlW,smlH,bigW,bigH)
.. SetAbsoluteWindowSizing(..)

Posted: Mon Apr 19, 2004 3:05 pm
by blueznl
LimitWindowSize()
CapWindow()
WindowSizeLimit()
SetWindowSizeLimits()
SetWindowLimits()
MakeSureTheWindowIsNotGettingTooBigOrTooSmallYouWimpWhoCannotCodeThisYourself()
... to name but a few

Posted: Mon Apr 19, 2004 3:06 pm
by Kris_a
"WindowSizeLimit" has a ring to it, dont you think? or maybe "SetWindowSizeLimit / GetWindowSizeLimit"
(whoops, you beat me to it Blueznl

)
Posted: Mon Apr 19, 2004 3:12 pm
by Dare2
MakeSureTheWindowIsNotGettingTooBigOrTooSmallYouWimpWhoCannotCodeThisYourself()
Suits me.
Except it takes an hour to type and we wimps make typos! Maybe an alias: WimpSettings()
Posted: Mon Apr 19, 2004 3:38 pm
by Phant0m``
Hey freak
Much appreciated!!!
Thanks a billion!!!
freak wrote:Here you go:
Code: Select all
;
; Max/Min Window size tracking..
;
Procedure SizeCallback(WindowID, Message, wParam, lParam)
; Here is the trick. The GETMINMAXINFO must be processed
; and filled with min/max values...
;
If Message = #WM_GETMINMAXINFO
*SizeTracking.MINMAXINFO = lParam
*SizeTracking\ptMinTrackSize\x = 100
*SizeTracking\ptMinTrackSize\y = 100
*SizeTracking\ptMaxTrackSize\x = 600
*SizeTracking\ptMaxTrackSize\y = 300
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0,10,10,200,200,#PB_Window_SystemMenu | #PB_Window_SizeGadget, "Resize me !")
SetWindowCallback(@SizeCallback())
Repeat
Until WaitWindowEvent() = #PB_EventCloseWindow
EndIf
(originally posted by fred ages ago

)
Phant0m``:
If you allready have another callback, don't set this up as another one,
because you can only have 1 callback procedure at a time.
(So if you add another one, the first won't work anymore)
Instead, just copy the code inside this callback procedure into your
own one. This should work.
Timo
Posted: Mon Apr 19, 2004 4:57 pm
by GPI
SetWindowSize() ?
btw: MaximizeWindow(#flag) and IsMaxizmizeWindow() would be nice...
Posted: Mon Apr 19, 2004 5:25 pm
by Pupil
SetWindowMaxMinSize()?
or
SetWindowMinMaxSize()

Posted: Mon Apr 19, 2004 10:13 pm
by Fred
Thanks for the suggestions ! what about WindowBounds() (ok, I got that from JAVA

).