PureBasic Forum
https://www.purebasic.fr/english/

Tip: Creating a resolution-independent window
https://www.purebasic.fr/english/viewtopic.php?f=12&t=3700
Page 1 of 1

Author:  BackupUser [ Thu Feb 28, 2002 1:37 am ]
Post subject: 

Restored from previous forum. Originally posted by PB.

I got this tip from Microsoft's Knowledge Base and converted it to PureBasic;
not entirely (eg. fonts), but most of it. Hope it's of use to you! Written
for Windows, but might work with Amiga/Linux.

The original Microsoft tip was here:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q182070

And here's my version, which, incidentally, will be incorporated into vis2pure's
next release for auto-resizing forms.

Example snipped: See new version below which now supports PanetGadgets.

PB - Registered PureBasic Coder

Edited by - PB on 28 February 2002 19:12:40

Author:  BackupUser [ Thu Feb 28, 2002 2:00 am ]
Post subject: 

Restored from previous forum. Originally posted by MrVainSCL.

Hi Paul
Nice example... Surely vers usefull for some appz coders and esp. for newbies who want to code a boopsi gui :wink: Stay cool... bye

PIII450, 256MB Ram, 6GB HD, RivaTNT, DirectX8.1, SB AWE64, Win98SE + Updates...

greetz
MrVainSCL! aka Thorsten

Author:  BackupUser [ Thu Feb 28, 2002 2:19 pm ]
Post subject: 

Restored from previous forum. Originally posted by tranquil.

Hi Paul.

Nice to see someone else who tries a resizeable GUI. MrVain and I tried to.
But there is still a little but very nasty bug in PB since Version 2.50.

Create a Pannelgadget and place some Gadgets in it and try to resize it bigger.
You will see that all Gadgets that will be placed or drawn over the actual original size dont be updated/ drawn again.

Still waiting for a fixed Version from Fred, but till yet, no response. :(

Mike

Tranquilizer/ Secretly!
Registred PureBasic User

Author:  BackupUser [ Thu Feb 28, 2002 4:13 pm ]
Post subject: 

Restored from previous forum. Originally posted by Franco.

Thanks PB for the nice example.



Have a nice day...
Franco

Sometimes you have to go a lonely way to accomplish genius things.

Author:  BackupUser [ Thu Feb 28, 2002 4:50 pm ]
Post subject: 

Restored from previous forum. Originally posted by fred.

Quote:
Still waiting for a fixed Version from Fred, but till yet, no response. :(


Fixing this bug is really hard, as PanelGadget are a nice trick to ease the whole thing (try to code it in C to see what I mean). But I will look at it.

Fred - AlphaSND

Author:  BackupUser [ Thu Feb 28, 2002 6:52 pm ]
Post subject: 

Restored from previous forum. Originally posted by PB.

Here's an updated version of my code, which works with v4.10 Beta 3.
Run it, then click and drag the lower-right corner, and move it around.

Code:
Form1_W=312 ; Form's client width.
Form1_H=213 ; Form's client height.

Global Form1_hWnd,Form1_OrigW,Form1_OrigH

#Form1_Flags=#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget|#PB_Window_SystemMenu
Form1_hWnd=OpenWindow(0,200,200,Form1_W,Form1_H,"Form1",#Form1_Flags)
If Form1_hWnd=0 Or CreateGadgetList(Form1_hWnd)=0 : End : EndIf
SmartWindowRefresh(0,#True)

Form1_OrigW=WindowWidth(0)  ; Original non-client width.
Form1_OrigH=WindowHeight(0) ; Original non-client height.

#Form1_Command1=1 : Form1_Command1_hWnd=ButtonGadget(#Form1_Command1,8,8,81,33,"Command1")
#Form1_Command2=2 : Form1_Command2_hWnd=ButtonGadget(#Form1_Command2,224,8,81,33,"Command2")
#Form1_Command3=3 : Form1_Command3_hWnd=ButtonGadget(#Form1_Command3,120,88,81,33,"Command3")
#Form1_Command4=4 : Form1_Command4_hWnd=ButtonGadget(#Form1_Command4,8,176,81,33,"Command4")
#Form1_Command5=5 : Form1_Command5_hWnd=ButtonGadget(#Form1_Command5,224,176,81,33,"Command5")

Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
  Result=#PB_ProcessPureBasicEvents
  Select Message
    Case #WM_SIZE ; Form's size has changed.
      Form1_RatioW.f=WindowWidth(0)/Form1_OrigW ; Get horizontal difference.
      Form1_RatioH.f=WindowHeight(0)/Form1_OrigH ; Get vertical difference.
      ResizeGadget(#Form1_Command1,8*Form1_RatioW,8*Form1_RatioH,81*Form1_RatioW,33*Form1_RatioH)
      ResizeGadget(#Form1_Command2,224*Form1_RatioW,8*Form1_RatioH,81*Form1_RatioW,33*Form1_RatioH)
      ResizeGadget(#Form1_Command3,120*Form1_RatioW,88*Form1_RatioH,81*Form1_RatioW,33*Form1_RatioH)
      ResizeGadget(#Form1_Command4,8*Form1_RatioW,176*Form1_RatioH,81*Form1_RatioW,33*Form1_RatioH)
      ResizeGadget(#Form1_Command5,224*Form1_RatioW,176*Form1_RatioH,81*Form1_RatioW,33*Form1_RatioH)
  EndSelect
  ProcedureReturn Result
EndProcedure

SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow

.

Author:  BackupUser [ Thu Feb 28, 2002 7:54 pm ]
Post subject: 

Restored from previous forum. Originally posted by MrVainSCL.

Hi PB
Nice example... but as i remember correct on tranquil´s and my project, the PB bug was, when úsing a PanelGadget and to use inside this another PanelGadget too!? Mhhh.. We will see, what tranquil say to this :wink:


PIII450, 256MB Ram, 6GB HD, RivaTNT, DirectX8.1, SB AWE64, Win98SE + Updates...

greetz
MrVainSCL! aka Thorsten

Author:  BackupUser [ Thu Feb 28, 2002 8:10 pm ]
Post subject: 

Restored from previous forum. Originally posted by tranquil.

Hi PB.

Your example works fine and the bug did not pop up. I think its couse that I use the ResizeGadget command, and this definitly do not do his work fine in my source.

For now, I will use your methode. Thanks a lot for this tip!!

Mike

Tranquilizer/ Secretly!
Registred PureBasic User

Page 1 of 1 All times are UTC + 1 hour
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/