|
| Autor |
Nachricht |
blubablub_ Tutorial Leser


Anmeldedatum: 20.06.2007 Beiträge: 31
|
Minimalgröße eines Fensters festlegen
Verfasst am: 09.11.2007, 13:32 |
|
|
Tag,
weiß jemand von euch wie ich eine Art 'Minimalgröße' einstelle, dass man beim resizen nich diese größe unterschreiten kann?
danke im voraus
mfG
| King of Chaos hat Folgendes geschrieben: | MAN REGT IHR KIDDIES MICH AUF!!!!
was hatt das mit Copy PAST ZUTUEN?!
wenn man was vom VT nachmacht ?!!!!!!!
|
| enco hat Folgendes geschrieben: | | Ja King of Chaos, da meldet sich der Richtige zu Wort ... |
|
|
| |
|
 |
Hamtaro_ « Moderator »

Anmeldedatum: 06.05.2007 Beiträge: 217 Wohnort: NRW
|
Verfasst am: 09.11.2007, 14:01 |
|
|
Ich würde sagen, im OnResize Ereignis der Form einfach:
| Code: | | If Me.Width < 200 Then Me.Width = 200 |
irgend wie sowas...
Wie findet ihr meine Sig? |
|
| |
|
 |
The-God-of-all_ Poster

Anmeldedatum: 20.05.2007 Beiträge: 170 Wohnort: App.Path
|
Verfasst am: 09.11.2007, 14:16 |
|
|
| Die Lösung die Hamatro genannt hat ist möglich, aber eigentlich sehr unsauber. Wenn man das so macht und man dann versucht die Form kleiner zu machen dann flackert die Form weil sie kleiner wird und dann direkt wieder größer. Ich habe diese Lösung auch schon verwendet weil mir die saubere Lösung zu umständlich war, aber die saubere Lösung findet ihr hier. |
|
| |
|
 |
blubablub_ Tutorial Leser


Anmeldedatum: 20.06.2007 Beiträge: 31
|
Verfasst am: 10.11.2007, 12:41 |
|
|
so hatte ich mir das auch gedacht, aber es sieht doch sehr schlampig aus und ist sehr langsam.
hab da was anderes gefunden, aber da blick ich nich durch... Klick
hat jemand noch ne andere idee?
| King of Chaos hat Folgendes geschrieben: | MAN REGT IHR KIDDIES MICH AUF!!!!
was hatt das mit Copy PAST ZUTUEN?!
wenn man was vom VT nachmacht ?!!!!!!!
|
| enco hat Folgendes geschrieben: | | Ja King of Chaos, da meldet sich der Richtige zu Wort ... |
|
|
| |
|
 |
Jolo_ Coder


Anmeldedatum: 20.03.2007 Beiträge: 210
|
Verfasst am: 10.11.2007, 12:52 |
|
|
Diese Lösung ist doch recht einfach,
Das ganze packst du in ein modul:
| Code: | Option Explicit
Private WinOldProcMinMax
Private Const GWL_WNDPROC = (-4)
' Die Nachricht WM_GETMINMAXINFO wird an ein Fenster
' geschickt, bevor es vergrößert bzw. verkleinert wird
Private Const WM_GETMINMAXINFO = &H24
Private lX1 As Long
Private lX2 As Long
Private lY1 As Long
Private lY2 As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI 'Minimale Größe
ptMaxTrackSize As POINTAPI 'Maximale Größe
End Type
Private Declare Function DefWindowProc Lib "user32" Alias _
"DefWindowProcA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private 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
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" ( _
ByVal Destination As Any, _
ByVal Source As Any, _
ByVal Length As Long)
Private Declare Sub CopyMemory1 Lib "kernel32" _
Alias "RtlMoveMemory" ( _
Destination As MINMAXINFO, _
ByVal Source As Long, _
ByVal Length As Long)
Private Declare Sub CopyMemory2 Lib "kernel32" _
Alias "RtlMoveMemory" ( _
ByVal Destination As Long, _
Source As MINMAXINFO, _
ByVal Length As Long) |
und das:
| Code: | ' AufrufProzedur
' Am besten im Form_Load-Ereignis aufrufen
Public Sub SetMinMax(Form As Form, x1 As Long, _
y1 As Long, x2 As Long, y2 As Long)
WinOldProcMinMax = SetWindowLong(Form.hWnd, _
GWL_WNDPROC, AddressOf WindowProcMinMax)
lX1 = x1
lX2 = x2
lY1 = y1
lY2 = y2
End Sub
' Normalzustand wiederherstellen
' WICHTIG! Vor dem Beenden der Form aufrufen
Public Sub UnloadMinMax(Form As Form)
SetWindowLong Form.hWnd, GWL_WNDPROC, _
WinOldProcMinMax
End Sub
' Hier kommen alle Nachrichten an, die an daß Fenster
' geschickt werden
Private Function WindowProcMinMax(ByVal hWnd As Long, _
ByVal uMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim ret As Long
Dim MM As MINMAXINFO
If uMsg = WM_GETMINMAXINFO Then
CopyMemory1 MM, lParam, Len(MM)
With MM
.ptMinTrackSize.x = lX1
.ptMinTrackSize.y = lY1
.ptMaxTrackSize.x = lX2
.ptMaxTrackSize.y = lY2
End With
CopyMemory2 lParam, MM, Len(MM)
ret = DefWindowProc(hWnd, uMsg, wParam, lParam)
Else
' Wenn andere Nachricht, dann "durchlassen"
ret = CallWindowProc(WinOldProcMinMax, hWnd, uMsg, _
wParam, lParam)
End If
WindowProcMinMax = ret
End Function |
Dann das hier in den Code von der Form:
| Code: | ' Größeneinschränkung festlegen
Private Sub Form_Load()
SetMinMax Me, 200, 200, 500, 500
End Sub
' WICHTIG: Normalzustand wiederherstellen
Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
UnloadMinMax Me
End Sub |
Da kannst du auch noch einstellen wie groß
MfG Jolo ^^ |
|
| |
|
 |
|
|