[ KaAmIkAzA @ 01.09.2008. 13:40 ] @
Kako ukloniti dugme za MAXIMIZE na MDI formi
[ 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 ] @
Citat:
goranvuc: Na standardan nacin nikako, jedino nesto preko API-ja (...).


Nije tacno.

[ 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.