|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 921
|
||||||
Нажатие на кнопку- сабклассинг05.08.2021, 21:35. Показов 8759. Ответов 22
Метки нет (Все метки)
Написал простую программу, в окне кнопка, подменил процедуру окна для кнопки, нажимаю на кнопке- ничего не происходит. В чем проблема? В процедуре кнопки так же пробовал обрабатывать WM_LBUTTONDOWN глючит нажатие на левую кнопку мыши в окне программы.
Заранее спасибо.
0
|
||||||
| 05.08.2021, 21:35 | |
|
Ответы с готовыми решениями:
22
Как обработать нажатие на кнопку? Долгое нажатие (зажатие) на созданную кнопку
|
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 191
|
|
| 19.08.2021, 18:34 | |
|
1. "LRESULT CALLBACK ButtonWndProc()" - это условно или и в самом деле в программе так написано? Потому что если и в самом деле, то откуда берутся hWnd и uMsg?
2. Сообщение BM_GETSTATE, отправленное кнопке, придёт в эту же самую ButtonWndProc(). Что она по его приходу сделает: ничего (вернёт 0) или вызовет функцию по умолчанию? 3. А на всякие мышиные события функция по умолчанию в конце вызывается?
0
|
|
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 921
|
||
| 21.08.2021, 12:03 [ТС] | ||
|
tiun, что вы докапываетесь? У меня простой вопрос- у кнопки стиль ownerdraw. Как мне рисовать внешний вид кнопки в ее функции - не обрабатывать в родительском окне сообщение drawitem. Просто рисовать кнопку в ее функции, то есть типа реакция на сообщение WM_DRAWITEM но в функции окна для кнопки. Что тут не ясно?
В WM_PAINT в окне для кнопки я рисовать внешний вид кнопки не могу так как в WM_PAINT нету обработки состояний нажата кнопка или нет. WM_LBUTTONDOWN если ловить для этого у меня он возвращает return 0 - я пробовал не работает. Нет ну есть простой способ перенести обработку сообщения wm_drawitem из функции родительского окна в функцию окна кнопки? Такой простой вопрос. Добавлено через 1 минуту
0
|
||
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 191
|
||
| 22.08.2021, 01:36 | ||
|
Поехали ещё раз по пунктам: 1. Кнопка - это окно, и, как у каждого окна, у неё есть функция окна, которую мы здесь называем ButtonWndProc(). 2. Если пользователь не назначил кнопке свою собственную ButtonWndProc(), то в качестве таковой используется стандартная системная функция. 3. ButtonWndProc() отвечает за обработку огромного количества разных событий, которые происходят в жизни кнопки. Среди этих событий - как события, которые бывают у любых окон, так и события, специфичные именно для кнопок. В том числе эта функция отвечает и за отрисовку кнопки. 4. Самодельная ButtonWndProc() должна либо обрабатывать все возможные события, либо передавать те, которые не обрабатывает, предыдущей функции. (А бывают и такие события, для которых предыдущую функцию нужно вызывать даже несмотря на наличие своей обработки.) 5. Хранение состояния кнопки, отслеживание изменения состояния и отвечание на запросы о состоянии - это тоже обязанность функции кнопки. Поэтому в случае самодельной ButtonWndProc() нужно либо всё это делать внутри неё, либо заботиться о том, чтобы предыдущая функция получала достаточно информации для выполнения этой работы. 6. Рисовать кнопку может понадобиться, если произошло событие одного из трёх типов: кнопку нажали (мышкой, клавиатурой или программно), кнопку отпустили, кнопка стала видимой на экране. 7. Извещения о событиях всех этих трёх типов приходят в ButtonWndProc(). Но есть одно исключение: если кнопка имеет стиль OWNERDRAW, то извещения о событиях первых двух типов приходят только функции её родителя, которая, формально, и должна заниматься отрисовкой. (Первые два типа - это когда у кнопки изменилось состояние. А третий тип - это когда перерисовка нужна, хотя состояние не изменилось, и в этом случае приходит ещё и извещение WM_DRAW самой кнопке.) 8. Фактически рисовать такую кнопку можно как в функции родительского окна, так и в ButtonWndProc(), которую можно вызвать из родительской а) напрямую или б) отправкой сообщения кнопке. 9. Узнать состояние кнопки в ButtonWndProc() можно либо передав ей из родительской функции то, что пришло в DRAWITEMSTRUCT, либо отправив сообщение BM_GETSTATE кнопке, либо передав его напрямую предыдущей функции. Если п.5 выполнен корректно, то ответ придёт правильный. (Ещё есть псевдофункция Button_GetState(), но фактически это та же самая отправка BM_GETSTATE.)
0
|
||
| 22.08.2021, 01:36 | |
|
Программное нажатие на левую и правую кнопку мыши Нажатие на кнопку TCppWebBrowser Нажатие на кнопку увеличивало значение переменной. Нажатие на кнопку только 1 раз в день
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 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), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|