1 / 1 / 1
Регистрация: 17.09.2013
Сообщений: 130

При нажатии на клавиши Num Lock, Caps Lock, Insert вывести в StatusBar состояние кнопок C++

04.02.2014, 13:06. Показов 6678. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, уважаемые программисты, студенты, школьники, а также все посетители этого замечательного форума. помогите, пожалуйста, написать программу на C++

Задание:
При нажатии на клавиши Num Lock, Caps Lock, Insert вывести в StatusBar состояние кнопок.

заранее огромное спасибо всем за помощь.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2014, 13:06
Ответы с готовыми решениями:

StatusBar, отображать состояние клавиш Caps Lock и Insert
Подскажите, пожалуйста, как сделать так, чтоб в строке состояния было видно нажаты ли клавиши Caps Lock и Insert. А еще было видно...

Вывести на экран в символическом виде состояние NUM LOCK, CAPS LOCK и SCROLL LOCK
Помогите решить задачку на турбо си Выводить на экран в символическом виде состояние NUM LOCK, CAPS LOCK и SCROLL LOCK (вкл. / выкл.),...

Работа с клавиатурой (клавиши num lock, caps lock, scroll lock)
определить состояние статуса клавиш " num lock, caps lock,scroll lock " с отображением и их измением на экране

9
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
04.02.2014, 14:00
ada lavleis, обрататываете событие OnKeyDown.
Коды клавиш
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
04.02.2014, 14:09

Не по теме:

Цитата Сообщение от Kulgar Посмотреть сообщение
обрататываете событие
Иначе будете обрабатывать хлопок.



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for( int i=0; i<3; i++ )
    {
    StatusBar1->Panels->Add();
    StatusBar1->Panels->Items[i]->Width = StatusBar1->Parent->Width/3;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch( (int)Key )
    {
    case 20  : StatusBar1->Panels->Items[0]->Text = "CapsLock";   break;
    case 144 : StatusBar1->Panels->Items[1]->Text = "NumLock";    break;
    case 145 : StatusBar1->Panels->Items[2]->Text = "ScrollLock"; break;
    }
}
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33143 / 21437 / 8221
Регистрация: 22.10.2011
Сообщений: 36,764
Записей в блоге: 9
04.02.2014, 14:25
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Это надо делать не по OnKeyDown, а по OnKeyUp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
    switch (Key)
    {
    case VK_CAPITAL:
        StatusBar1->Panels->Items[0]->Text = (::GetKeyState(VK_CAPITAL)) ? "CapsLock" : "";
        break;
    case VK_NUMLOCK:
        StatusBar1->Panels->Items[1]->Text = (::GetKeyState(VK_NUMLOCK)) ? "NumLock" : "";
        break;
    case VK_SCROLL:
        StatusBar1->Panels->Items[0]->Text = (::GetKeyState(VK_SCROLL)) ? "ScrollLock" : "";
        break;
    }
}
, по OnKeyDown тот самый toggle state не будет изменяться... И не забыть KeyPreview формы перебросить в True.
1
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
04.02.2014, 14:30
Цитата Сообщение от UI Посмотреть сообщение
Это надо делать не по OnKeyDown, а по OnKeyUp
по OnKeyDown тот самый toggle state не будет изменяться...
Мда.. если делать рогатку, то из "тританиумных" стержней, стреляющую "квазикарпускулярными" сгустками энергии...
Котэ, зачОт.
Я бы сказал, что таковая точность здесь не требуется... Но...

В какой книге об этом можно прочитать подробнее?
0
Модератор
 Аватар для D1973
9799 / 6347 / 2446
Регистрация: 21.01.2014
Сообщений: 27,027
Записей в блоге: 3
04.02.2014, 14:38
Цитата Сообщение от UI Посмотреть сообщение
Это надо делать не по OnKeyDown, а по OnKeyUp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
    switch (Key)
    {
    case VK_CAPITAL:
        StatusBar1->Panels->Items[0]->Text = (::GetKeyState(VK_CAPITAL)) ? "CapsLock" : "";
        break;
    case VK_NUMLOCK:
        StatusBar1->Panels->Items[1]->Text = (::GetKeyState(VK_NUMLOCK)) ? "NumLock" : "";
        break;
    case VK_SCROLL:
        StatusBar1->Panels->Items[0]->Text = (::GetKeyState(VK_SCROLL)) ? "ScrollLock" : "";
        break;
    }
}
, по OnKeyDown тот самый toggle state не будет изменяться... И не забыть KeyPreview формы перебросить в True.

В последнем case надо указать VK_INSERT согласно техусловия :-)
И кроме того я поместил проверки GetKeyState в FormActivate, чтобы сразу при запуске видеть состояние клавишь
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
04.02.2014, 14:41
Цитата Сообщение от UI Посмотреть сообщение
тот самый toggle state не будет изменяться
Да. Все верно. Правильно по KeyUp.

Не правильно
А шут с ним.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
String str;
switch( (int)Key )
    {
    case 100-80 : StatusBar1->Panels->Items[0]->Text == "CapsLock" ?
                                                  str = "" :
                                                  str = "CapsLock";
                  StatusBar1->Panels->Items[0]->Text = str;
                  break;
    case 100+44 : StatusBar1->Panels->Items[1]->Text == "NumLock" ?
                                                  str = "" :
                                                  str = "NumLock";
                  StatusBar1->Panels->Items[1]->Text = str;
                  break;
    case 100+45 : StatusBar1->Panels->Items[2]->Text == "ScrollLock" ?
                                                  str = "" :
                                                  str = "ScrollLock";
                  StatusBar1->Panels->Items[2]->Text = str;
                  break;
    }
}


Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение
В последнем case надо указать VK_INSERT согласно техусловия :-)
И кроме того я поместил проверки GetKeyState в FormActivate, чтобы сразу при запуске видеть состояние клавишь
Сейчас Kulgar вас уничтожит. :D

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33143 / 21437 / 8221
Регистрация: 22.10.2011
Сообщений: 36,764
Записей в блоге: 9
04.02.2014, 14:42
Цитата Сообщение от Kulgar Посмотреть сообщение
Я бы сказал, что таковая точность здесь не требуется... Но...
А я бы сказал, что надо задание читать внимательно:
Цитата Сообщение от ada lavleis Посмотреть сообщение
При нажатии на клавиши Num Lock, Caps Lock, Insert вывести в StatusBar состояние кнопок.
Состояние кнопок - это как минимум "нажата - отжата", иначе смысл какой от этого? После первого же нажатия на кнопку ее "состояние" всегда будет "Активна"?
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
04.02.2014, 15:26
UI, это элементарная лабораторная работа.
При запуске проверить состояние, вывести в статус бар и по любому из событий OnKeyPress, OnKeyDown, OnKeyUp менять.
Для учебного задания приведённые Вами нюансы не требуются. А вот в процессе проверки, если бы эти нюансы выплыли (преподаватель хардкорный), то и был бы золотой для студента момент научения. А Вы человека этого лишаете. Медвежья услуга по факту.

Гораздо лучше было бы, если Вы ответили на вопрос:
Цитата Сообщение от Kulgar Посмотреть сообщение
В какой книге об этом можно прочитать подробнее?
0
1 / 1 / 1
Регистрация: 17.09.2013
Сообщений: 130
04.02.2014, 22:51  [ТС]
ВСЕМ спасибо за ответы и советы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2014, 22:51
Помогаю со студенческими работами здесь

Acer aspire 5552G-N974G64Mikk Проблема с Caps Lock, Num Lock, Scroll Lock
Вообщем у меня такая же проблемма https://www.cyberforum.ru/notebooks/thread552722.html Небольшая проблема на ноутбуке, когда...

Клавиатура мигает всеми тремя индикаторами Caps Lock, Scroll Lock и Num Lock и соответственно не работает!
Здравствуйте парни и девушки! Столкнулся с такой проблемой! Имеется клавиатура Genius Ergomedia 700! Так вот. Начал замечать интересную...

Горят лампочки caps lock и num lock, ноутбук не включается
Доброе время суток, форумчане. Такая проблема, утром включаю ноутбук asus n53d, на нем одновременно загораются лампочки caps lock и num...

Узнать включен ли Caps Lock и Num Lock
На форме 2 label. 1 - Caps 2 - Num Если включен Caps или Num, то закрасить их в черный цвет, если выключен, то в серый. Спасибо...

Состояние клавиши Caps Lock
В интернете нашел только платформенно зависимые решения. Пишут что методами Qt это сделать невозможно. Но даты сообщений старые... Может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM - будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .
Инфраструктура как код на C#
stackOverflow 11.05.2025
IaC — это управление и развертывание инфраструктуры через машиночитаемые файлы определений, а не через физическую настройку оборудования или интерактивные инструменты. Представьте: все ваши серверы,. . .
Инъекция зависимостей в ASP.NET Core - Практический подход
UnmanagedCoder 11.05.2025
Инъекция зависимостей (Dependency Injection, DI) — это техника программирования, которая кардинально меняет подход к управлению зависимостями в приложениях. Представьте модульный дом, где каждая. . .
Битва за скорость: может ли Java догнать Rust и C++?
Javaican 11.05.2025
Java, с её мантрой "напиши один раз, запускай где угодно", десятилетиями остаётся в тени своих "быстрых" собратьев, когда речь заходит о сырой вычислительной мощи. Rust и C++ традиционно занимают. . .
Упрощение разработки облачной инфраструктуры с Golang
golander 11.05.2025
Причины популярности Go в облачной инфраструктуре просты и одновременно глубоки. Прежде всего — поразительная конкурентность, реализованная через горутины, которые дешевле традиционных потоков в. . .
Создание конвейеров данных ETL с помощью Pandas
AI_Generated 10.05.2025
Помню свой первый опыт работы с большим датасетом — это была катастрофа из неотформатированных CSV-файлов, странных значений NULL и дубликатов, от которых ехала крыша. Тогда я потратил три дня на. . .
C++ и OpenCV - Гайд по продвинутому компьютерному зрению
bytestream 10.05.2025
Компьютерное зрение — одна из тех технологий, которые буквально меняют мир на наших глазах. Если оглянуться на несколько лет назад, то сложно представить, что алгоритмы смогут не просто распознавать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru