|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||
Обработка нажатий клавиш, как в модальном диалоговом окне16.06.2023, 09:03. Показов 5235. Ответов 26
Метки нет (Все метки)
Здравствуйте! Подскажите, пожалуйста, если нужно создать временное(POPUP) окно и в нём создать элементы управления windows(например, listbox-ы), и сделать так чтобы оно, это окно, обрабатывало сообщения так же, как это делают модальные диалоговые окна, то как это делать?
Если я правильно понял, то нужно в процедуре этого окна отлавливать сообщения WM_KEYDOWN, НАПРИМЕР ТАК: думал, создать массив дескрипторов элементов управления, которые расположены в данном окне, и, если я нажимаю на клавишу TAB, то должен перемещаться фокус с объекта на объект, но это не работает, видимо, я что-то делаю не так. Я правильно мыслю или вообще не в том направлении? Кликните здесь для просмотра всего текста
0
|
||||||
| 16.06.2023, 09:03 | |
|
Ответы с готовыми решениями:
26
Полосы прокрутки в модальном диалоговом окне Обработка формы в модальном окне
|
|
COM‐пропагандист
|
|
| 25.06.2023, 09:17 | |
|
Ничего не понял.
Функция IsDialogMessage делает то что нужно: передаёт фокус по TAB и стрелочкам. Это именно то, что нужно.
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||||||||||
| 26.06.2023, 06:02 [ТС] | |||||||||||
|
Я что-то никак не дождусь ответа, как организовать прокрутку окна, но не просто окна, а окна в котором расположены стандартные элементы управления windows, в данном случае listbox-ы, я так понимаю эта тема никому не интересна...
Я хз что должна прокручивать функция ScrollWindowEx(), но у меня она ничего не прокручивает. Читал про двойную буферизацию, но, видимо, это не мой случай, не могу понять, как организовать эту работу, что я имею ввиду под работой, нужно при прокрутке окна часть объектов скрыть, часть показать. Объекты содержат информацию, хотя может быть не все объекты используются на данный момент, всё что я понял, это то что нужно действовать как-то так. Кликните здесь для просмотра всего текста
Но тогда, как организовать создание новых listbox-ов, если я прокручиваю вниз на одну строку-listbox, допустим на один listbox, один объект должен уйти за верхнюю границу окна, а снизу должен появиться новый элемент, ну или со значением, если до этого он использовался. Сделать копию окна в памяти и что дальше... при скроллинге, нужно обновить окно InvalidateRect, в сообщении WM_PAINT нужно вывести то, что сохранено в памяти в контекст устройства, но всё это очень очень туманно, не могу понять, как это сделать.... Как рисовать в совместимом контексте я понял, не ясно, как делать то, что мне нужно, то что описал выше. Ещё, как вариант, можно имитировать прокрутку так, копированием информации, если она присутствует в listbox-ах в буфер , и в случае скроллинга вверх-вниз что-то достаём из стека, что-то сохраняем в стек. Для примера прокрутка вниз, если в массиве элементов(HWND listbox) в первых позициях есть информация, то скопировать её в буфер, на её место перезаписать информацию их следующего элемента и так в цикле до последнего объекта, который находится на странице. В конце самая последняя строка должна оказаться пустой, если до этого в буфер была сохранена информация, то с вершины стека она копируется в этот объект. но это будет очень медленно, так сказать за неимением лучшего..... Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
COM‐пропагандист
|
|
| 26.06.2023, 08:12 | |
|
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|
| 26.06.2023, 08:39 [ТС] | |
|
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
||||||
| 26.06.2023, 09:39 | ||||||
|
Liss29, если у вас один элемент уходит, а другой приходит, то можно не делать миллион контролов под все элементы. Можно сделать контролы только под видимые элементы и менять в них информацию при смене области видимости.
Я делал у себя скролинг встраиваемых диалоговых окон. Диалоги большие, а захотелось умещать их в ограниченном пространстве. На родительском диалоге создавал окно со скролами и в это окно назначал встраиваемый диалог. В окне со скролами следил за изменением его размеров, положений его скролов и вызывал для него ScrollWindow всей клиентской области. Проект использовал MFC, но оно по синтаксису очень близко к WinAPI, при желании можно разобраться. Ниже простенький класс со скролами, в который встраивались диалоги:
0
|
||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||
| 27.06.2023, 04:05 [ТС] | |||
|
0
|
|||
|
11 / 11 / 11
Регистрация: 28.12.2015
Сообщений: 164
|
||||||||||||
| 09.05.2026, 18:54 | ||||||||||||
поэтому нету возможности передать hwnd окна в функцию IsDialogMessage(). Решение: В главном цикле есть переменная MSG msg. msg.hwnd - любое окно для которого пришло сообщение, в том числе и дочерние окна. Вызываем IsDialogMessage() для любого не дочернего окна:
Для этого я создаю нужное окно с флагом WS_EX_CONTROLPARENT, а в главном цикле проверяю этот флаг.
0
|
||||||||||||
| 09.05.2026, 18:54 | |
|
Отлавливание нажатий клавиш при неактивном(или свернутом) окне
Обработка нажатий клавиш Обработка нажатий клавиш Обработка нажатий клавиш Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|