есть форма со свойством BorderStule = 0 т.е. заголовка с тремя кнопками у нее нет, выглядит обычным прямоугольником. Меняю свойство ShowInTaskbar на True, чтобы внизу на панели задач программа значилась как запущенная. Запускаю прогу, жму правой кнопкой мышки по ее надписи на панели задач, чтобы вызвать контекстное меню - его нет! Подскажите, как сделать чтобы контекстное меню осталось, но при этом BorderStule должно быть = 0.
BorderStyle пусть таки будет = 1, а форме сделать обрезание:
Option Explicit
Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000
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 Declare Function SetWindowPos Lib "user32" _
 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
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_FRAMECHANGED = &H20
Private Sub Form_Load()
Dim lStyle As Long
lStyle = GetWindowLong(Me.hWnd, GWL_STYLE)
lStyle = lStyle And (Not WS_CAPTION)
SetWindowLong Me.hWnd, GWL_STYLE, lStyle
SetWindowPos Me.hWnd, _
0, 0, 0, 0, 0, _
SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED
Me.Show
End Sub
Не сразу разобрался с кодом и настройками формы, но потом дошло. Да, это подходит. Так можно сделать, если добавить еще в свойствах формы кнопку Свернуть (MinButton=True, собственно контек-е меню мне нужно было из-за нее). Спасибо за помощь, воспользуюсь Вашим кодом.