своё системное меню

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

своё системное меню

Сообщение Sirik » 06.09.2005 (Вт) 9:57

если окно емеет свойство BorderStyle в None, то при клике в Панели задач системного меню для данной программы не возникает.
как с этим бороться?

зы. не предлогать изменять свойство BorderStyle
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 06.09.2005 (Вт) 12:54

совсем нет идей?
помогите тогда, хотя бы отловить момент нажатия на задачу в Панели задач
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 06.09.2005 (Вт) 16:12

Просабклассь форму и лови событие &H7F (как называется не знаю)
Лучший способ понять что-то самому — объяснить это другому.

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 07.09.2005 (Ср) 1:56

Const WS_SYSMENU = &H80000
Сonst WS_EX_APPWINDOW = &H40000

Dim GWL As Long

Private Sub Form_Load()
'это для отображения окна в Таскбаре
GWL = GetWindowLong(hwnd, GWL_EXSTYLE)
Call SetWindowLong(hwnd, GWL_EXSTYLE, GWL Or WS_EX_APPWINDOW)

'а тут отображается системное меню
GWL = GetWindowLong(hwnd, GWL_STYLE)
Call SetWindowLong(hwnd, GWL_STYLE, GWL Or WS_SYSMENU)
End Sub

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 07.09.2005 (Ср) 3:09

или
сделай у формы BorderStyle=2, ScaleMode=3, вставь код. И будет тебе как надо

Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const SM_CXFRAME = 32
Private Const SM_CYBORDER = 6
Private Const SM_CYCAPTION = 4
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1
Dim XY(3) As POINTAPI

Private Sub Form_Load()
Dim hRgn As Long
XY(0).X = GetSystemMetrics(SM_CXFRAME): XY(0).Y = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFRAME)
XY(1).X = GetSystemMetrics(SM_CXFRAME): XY(1).Y = ScaleHeight + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFRAME)
XY(2).X = ScaleWidth + GetSystemMetrics(SM_CXFRAME): XY(2).Y = ScaleHeight + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFRAME)
XY(3).X = ScaleWidth + GetSystemMetrics(SM_CXFRAME): XY(3).Y = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXFRAME)
hRgn = CreatePolygonRgn(XY(0), 4, 2)
Call SetWindowRgn(hwnd, hRgn, True)
End Sub

Private Sub Form_DblClick()
End
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call ReleaseCapture
Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End Sub

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 07.09.2005 (Ср) 8:16

второй код мне не подходит: так как мне нельзя использовать прямоугольные регионы
с первый.. счас погляжу
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 63

    TopList