Глюк меню!

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

Глюк меню!

Сообщение DVV » 21.09.2004 (Вт) 19:43

Почему меню не исчезает(исчезает только тогда,когда в нм что-нибудь выберешь) Popup menu
Vadim

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.09.2004 (Вт) 19:45

А когда ещё оно должно исчезать?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 21.09.2004 (Вт) 19:47

При шелчке вне этого меню!
Vadim

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.09.2004 (Вт) 19:49

Исчезает!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 21.09.2004 (Вт) 19:50

А если меню появл.при шелчке по иконке(tray)
Vadim

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.09.2004 (Вт) 20:55

Изображение

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 02.10.2004 (Сб) 19:05

SYMPTOMS
When you display a context menu for a notification icon (see Shell_NotifyIcon), clicking anywhere besides the menu or the window that created the menu (if it is visible) doesn't cause the menu to disappear. When this behavior is corrected, the second time this menu is displayed, it displays and then immediately disappears.
RESOLUTION
To correct the first behavior, you need to make the current window the foreground window before calling TrackPopupMenu or TrackPopupMenuEx.

The second problem is caused by a problem with TrackPopupMenu. It is necessary to force a task switch to the application that called TrackPopupMenu at some time in the near future. This can be accomplished by posting a benign message to the window or thread.

The following code will take care of all of this: SetForegroundWindow(hDlg);

// Display the menu
TrackPopupMenu( hSubMenu,
TPM_RIGHTBUTTON,
pt.x,
pt.y,
0,
hDlg,
NULL);

PostMessage(hDlg, WM_NULL, 0, 0);

А теперь вопрос:КУДА ЭТОТ КОД ВТАВЛЯТЬ!
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.10.2004 (Вс) 19:26

Так кто-нибудь знает ответ на этот вопрос?
Vadim

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.10.2004 (Пн) 12:18

Что непонятного-то?
Перед показом меню устанавливаешь фокус на свою форму, затем показываешь меню и шлешь своему окну WM_NULL.
Lasciate ogni speranza, voi ch'entrate.

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 05.10.2004 (Вт) 22:01

Хорошо,а поподробнее можно!
Буду очень благодарен!
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 06.10.2004 (Ср) 20:10

Напишите пожалуйста код целиком!Мне это надо,надо! 8)
Vadim

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 06.10.2004 (Ср) 20:14

Код: Выделить всё
Me.SetFocus
PopupMenu myMenu
PostMessage Me.Hwnd, WM_NULL, 0, 0


Только ещё нужно объявить PostMessage:
Код: Выделить всё
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 06.10.2004 (Ср) 20:15

Точнее, полный код приблизительно такой:
Код: Выделить всё
Option Explicit
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Sub Form_Load()
Me.SetFocus
PopupMenu myMenu
PostMessage Me.hwnd, WM_NULL, 0, 0
End Sub


Если я всё правильно понял )))

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 06.10.2004 (Ср) 21:26

wm_null-это куда!
У меня ошибка,типа такая переменная не об-на!
Vadim

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 17.10.2004 (Вс) 20:36

А вот кстати вы курсе, что этот приём не работает в том случае, если когда светится менюха (в SysTray у иконки), кликнуть на Панель задач, то меньшка просто уйдет на задний план.
On Fatal Error Resume Next

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.10.2004 (Вс) 20:50

Ага...

Private Const WM_NULL = &H0

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 31.10.2004 (Вс) 22:52

TrackPopupMenu( hSubMenu,
TPM_RIGHTBUTTON,
pt.x,
pt.y,
0,
hDlg,
NULL);
-Это для чего,у меня без неё работает!
Vadim

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 31.10.2004 (Вс) 23:08

В программировании есть один принцип, если что-то работает без чегото (и если это чего-то не проверка на ошибку или фича связанная с безопасностью кода), то это можно выкинуть незадумываясь ;)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 01.11.2004 (Пн) 20:07

Интересно,но всё же для чего это?
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 02.11.2004 (Вт) 20:10

Какую api-функцию и константы надо написать для TrackPopupMenu.
Vadim

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 03.11.2004 (Ср) 1:21

Код: Выделить всё
Declare Function TrackPopupMenu Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Rect) As Long


:wink:
Max!

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.11.2004 (Ср) 22:41

Я пробовал,ругается на неё VB.
Почему не знаю!А именно ему не нравиться lprc As Rect!
Vadim


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot], PetalBot и гости: 3

    TopList  
cron