Контекстное меню и заголовок формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Nikonik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 12.07.2006 (Ср) 10:55

Контекстное меню и заголовок формы

Сообщение Nikonik » 13.07.2006 (Чт) 8:41

В VB6 есть такое недоразумение как связь контекстного меню с типом формы.

Поясняю:
1 ) я хочу создать контекстное меню и знаю как это сделать
2) я хочу чтобы форма былa Border-style: None.

Но несморя на то что единствое меню созданое в menu editor невидимое все равно форма получается в окошке (что интересно - border-style остается None).

С какой-то стороны я конечно понимаю разработчиков -вдруг программисту захочется в ходе выполнения сделать это меню видимым, но с другой - я не знаю как мне сделать контекстное меню.
Конечно можно создать дополнительную форму и на ней сделать меню, но во-первых это не очень красиво, во-вторых приложение при вызове меню из другой формы подвисает приблизительно на полсекунды.

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

Сообщение Antonariy » 13.07.2006 (Чт) 9:15

Создай юзерконтрол с меню и положи его на форму.
Лучший способ понять что-то самому — объяснить это другому.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 13.07.2006 (Чт) 9:36

..., а лучше возьми готовый с vbrussian
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

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

Сообщение Antonariy » 13.07.2006 (Чт) 9:38

..., если хочешь лишней мороки.
Лучший способ понять что-то самому — объяснить это другому.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.07.2006 (Чт) 10:32

Nikonik
Лечится так:
Код: Выделить всё

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 Const GWL_STYLE = (-16)
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Sub Form_Load()
SetWindowLong hWnd, GWL_STYLE, ((GetWindowLong(hWnd, GWL_STYLE) Or &HC50000) Xor &HC50000)
SetWindowRgn hWnd, CreateRectRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY), True

End Sub
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 13.07.2006 (Чт) 13:54

А ещё есть TrackPopupMenu. :)
Если всё делать своими ручками, они скоро отвалятся !

Nikonik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 12.07.2006 (Ср) 10:55

Сообщение Nikonik » 19.07.2006 (Ср) 11:11

keks-n, спасибо, довольно интересное решение заголовок формы просто отрезать ;)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 19.07.2006 (Ср) 11:20

Он насамом деле не отрезается... А изменяется стиль окна, который отвечает за его наличие. SetWindowRgn-служебная вещь... Нужна, чтобы данное изменение вступило в силу... Ты же его в событии Resize не вызываешь.
Изображение


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 99

    TopList