Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&
' получаем как-нибудь hWnd твоего окна
Public Function EnabCloseBut(boolClose As Boolean) as Boolean
Dim hWnd As Long
Dim wFlags As Long
Dim hMenu As Long
' получаем как-нибудь hWnd твоего окна
hWnd = Me.hWnd
hMenu = GetSystemMenu(hWnd, 0)
If Not boolClose Then
' делаем серой, недоступной
wFlags = MF_BYCOMMAND Or MF_GRAYED
Else
' возвр. обратно
wFlags = MF_BYCOMMAND And Not MF_GRAYED
End If
EnabCloseBut = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Function
Если хочешь вообще скрыть кнопку, то передай тогда просто в EnableMenuItem(,,MF_BYCOMMAND) - кажись так должно, но ты еще проверь
Как избавить форму от кнопки закрытия?
Есть форма, которую нужно показывать в режиме Sizable, но при этом пользователю не должна быть доступна кнопка выгрузки формы (самая правая кнопка с крестиком в верху окна). Если для всех кнопок этой серии проблем с отключением нет, то для этой я ничего не могу найти. Она отсутствует только при BorderStyle = No, но это мне никак не подходит. Чем это лечить, кто-нибудь знает? Пишу на VB6.
Цитата:
Originally posted by mhaturov
Задча следующая:
Есть форма, которую нужно показывать в режиме Sizable, но при этом пользователю не должна быть доступна кнопка выгрузки формы (самая правая кнопка с крестиком в верху окна). Если для всех кнопок этой серии проблем с отключением нет, то для этой я ничего не могу найти. Она отсутствует только при BorderStyle = No, но это мне никак не подходит. Чем это лечить, кто-нибудь знает? Пишу на VB6.
Задча следующая:
Есть форма, которую нужно показывать в режиме Sizable, но при этом пользователю не должна быть доступна кнопка выгрузки формы (самая правая кнопка с крестиком в верху окна). Если для всех кнопок этой серии проблем с отключением нет, то для этой я ничего не могу найти. Она отсутствует только при BorderStyle = No, но это мне никак не подходит. Чем это лечить, кто-нибудь знает? Пишу на VB6.
Ой, склероз, как это делается где-то я видел, меняется то ли стиль окна, то ли еще как до этих кнопок добираются
а тебе надо обязательно оставить остальные кнопки и скрыть только с крестом?
О, кажись нашел, че-то меня заклинило на SetWindowlong, а там через другую все это делается
Вот как можно сделать кнопку закрытия Disable (серой):
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
Цитата:
Originally posted by SergeySV
А, погодь, кажется там, если совсем удалить надо, то:
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
А, погодь, кажется там, если совсем удалить надо, то:
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
Спасибо!
После праздников попробую!
А не проще в Unload ставить Cancel больше 0?
Цитата:
Originally posted by USA-Lesh
А не проще в Unload ставить Cancel больше 0?
А не проще в Unload ставить Cancel больше 0?
А как потом форму выгружать?
Цитата:
Originally posted by mhaturov
А как потом форму выгружать?
А как потом форму выгружать?
Способов придумать можно миллион. Флаг ставить на выгрузку.
Цитата:
Originally posted by USA-Lesh
Способов придумать можно миллион. Флаг ставить на выгрузку.
Способов придумать можно миллион. Флаг ставить на выгрузку.
Это само собой, только вот должно же всё быть по-людски, тоесть красиво. Надо запретить пользователю выгружать форму, так пусть ему вообще лишняя кнопка глаза не мозолит, а то сразу же о разработчике у него плохое мнение возникнет.