Visual Basic Explorer
Visual Basic Explorer
 Navigation
 Home


 Coding
 Source Code

 FAQ Center

 VB Tips

 Downloads

 ToolBox

 Tutorials

 VB Games

 VB News

 VB Award

 VB Forums



 Affiliates
 Planet Source Code

 Rent a Coder

 DirectX4VB


 Misc
 Search

 Feedback

 Advertise

 About


Need to hire
a VB coder?

Please support our sponsor:

 Home 
 Site Map 
 Forums 
 News 
 Feedback 

Forms, Windows and Controls



How to move a control on a form at runtime.
How to center a form on a parent window.
How to make a form stay 'on top' of all other windows 32bit.
How to make a form stay 'on top' of all other windows 16bit.
How to center a form on the screen.
How to center a form within another form.
How to hide and show a specific window or icon.
How to hide, show, minimize MDI child forms.
How to move a form with no title bar.
How to position a shelled window.

Got a useful snippet you'd like to share? Submit it here.


Back to top

'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to make a form stay 'on top' of all other windows.. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Declare this API and these Constants: Declare Function SetWindowPos% Lib "user" (ByVal h%, ByVal hb%, ByVal x%, ByVal y%, ByVal cx%, ByVal cy%, ByVal f%) Const SWP_NOMOVE = 2 Const SWP_NOSIZE = 1 Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Const HWND_TOPMOST = -1 Const HWND_NOTOPMOST = -2 ' Add the following code to the appropriate event: ' Set TopMost Dim success% success% = SetWindowPos%(Form1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, Flags) ' Remove TopMost Dim success% success% = SetWindowPos%(Form1.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0,Flags)


Back to top
'------------------------------------------------------------------- 'Author: Dan Pupius 'email : DanP600@aol.com 'web : http://users.aol.com/danp600 'Posted:11/15/97 ' 'How to make a form stay 'on top' of all other windows.. 'This version has been tested with VB4-32 '------------------------------------------------------------------- 'Here's a cool little API function for VB4 on Win 32s. 'It basically allows a window to "Always be on top" This goes in the declarations section of a module Global Const SWP_NOMOVE = 2 Global Const SWP_NOSIZE = 1 Global Const HWND_TOPMOST = -1 Global Const HWND_NOTOPMOST = -2 Global Const FLOAT = 1, SINK = 0 Public Declare Sub SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) This is a sub within the module Sub FloatWindow(X As Integer, action As Integer) ' When called by a form: ' ' If action <> 0 makes the form float (always on top) ' If action = 0 "unfloats" the window. ' Dim wFlags As Integer, result As Integer wFlags = SWP_NOMOVE Or SWP_NOSIZE If action <> 0 Then ' Float Call SetWindowPos(X, HWND_TOPMOST, 0, 0, 0, 0, wFlags) Else ' Sink Call SetWindowPos(X, HWND_NOTOPMOST, 0, 0, 0, 0, wFlags) End If End Sub Then to call the procedure you use this code Dim f as integer f = Screen.ActiveForm.hWnd Call FloatWindow(f, FLOAT) to "float" the form, ie. allways ontop or Dim f as integer f = Screen.ActiveForm.hWnd Call FloatWindow(f, SINK) to sink. Alternatively instead of Screen.ActiveForm.hWnd you can specify a window, ie Me.hWnd to float/sink the current form.


Back to top
'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to center a form on the screen. '------------------------------------------------------------------- ' Center the desired form on the screen Sub CenterFrm (aForm As Form) Dim x, y x = (Screen.Width - aForm.Width) / 2 y = (Screen.Height - aForm.Height) / 2 aForm.Move x, y End Sub ' Example: CenterFrm Form1


Back to top
'------------------------------------------------------------------- 'Author: Joe Markowski 'E-Mail: jsmarko@mail.eclipse.net 'Posted:02/24/98 ' 'How to center a form within another form. '------------------------------------------------------------------- 'centers the form in App rename frmMain to the name of your Main Form. Public Sub CenterForm(frmTarget As Form) frmTarget.Move (frmMain.Left + (frmMain.Width - frmTarget.Width) / 2), _ (frmMain.Top + (frmMain.Height - frmTarget.Height) / 2) End Sub To use it just call the sub CenterForm Me


Back to top

'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to hide and show a specific window or icon. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Use these 2 API's and the code below to hide/show a window ' or icon. Works nicely to hide the Graphics Server icon, for example. ' Declare these API's and Constants: Declare Function FindWindow% Lib "User" (ByVal lpClassName As Any, ByVal lpWindowName As Any) Declare Function ShowWindow% Lib "User" (ByVal hWnd%, ByVal nCmdShow%) Const SW_HIDE = 0 Const SW_SHOW = 5 ' Put the code below in the appropriate event: ' Form_Load or Activate most likely. Form_Load() ' This example hides the "Graphics Server" icon Dim Handle As Integer Dim WindowName As String ' Set the name of the window WindowName = "Graphics Server" ' Find that window Handle = FindWindow(0&, WindowName) ' Change last param to SW_SHOW to show the icon again X% = ShowWindow(Handle, SW_HIDE) End Sub


Back to top
'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to hide, show, minimize MDI child forms. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Here's how to hide/show/minimize/...etc. MDI children ' Declare API and Constants Declare Function ShowWindow% Lib "User" (ByVal hWnd%, ByVal nCmdShow%) Global Const SW_HIDE = 0 Global Const SW_SHOWNORMAL = 1 Global Const SW_SHOWMINIMIZED = 2 Global Const SW_SHOWMAXIMIZED = 3 Global Const SW_SHOWNOACTIVE = 4 Global Const SW_SHOW = 5 Global Const SW_MINIMIZE = 6 Global Const SW_SHOWMINNOACTIVE = 7 Global Const SW_SHOWNA = 8 Global Const SW_RESTORE = 9 ' Examples: Dim Re% ' Hide the child form Re% = ShowWindow(frmMDIChild.hWnd, SW_HIDE) ' Show the child form Re% = ShowWindow(frmMDIChild.hWnd, SW_SHOW) ' Minimize the child form Re% = ShowWindow(frmMDIChild.hWnd, SW_MINIMIZE)


Back to top
'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to move a form with no title bar. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Here's how to move a form that contains no title bar. ' Declare these API's and Constant Declare Sub ReleaseCapture Lib "user" () Declare Function SendMessage& Lib "user" (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, lParam As Any) Const WM_NCLBUTTONDOWN = &HA1 ' In the Form's MouseDown event add this code: Dim r% If button = 1 Then ReleaseCapture r% = SendMessage(hWnd, WM_NCLBUTTONDOWN, 2, 0) End If


Back to top
'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to position a shelled window. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Here's how to position a shelled window where ever ' you want it on the screen. ' Declare the 2 API's Declare Function FindWindow% Lib "User" (ByVal lpClassName&, ByVal lpWindowName$) Declare Sub SetWindowPos Lib "User" (ByVal hWnd%, ByVal hWndInsertAfter%, ByVal X%, ByVal Y%, ByVal cx%, ByVal cy%, ByVal wFlags%) ' Add this code to the appropriate event: Dim r% Dim myhWnd% ' Shell to executable and load the file r = Shell("Notepad c:\autoexec.bat", 1) DoEvents ' Let the app load completely ' Get the executable window handle based on window's title myhWnd = FindWindow(0, "Notepad - AUTOEXEC.BAT") ' Move the window to the desired location ' Parms 3 and 4 are top and left, ' 5 and 6 are window height and width SetWindowPos myhWnd, -1, 10, 10, 200, 300, SWP_SHOWWINDOW


Back to top
'------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to move a control on a form at runtime. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' Here's how to move a control around on a form at runtime: ' Declare these APIs and Constants Declare Sub ReleaseCapture Lib "user" () Declare Function SendMessage& Lib "user" (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, lParam As Any) Const WM_SYSCOMMAND = &H112 Const SC_MOVE = &HF012 ' In this example we'll use a picture box, in the MouseDown event add: Sub Picture1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Dim ret% If Button = 1 Then ReleaseCapture ret = SendMessage(Picture1.hWnd, WM_SYSCOMMAND, SC_MOVE, 0) End If End Sub


Back to top '------------------------------------------------------------------- 'Author: Gordon F. MacLeod 'web : www.cadvision.com 'Posted:11/01/97 ' 'How to center a form on a parent window. 'Note: This has only been tested with VB 3 and VB 4-16, if you convert 'this for use with other versions please let me know.-Burt Abreu '------------------------------------------------------------------- ' This procedure centers a Form over a Parent window. ' This dialog-centering algorithm works well when you're ' not sure of the resolution of the target computer. ' Declare this Type in a .Bas module: Type RECT Left As Integer Top As Integer Right As Integer Bottom As Integer End Type ' Declare this API Declare Sub GetWindowRect Lib "User" (ByVal hWnd%, lpRect As RECT) ' Add the DialogCenterParent rountine: Sub DialogCenterParent (ByVal hWndParent As Integer, frmDialog As Form) Dim iLeft As Integer Dim iTop As Integer Dim iMidX As Integer Dim iMidY As Integer Dim rcParent As RECT ' Find the ideal center point. If hWndParent = 0 Then 'No parent, so center over the enter screen iMidX = Screen.Width / 2 iMidY = Screen.Height / 2 Else 'Center over the form's parent. Call GetWindowRect(hWndParent, rcParent) ' Next 2 lines as one single line. iMidX = ((rcParent.Left * Screen.TwipsPerPixelX) + (rcParent.Right * Screen.TwipsPerPixelY)) / 2 ' Next 2 lines as one single line. iMidY = ((rcParent.Top * Screen.TwipsPerPixelY) + (rcParent.Bottom * Screen.TwipsPerPixelY)) / 2 End If ' Find the form's upper left based on that iLeft = iMidX - (frmDialog.Width / 2) iTop = iMidY - (frmDialog.Height / 2) ' If the form is outside the screen, move it inside If iLeft < 0 Then iLeft = 0 ElseIf (iLeft + frmDialog.Width) > Screen.Width Then iLeft = Screen.Width - frmDialog.Width End If If iTop < 0 Then iTop = 0 ElseIf (iTop + frmDialog.Height) > Screen.Height Then iTop = Screen.Height - frmDialog.Height End If ' Move the form to it's new position frmDialog.Move iLeft, iTop End Sub ' Call the routine in the Form_Load event of the form to center: ' Substitute your Parent for Form1 Call DialogCenterParent(Form1.hWnd, Me)

Back to top




Home | About | What's New | Source Code | FAQ | Tips & Tricks | Downloads | ToolBox | Tutorials | Game Programming | VB Award | Search | VB Forums | Feedback | VBNews | Copyright & Disclaimer | Advertise | Privacy Policy |

Quick searches: Site Search | Advanced Site Search 

Copyright 2002 by Exhedra Solutions, Inc.
By using this site you agree to its terms and conditions
VB Explorer and VBExplorer.com are trademarks of Exhedra Solutions, Inc.