|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Visual Basic FAQ SetWindowPos: Create a Topmost Window |
||
Posted: | Thursday December 26, 1996 | |
Updated: | Monday December 26, 2011 | |
Applies to: | VB4-32, VB5, VB6, and VB3, VB4-16 with appropriate declarations | |
Related: | SetWindowPos: Create a Topmost Window SetWindowLong: Create a Floating Window Pure VB: Simulating Owned Windows for MDI Children |
Prerequisites |
None. |
|
Here's another popular request ... a quick API call that will a VB form
appear 'topmost' over all other windows, even when another application
gains focus.
Note: While in the VB design environment, a window set to topmost may, depending on the project form or other application activated, appear to loose its topmost status. This is by design in Win32, and the application should function as anticipated once the application is compiled into an exe. Once the application has been compiled it will perform as desired. 16-bit developers do not have this concern. |
BAS Module Code |
None. |
|
Form Code |
Add the following to any form to make topmost: |
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Constants for topmost. Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Const SWP_NOACTIVATE = &H10 Private Const SWP_SHOWWINDOW = &H40 Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Private Declare Function 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) As Long Private Sub Form_Load() 'typically called in the form load Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) End Sub |
Comments |
A topmost window is one which is always overtop all other windows, including those windows in other applications. An example
might be an application-launching toolbar which you want to always be 'on top' of any activated window in any application.
Because topmost windows act independently of any parent window which created them (using the toolbar example), a topmost window will not become minimized if the parent window is minimized. If your intention is to design a window that is only topmost in relation to your parent application, and not the entire screen, as the above code would set, see the FAQ Code for SetWindowLong: Create a Floating Window. To remove the topmost attribute from a form, call SetWindowPos again, passing HWND_NOTOPMOST as the second parameter of the API. Note: While in the VB design environment, a window set to topmost may, depending on the project form or other application activated, appear to loose its topmost status. This is by design in Win32, and the application should function as anticipated once the application is compiled into an exe. |
|
|
|
|||||
|
|||||
|
|||||
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |