|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
Menu tracking с помощью клавиатуры11.05.2011, 12:57. Показов 1462. Ответов 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 Скроллинг с помощью клавиатуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|