vitaly3000
Member
Нужна помощь по такому вопросу в Visual Basic .Net.
Есть MDI программа. В ней несколько дочерних окон, где нужно отключить кнопку закрытия окна (наподобие MinimizeBox=false).
Для Visual Basic 6.0 есть такой код:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Const SC_Close = &HF060
Const MF_BYCOMMAnd = &H0
Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_Close, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub
Private Sub Form_Load()
DisableXbutton (Me.hwnd)
End Sub
Но этот код не работает в VB.Net.
Если программно для конкретной формы переписать событие OnClosing, то это событие влияет также и на основное окно (что совершенно путает работу программы)!
Что неправильно я делаю, или как можно по-другому решить эту проблему?
PS: Подобных примеров кода, как показал выше, в Инете много, но они все подобные и не работают в VB.Net.
Есть MDI программа. В ней несколько дочерних окон, где нужно отключить кнопку закрытия окна (наподобие MinimizeBox=false).
Для Visual Basic 6.0 есть такой код:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Const SC_Close = &HF060
Const MF_BYCOMMAnd = &H0
Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_Close, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub
Private Sub Form_Load()
DisableXbutton (Me.hwnd)
End Sub
Но этот код не работает в VB.Net.
Если программно для конкретной формы переписать событие OnClosing, то это событие влияет также и на основное окно (что совершенно путает работу программы)!
Что неправильно я делаю, или как можно по-другому решить эту проблему?
PS: Подобных примеров кода, как показал выше, в Инете много, но они все подобные и не работают в VB.Net.