|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
Как сделать кнопки диалогового окна не активными на время выполнения процесса??06.10.2011, 11:22. Показов 4419. Ответов 19
Метки нет (Все метки)
Уважаемые господа. Помогите пожалуйста новичку. Для управления неким устройством я создал диалоговое окно с набором кнопок с помощью визарда(VS-2008). После ввода необходимых параметров я запускаю работу потока, управляющего устройством и обрабатывающего результаты. Хотелось бы на время работы потока сделать часть кнопок диалогового окна не активным, т.е. "затенить" кнопки и сделать невозможным обращение к ним. Как это сделать из моей программы? И попутно второй вопрос: как сделать так, чтобы при нажатии на кнопку на клавиатуре отображалось нажатие соответствующей кнопки диалогового окна так же, как и при нажатии на нее с помощью мышки?
С уважением, Алексей.
0
|
|
| 06.10.2011, 11:22 | |
|
Ответы с готовыми решениями:
19
Сделать кликабельной кнопку на форме во время выполнения процесса (Process.Start) Как в калькуляторе сделать кнопки не активными, пока оба аргумента не будут записаны? |
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 06.10.2011, 13:09 | |
|
1. На время работы потока делай для кнопок EnableWindow(FALSE), а потом - опять EnableWindow(TRUE).
2. А нажатия клавиш обрабатывай в OnChar или OnKeyDown/OnKeyUp класса диалогового окна. Можно тупо вызывать обработчик нажатия кнопки окна - только не забудь предварительно проверить, не задизейблена ли соответствующая кнопка.
0
|
|
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 06.10.2011, 16:53 [ТС] | |
|
Спасибо за ответ, но не понятно (извини бестолкового): EnableWindow - это для всего диалогового окна или можно сделать не активным один из элементов окна? Вопрос ставился именно так. Если можно, пример использования.
Добавлено через 16 минут Еще раз спасибо, с первым вопросом разобрался. Что касается второго вопроса, то описанные выше обработчики я использовал в своей программе. Для мыши OnLButtonDown и OnLButtonUp, а для управления стрелками клавиатуры OnKeyDown, OnKeyUp и OnGetDlgCode. Вопрос в том, чтобы при нажатии на кнопку клавиатуры обратиться к кнопке в диалоговом окне на экране монитора, что бы отобразить ее нажатие.
0
|
|
|
3 / 3 / 0
Регистрация: 06.10.2011
Сообщений: 35
|
||
| 07.10.2011, 00:05 | ||
|
для этого в функциях клавиш пропишите обращение к диалоговому окну и что бы функция Enabled переходила в состояние true при нажатии на клавиатуре
0
|
||
|
|
||||||
| 07.10.2011, 10:00 | ||||||
|
danila52, нам всего лишь нужно воспользоваться методом EnableWindow. Вот и весь код
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 07.10.2011, 10:30 [ТС] | |
|
Уважаемые коллеги. Спасибо Вам за ответы, но к сожалению Вы не правильно меня понимаете. Когда вы нажимаете мышкой кнопку в диалоговом окне, то кнопка утопает, а после поднимается. Такой же реакции кнопки диалогового окна мне бы хотелось и при нажатии стрелки на клавиатуре, чтобы пользователь видел это изменение. Функция EnableWindow(FALSE/TRUE) делает кнопку не активной(что требовалось в моем первом вопросе и благодаря Вам я с ним уже разобрался).
0
|
|
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 07.10.2011, 15:00 [ТС] | |
|
Нужно, чтобы по нажатию кнопки на клавиатуре (используется функция OnKeyDown) соответствующая кнопка диалогового окна, сделанного в визарде, утапливалась, а при отпускании(OnKeyUp) поднималась. Т.е. происходили те же действия, как и при использовании OnLButtonDown и OnLButtonUp при обработке сообщений мыши.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
||
| 07.10.2011, 22:36 | ||
|
У тебя экранная клавиатура ?? и все реализовано на кнопках СButton ? можно послать кнопке сообшение " ой на мне щелкнули" можно создать класс производный от кнопки
1
|
||
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 09.10.2011, 17:04 [ТС] | |
|
Уважаемый ValeryS. Соответствующая, это та кнопка диалогового окна, нажатие которой мне бы хотелось отобразить при нажатии на кнопку клавиатуры, которая лежит на столе. С чего Вы взяли, что речь идет о виртуальной клавиатуре. Советы типа Вашего (ой на мне щелкнули) не принимаются, поскольку это очевидно. Все методы,обработчики сообщений нажатия кнопки мыши или клавиатуры, описаны в классе, производном от CWnd(хотя от CButton так же все работает). Вопрос остается открытым.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||||||||||||||
| 09.10.2011, 19:17 | |||||||||||||||
|
и прямо таки все методы описаны в CWnd или некоторые переопределены??? и новых в производных классах нет??? посмотри код
Добавлено через 2 минуты BM_CLICK это есть сообщение " ой на мне щелкнули" Добавлено через 3 минуты BM_ переводится буттон мессаге сообщения для кнопки
и где они определены в CWnd ????
0
|
|||||||||||||||
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
||||||
| 10.10.2011, 15:18 [ТС] | ||||||
Что касается Вашего сарказма насчет CWnd, то я имел ввиду, что методы(функции) обработчики сообщений, например OnKeyDown (сообщение WM_KEYDOWN), описаны в классе, производном от CWnd.
0
|
||||||
|
|
||
| 10.10.2011, 15:43 | ||
|
danila52, я тоже вначале ринулся вводить обработчик
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||||||
| 10.10.2011, 20:22 | |||||||
|
wButAuto. это окно моей кнопки m_LeftButton это окно твоей кнопки??? если да то все должно работать если нет куда мы шлем сообщение ??? там же написано перед посылкой сообщения не видел ни разу когда даблклик подменивается на лефтбуттон Добавлено через 5 минут ![]() привести в пример кучу классов где они не переопределены и в самой CWnd это определено как default нет все таки отладчик великая вещь особенно по Ф11
0
|
|||||||
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 10.10.2011, 22:12 [ТС] | |
|
Что означает "окно кнопки"? Может все-таки wButAuto есть переменная( как говорят друзья англичане variable), присвоенная кнопке? В моем случае именно так, переменная типа control.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||
| 10.10.2011, 22:27 | |||
|
переменная это переменная кнопка это окно (она не виновата так поучилось) и посему у друзей англичан(точнее американцев) есть окно и есть класс окна (который к классу С++ не имеет никого отношения) и вообще я устал спорить возьми MSDN прочитай и спорь с ними это они стерляди придумали что сообщение BM_CLICK говорит кнопке что она нажата я даже согласен что MFC ты знаешь лучше меня(тогда зачем вопросы?)
0
|
|||
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
||||||
| 11.10.2011, 12:54 [ТС] | ||||||
|
Спорить Вас никто не заставляет, если знаете как помочь вопрошающему и есть желание ответить, то ответьте без хамства и брюзжания, тем более я написал в самом начале, что в Visual C я новичок и поэтому задаю вопросы, которые могут казаться тривиальными для знатоков. Хотелось бы так же отметить, что в русском языке существуют два местоимения: ты и Вы, и вежливый и воспитанный человек должен знать, какое и в каком случае применять.
Добавлено через 2 часа 25 минут Всем спасибо. Разобрался. Листинг программы выглядит следующим образом:
0
|
||||||
|
|
|
| 11.10.2011, 13:36 | |
|
[OFF]
0
|
|
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 12
|
|
| 11.10.2011, 15:08 [ТС] | |
|
Юра! Нажимаем кнопку на клавиатуре, при этом отображается нажатие кнопки диалогового окна. Что мне и требовалось.
0
|
|
| 11.10.2011, 16:10 | |
|
0
|
|
| 11.10.2011, 16:10 | |
|
Помогаю со студенческими работами здесь
20
Как получить время выполнения процесса в наносекундах? Bitmap с фоновым цветом диалогового окна (как сделать?) Как сделать вычисления внутри диалогового окна, а не по сообщению Как сделать выравнивание по левому краю заголовка диалогового окна? Ошибка во время запуска диалогового окна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|