Jonas Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 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 Jonas Lenke til kommentar
d0ppler Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 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
aadnk Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 (endret) 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 12. mai 2004 av aadnk Lenke til kommentar
Jonas Skrevet 12. mai 2004 Forfatter Del Skrevet 12. mai 2004 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
aadnk Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 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
Jonas Skrevet 12. mai 2004 Forfatter Del Skrevet 12. mai 2004 Men da er poenget at hvis en bruker maskimerer vinduet, vil han ikke se hele programmet sitt! Derfor må jeg trekke igjen den grensa litt. Lenke til kommentar
Alexen Skrevet 18. mai 2004 Del Skrevet 18. mai 2004 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
Jonas Skrevet 3. juli 2004 Forfatter Del Skrevet 3. juli 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå