|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
Menu tracking с помощью клавиатуры11.05.2011, 12:57. Показов 1460. Ответов 10
Метки нет (Все метки)
Я поставил иконку в трей.
При правом клике мышкой на него я открываю всплывающее меню. Меню я создаю с помощью API функций CreatePopupMenu и AppendMenu. Открываю с помощью TrackPopupMenuEx. Проблема в том, что при открытии меню выбрать один из пунктов можно только с помощью мыши, клвиатура не работает. Как мне добится того, чтобы можно было выбирать с помощью клвиш вверх/вниз? Возможно это часть общей проблемы: гланое окно спрятано, только иконка в трее видна (так надо). окно открывается когда выбирается соответсвующий пункт в меню. Так вот, когда оно открывается оно не активное, т.е. при первом нажатии мышью на одну из его кнопок ничего не происходит. Лишь при повторном нажатии происходит событие. Есть идеи почему это происходит ?
0
|
|
| 11.05.2011, 12:57 | |
|
Ответы с готовыми решениями:
10
Управление координатами объектов с помощью клавиатуры Построить модель виртуальной клавиатуры с помощью графики Стал невозможным вход в BIOS, Boot Menu и в Безопасный режим с клавиатуры |
|
Comanche
|
|
| 11.05.2011, 13:04 | |
|
Предлагаю сделать 2 вещи:
1. Перед вызовом меню: Call SetForegroundWindow(strNID.hwnd) Call PostMessage(strNID.hwnd, 0&, 0&, 0&) (чтобы при щелчке 'мимо' popup-меню оно автоматически пряталось; здесь strNID - NOTIFYICONDATA-структура) 2. После выбора пункта меню, отвечающего за показ формы: Call SetForegroundWindow(frmMain.hwnd) Не уверен, но м.б. поможет... |
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 12.05.2011, 18:37 [ТС] | |
|
Это решение помогло для меню, теперь и клавиатура работает и меню исчезает при нажатии вне меню.
Спасибо. Однако осталась проблема с открытием формы. Последовательность: Я дважды нажимаю левую кнопку мыши на иконку в трее, или выбираю пункт меню 'открыть'. Открывается моя форма. Когда я веду мышь в окно, она по дороге проходит через границу Taskbar'а и курсор меняется на знак 'вертикального размера' (стрелки вверх и вниз). Этот курсор остается на моей форме. Нажимаю на одну из кнопок на форме - курсор меняется на стандартный (в форме по крайней мере он такой), но нажатия на кнопку не присходит. Нажимаю второй раз на кнопку - есть нажатие. С этого момента форма реагирует как положенно, до следующего раза, когда она спрячется в трей и будет вызвана снова. Как с этим справится ?
0
|
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 12.05.2011, 18:46 [ТС] | |
|
Извините, поправка.
Если я нажимаю на иконку в трее првой мышкой, открывается меню, если я выбираю 'открыть', то форма открывается и реагирует на события нормально. Но, если я нажимаю на иконку левой мышкой дважды (на этом событии форма должна открыться), то тогда и появляется проблема описанная раньше.
0
|
|
|
Comanche
|
|
| 12.05.2011, 20:09 | |
|
Нужен код твоего обработчика мышиных события 'трейной' иконки. Что-то там не так... ну не должен курсор 'застревать' в виде стрелок вверх/вниз!
Как ты создаёшь иконку, кстати? (АПИ или 'левый' контрол) Как ты обрабатываешь события иконки - пишешь в структуру хэндл какого-нить 'ненужного' контрола? Короче - код в студию! )
|
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
||||||
| 12.05.2011, 23:04 [ТС] | ||||||
|
Я реализовал иконку как UserControl находящийся в моем проекте.
Этот контроль я устанавливаю на форму. Код контроля:
0
|
||||||
|
Comanche
|
|
| 13.05.2011, 00:53 | |
|
Was ist das - 'DoCommand MIE_OPEN' ?
|
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 13.05.2011, 00:58 [ТС] | |
|
Просто функция с параметром, обрабатывает определенную комманду (в данном случае делает Me.Show() .
0
|
|
|
Comanche
|
||||||
| 13.05.2011, 13:08 | ||||||
|
А если пошаманить:
|
||||||
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 13.05.2011, 14:36 [ТС] | |
|
Ни одна из этих функуий результата не дала, кроме того PutFocus я не нашел.
Пытался в Form_Activate поместить код Me.ZOrder 1 Me.SetFocus тоже без результатно. Еще одно наблюдение: Если я нахожусь в другой апликации и моя форма не видна (минимизированна или скрыта другими окнами), то иконка не улавливает двойного нажатия. Если я делаю одно нажатие на иконку (фокус переходит с другого окна на Taskbar), то двойное нажатие происходит и форма открывается, но без фокуса. Если я делаю дополнительное нажатие но не на форму а на иконку, то форма активизируется, как будто я нажал на саму форму (это и логично, так как сообщения передаются в форму).
0
|
|
|
Comanche
|
|
| 13.05.2011, 15:06 | |
|
У тебя явно какая-то лажа с размещением (и управлением) иконки в трее. Предлагаю скачать откуда-нибудь заведомо рабочий вариант (хоть в виде класса, хоть в виде CTL/OCX) и поиграться с ним. Если твоя проблема исчезнет - то уже будет проще искать причину. Рабочих вариантов в Сети море - ищи на VBNET.RU, vbAccelerator.Com, Mentalis.org, etc.
|
|
| 13.05.2011, 15:06 | |
|
Помогаю со студенческими работами здесь
11
Affiliate tracking cookie (Tracking cookie) Обьясните пожалуйста как работает селектор .main-menu > li:hover .sub-menu Компонент menu и menu.section вывести картинку Message Tracking Скроллинг с помощью клавиатуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|