Добрый день!
Помогите с решением такой задачи: нашел код блокирующий перемещение формы (а также ее закрытие по крестику), вставил его в свой документ, во все формы, но появилось три вопроса:
1. Можно ли код относящийся к декларированию функций закинуть один раз в модуль листа, чтобы не вставлять в код каждой формы? У меня не получилось.
2. Из одной из формы я открываю другую форму: первая все нормально блокируется от перемещений, вторая - нет, ошибки тоже никакой не выдает.
3. Может есть другой вариант блокировки, например без использования API?
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const MF_BYPOSITION As Long = &H400&
Private Sub UserForm_Initialize()
Dim hwnd As Long
Dim e As Integer
hwnd = FindWindow(vbNullString, Me.Caption)
If hwnd <> 0 Then
For e = 0 To 6
Call RemoveMenu(GetSystemMenu(hwnd, 0&), 0&, MF_BYPOSITION)
Next
End If
End Sub
Помогите с решением такой задачи: нашел код блокирующий перемещение формы (а также ее закрытие по крестику), вставил его в свой документ, во все формы, но появилось три вопроса:
1. Можно ли код относящийся к декларированию функций закинуть один раз в модуль листа, чтобы не вставлять в код каждой формы? У меня не получилось.
2. Из одной из формы я открываю другую форму: первая все нормально блокируется от перемещений, вторая - нет, ошибки тоже никакой не выдает.
3. Может есть другой вариант блокировки, например без использования API?
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const MF_BYPOSITION As Long = &H400&
Private Sub UserForm_Initialize()
Dim hwnd As Long
Dim e As Integer
hwnd = FindWindow(vbNullString, Me.Caption)
If hwnd <> 0 Then
For e = 0 To 6
Call RemoveMenu(GetSystemMenu(hwnd, 0&), 0&, MF_BYPOSITION)
Next
End If
End Sub