Hej igen. Jag börjar bli flitig besökare. Men jag får sån bra hjälp av er alla så jag drar ett problem till. Fins två flager som du använder för att ignorerar höger top, samt bredd höjd: Tack! Följer väl med VB? Men den filen finns inte på min maskin (ingenstans på hårddisken), och vår tekniker har snott CD'n.Alltid överst..med modifikation.
Jag har ett formulär med en checkbox där man kan välja om formuläret ska vara över alla andra windowsfönster (always on top).
Problemet är att när jag kör den funktionen så vill den även flytta fönstret i x och y -led på skärmen samt ställa in storleken på fönstret (formuläret). Jag skulle vilja att fönstret alltid ligger kvar där det är även fast man aktiverar eller avaktiverar funktionen.
Koden ser ut såhär:
Modulen:
Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer)
Const conHwndTopmost = -1
Const conHwndNoTopmost = -2
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40
och i Formuläret har jag Checkbox'en som ser ut såhär:
Private Sub mnuTopmost_Click()
If mnuTopmost = 1 Then
SetWindowPos hWnd, conHwndTopmost, 250, 615, 425, 126, conSwpShowWindow Or conSwpNoActivate
Else
SetWindowPos hWnd, conHwndNoTopmost, 250, 615, 425, 126, conSwpNoActivate Or conSwpShowWindow
End If
End Sub
Hur modifierar man koden så att den inte flyttar på fönstret?
Bäst vore om man även kunde ta bort den del som ändrar storleken på fönstret. Så att den bara lägger fönstret över alla andra, inte ändrar vare sig positionen x och y eller cx och cy.
Krångligt? (Jag tycker det).
/MagnusSv: Alltid överst..med modifikation.
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Private Sub mnuTopmost_Click()
If mnuTopmost = 1 Then
SetWindowPos hWnd, conHwndTopmost, 0&, 0&, 0&, 0&, conSwpShowWindow Or conSwpNoActivate Or SWP_NOMOVE Or SWP_NOSIZE
Else
SetWindowPos hWnd, conHwndNoTopmost, 0&, 0&, 0&, 0&, conSwpNoActivate Or conSwpShowWindow Or SWP_NOMOVE Or SWP_NOSIZE
End If
End SubSv: Alltid överst..med modifikation.
Det fungerar perfekt!
Var kan man hitta filen win32api.txt som omtalas i hjälpfilen?
Jag hittar den inte.
Finns den att ladda ner nånstans eller så?
/MagnusSv: Alltid överst..med modifikation.
Ligger normalt i:
C:\Program Files\Microsoft Visual Studio\Common\Tools\Winapi\WIN32API.txt
Där det trevliga verktyget "VB 6 API Declaration Loader" också finns.
Vilket gör det lättare att finna deklerationer. Tack!
Jag får jaga honom med blåslampan sen då.
:)
/Magnus