Gå til innhold

Maks størelse på vinduer i windows


Anbefalte innlegg

Heisann

 

Maks størelsen på vinduer i windows er hele skjerm bredden og skjermhøyde minus ca 450 i høyde. Hvis jeg vil ha et program kjørenes på siden av skjermen, kan jeg skifte den maks størelsen på noen måte? Finnes jo masse spyware toolbars som gjør det :roll:

 

Jonas

Lenke til kommentar
Videoannonse
Annonse

hvis du setter BorderStyle til 0 på formen så kan du bevege deg "over" startmenyen hvis det er det du mener, dvs du kan dekke hele skjermen med denne koden

 

Option Explicit

Private Sub Form_Load()
   Me.Top = 0
   Me.Left = 0
   Me.Width = Screen.Width
   Me.Height = Screen.Height
End Sub

 

bare husk å sette BorderStyle til 0

Lenke til kommentar

Hvis du mener å sette den største størrelsen et vindu oppnå, vil dette være mulig med følgende kode.

 

Legg dette i en modul:

 

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hwnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Type POINTAPI
x As Long
y As Long
End Type

Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type

Public Const WM_DESTROY = &H2
Public Const WM_GETMINMAXINFO = &H24
Public Const GWL_WNDPROC = (-4)

Public Sub HookForm(hwnd As Long)

SetProp hwnd, "PrevProc", SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)

End Sub

Public Sub UnHookForm(hwnd As Long)

SetWindowLong hwnd, GWL_WNDPROC, GetProp(hwnd, "PrevProc")
RemoveProp hwnd, "PrevProc"

End Sub

Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim PrevProc As Long, MM As MINMAXINFO
Dim mData(3) As Long

PrevProc = GetProp(hwnd, "PrevProc")

Select Case uMsg
Case WM_GETMINMAXINFO

   CopyMemory MM, ByVal lParam, Len(MM)
   
   mData(0) = GetProp(hwnd, "MinWidth")
   mData(1) = GetProp(hwnd, "MinHeight")
   mData(2) = GetProp(hwnd, "MaxWidth")
   mData(3) = GetProp(hwnd, "MaxHeight")
       
   If mData(0) <> 0 Then MM.ptMinTrackSize.x = mData(0)
   If mData(1) <> 0 Then MM.ptMinTrackSize.y = mData(1)
   If mData(2) <> 0 Then MM.ptMaxTrackSize.x = mData(2)
   If mData(3) <> 0 Then MM.ptMaxTrackSize.y = mData(3)
   
   CopyMemory ByVal lParam, MM, Len(MM)
   Exit Function

Case WM_DESTROY
   UnHookForm hwnd

End Select

WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)

End Function

 

For å bruke dette setter du en lignende kode i en form:

 

Private Sub Form_Load()

SetProp Me.hwnd, "MaxWidth", 400
SetProp Me.hwnd, "MaxHeight", 400

HookForm Me.hwnd

End Sub

 

Det finnes ingen begrensning i hvor mangen former du kan gjøre dette med. Koden støtter også muligheten for å sette den minste størrelsen et vindu kan ha. Skriv da MinWidth istedenfor MaxWidth, og MinHeight istedenfor MaxHeight.

 

Vær også oppmerksom på at størrelsen er definert i pixels, og ikke i twips. For å omgjør mellom disse målestokkene bruk denne funksjonen:

 

ScaleX [tall], [fra benevning], [til beneving]

 

Brukes omtrent slik:

 

lWidthPixel = ScaleX(Me.Width, vbTwips, vbPixels)

Endret av aadnk
Lenke til kommentar

Nei nei. Det jeg mener er maks størelsen på andre vinduer. Den standaren i windows. Har noe av dere sett f eks sånn toolbar som legger seg rett over taskbar? den skifter maks størelsen på alle vinduer, sånn at når du maksimerer et vindu, legger deg seg ikke oppå toolbaren. Det vil jeg også gjøre! Skjønner?

Lenke til kommentar

Etter det jeg forstår vil du ha et vindu som ligger over alle andre vinduer, uansett. I så fall er løsningen denne:

 

Private 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)

Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40

Private Sub Form_Activate()

SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE

End Sub

Lenke til kommentar

Heisann!

 

Du vil altså lage din egen taskbar som endrer Maks størrelse på vinduer? Det kan du gjøre ved å bruke SystemParametersInfo Api'en. Med den kan du endre Workarena-størrelsen til windows og det er denne som bestemmer hvor stort et maksimert vindu er.

 

Et glimrende eksempel på hvordan du gjør dette finner du her:

 

http://www.planet-source-code.com/vb/scrip...=14562&lngWId=1

 

 

Lykke til!!! :)

Lenke til kommentar
  • 1 måned senere...
Heisann!

 

Du vil altså lage din egen taskbar som endrer Maks størrelse på vinduer? Det kan du gjøre ved å bruke SystemParametersInfo Api'en. Med den kan du endre Workarena-størrelsen til windows og det er denne som bestemmer hvor stort et maksimert vindu er.

 

Et glimrende eksempel på hvordan du gjør dette finner du her:

 

http://www.planet-source-code.com/vb/scrip...=14562&lngWId=1

 

 

Lykke til!!! :)

Ja!! Slik er det jeg mener :)

 

Jeg fikk til å skifte størelse, men den er jo litt feil. Jeg skal "docke right" slik at taskbaren (som er 1500 twips bred) på høyre side alltid er synelig. Noen som vet hvilken tall som må endres? Klarer ikke helt å se det i den koden..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...