[ KaAmIkAzA @ 01.09.2008. 13:40 ] @
Kako ukloniti dugme za MAXIMIZE na MDI formi |
[ KaAmIkAzA @ 01.09.2008. 13:40 ] @
[ goranvuc @ 01.09.2008. 16:02 ] @
Na standardan nacin nikako, jedino nesto preko API-ja (za to ce ti Eurora3D ili krcko vec dati resenje ako ga ima).
[ stefanpn @ 01.09.2008. 16:56 ] @
Ja imam nacin za disableovanje X dugmeta, ali to nije ono sto tebi treba...
Code: 'U modulu: Public Declare Function SetWindowPos Lib "user32.dll" (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 Public Const MF_BYPOSITION = &H400& Public Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long, _ ByVal nPosition As Long, ByVal wFlags As Long) As Long Public Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Long, _ ByVal bRevert As Long) As Long Public Sub DisableClose(hWnd As Long) Dim hMenu As Long hMenu = GetSystemMenu(hWnd, 0) RemoveMenu hMenu, 6, MF_BYPOSITION RemoveMenu hMenu, 5, MF_BYPOSITION End Sub pozivas ga sa: Code: DisableClose frmForm.hWnd Evo ti jedno mnogo jednostavnije rešenje koje radi i na MDI i na svim drugim formama: Code: Private Sub Form_Resize() If Me.WindowState = 2 Then Me.WindowState = 0 End If End Sub [ Eurora3D Team @ 02.09.2008. 00:20 ] @
Ja se nisam do sad sretao sa ovim "problemom" ali sam uspeo da iz nekoliko pokusaja dobijem ono sto se trazi. Maximize nije uklonjen (trebalo bi da se promeni i border stil i minimize da bi to moglo) ali je disabled (prozor vise nema mogucnost da se maximalizuje dugmetom). Stil koji se dobija je klasican MDI stil prozora , samo nije uljuceno WS_MAXIMIZEBOX (maximize dugme) Win Api funkcija je SetWindowLong a konstante koje se ne koriste sam dodao ako neko hoce da eksperimentise sa stilovima. Code: Private Const WS_MAXIMIZEBOX = &H10000 Private Const WS_MINIMIZEBOX = &H20000 Private Const WS_OVERLAPPED = &H0& Private Const WS_CAPTION = &HC00000 Private Const WS_SYSMENU = &H80000 Private Const WS_THICKFRAME = &H40000 Private Const WS_CLIPCHILDREN = &H2000000 Private Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX) Private Const GWL_STYLE = (-16) Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex 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 Sub MDIForm_Load() Dim wLong As Long wLong = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_CLIPCHILDREN If SetWindowLong(Me.hwnd, GWL_STYLE, wLong) = 0 Then Debug.Print "Greska" End Sub p.s Ako hoces fiksne ivice prozora izbrisi Or WS_THICKFRAME Sa ovim dobijas MDI formu fiksnih ivica i samo sa X dugmetom wLong = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_CLIPCHILDREN [Ovu poruku je menjao Eurora3D Team dana 03.09.2008. u 02:24 GMT+1] [ stefanpn @ 15.09.2008. 09:42 ] @
[ goranvuc @ 15.09.2008. 09:44 ] @
A da malo pazljivije citas?
Pitanje je bilo MDI Form!!! [ stefanpn @ 15.09.2008. 10:43 ] @
Ok, moja greska.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|