Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: Igors от Июль 07, 2014, 13:17



Название: Мелочь
Отправлено: Igors от Июль 07, 2014, 13:17
Что-то кладовая совсем плохо пополняется  :)
Код
C++ (Qt)
inline bool CapsOn( void )
{
return (::GetKeyState(VK_CAPITAL) & 0x1);
}
 
Для чего - ну наверное все знают  :)


Название: Re: Мелочь
Отправлено: kambala от Июль 07, 2014, 14:01
как-то на Qt-решение не сильно тянет :D


Название: Re: Мелочь
Отправлено: Bepec от Июль 07, 2014, 14:40
Как я люблю такие решения. Особенно когда нужна вещь, которую почти не используешь.

Критика:
1) Нет описания. Что оно делает?
Опустим мой опыт работы - я гляжу как новичек и не понимаю :) Включает Caps и возвращает успех операции?

2) Боже мой, создал проект, вставил функцию чтобы попытаться скомпилировать и методом тыка понять, что она делает.
Нажимаем компиляция иии...
Цитировать
..\untitled\mainwindow.cpp: In function 'bool CapsOn()':
..\untitled\mainwindow.cpp:8:13: error: '::GetKeyState' has not been declared
     return (::GetKeyState(VK_CAPITAL) & 0x1);
             ^
..\untitled\mainwindow.cpp:8:27: error: 'VK_CAPITAL' was not declared in this scope
     return (::GetKeyState(VK_CAPITAL) & 0x1);
                           ^
..\untitled\mainwindow.cpp:9:1: warning: control reaches end of non-void function [-Wreturn-type]
И ничего не получается... Потому что нету таких функций :)

И тут возникает вопрос - где же готовое решение?
Раз создали тему, потрудитесь описать что за решение, какие #include нужны и на какой ОС оно заработает. Просто из элементарной вежливости.

+1 к бесполезным темам :)

PS вы бы ещё поучили как сову нарисовать :D
PPS очень весело как это решение в поиске находить :D Прям представляю
Цитировать
Надо узнать состояние капслока... Ммм... Поищу ка в поиске "Готовое решение мелочь"


Название: Re: Мелочь
Отправлено: OKTA от Июль 07, 2014, 15:16
http://www.lesyadraw.ru/animals/birds/kak-narisovat-sovu-karandashom-poetapno.html


Название: Re: Мелочь
Отправлено: kuzulis от Июль 07, 2014, 16:32
только вместо 0х01 написать:

Код
C++ (Qt)
#define KEY_SHIFTED 0x8000
#define KEY_TOGGLED 0x0001
 

(ну, или на енумах или константах).

И да, читайте MSDN! Оно всяко лучше чем эппловская документация (буээ). :)



Название: Re: Мелочь
Отправлено: Igors от Июль 07, 2014, 17:19
И да, читайте MSDN!
Сэр, последнюю неделю я только этим и занимаюсь! Просто балдею от MSDN, как все стройно, логично, особенно впечатляет ихний "conceptual" :) И вот пришел к выводу что жизнь на этой платформе невыносима без  ф-ции CapsOn.


Название: Re: Мелочь
Отправлено: Igors от Июль 08, 2014, 10:39
2) Боже мой, создал проект, вставил функцию чтобы попытаться скомпилировать и методом тыка понять, что она делает.
:) Ну что она делает ясно, а вот зачем... Это особенно болезненно в нативняке Вындоуз. Допустим мы хотим отловить месягу чтобы посмотреть как дальше ее обрабатывает Qt (см аттач). Просто поставив точку останова - мы будем туда попадать снова и снова, так и не доберемся до нужного места/контекста. А включить останов потом/после тоже не удается - сработает переключение на отладчик. Поэтому caps (а не др клавиша) - его не надо держать  :)


Название: Re: Мелочь
Отправлено: Bepec от Июль 08, 2014, 10:52
Мда, главная мысль не дошла :D

А хотел я сказать всего лишь - что ваш код неполный. Для того чтобы его использовать нужно:
1) Почитать описание GetKeyState.
2) Найти какой инклуд надо подключить для работоспособности данного шедевра.
3) Скомпилировать таки!
4) Понять, что это работает и будет работать только под винду.
5) К этому моменту человек уже самостоятельно напишет нормальное описание, а не куцые строчки кода без описания.

Но до 5 пункта не дойдёт никто :D Ибо никому нахрен не нужна такая мелочь за такие усилия.

PS мб для вас откровением станет, но есть такая программка Spy. Она позволяет отслеживать всё связанное с окном и сообщениями. А узнав номер сообщения можно поставить точку остановки с условием...


Название: Re: Мелочь
Отправлено: Igors от Июль 08, 2014, 12:37
PS мб для вас откровением станет, но есть такая программка Spy. Она позволяет отслеживать всё связанное с окном и сообщениями. А узнав номер сообщения можно поставить точку остановки с условием...
Откровением не станет, сам недавно ее рекомендовал. Но вряд ли удастся иметь "точно такой же номер сообщения" при след запуске.

2) Найти какой инклуд надо подключить для работоспособности данного шедевра.
Если не знаете где брать инклуды на своей платформе - так я Вам сопли подтирать не нанимался :) Не надо воспринимать все так буквально, типа copy/paste/happy

Мда, главная мысль не дошла Веселый
Точно не дошла, ну что ж поделать, если оно думать не хочет (зато верещит) -  никто и не донесет  :)


Название: Re: Мелочь
Отправлено: Bepec от Июль 08, 2014, 13:45
Последняя попытка воззвать к логике - раздел "Кладовая готовых решений", а не "Кладовая решений, которых ещё надо заставить работать".
:)


Название: Re: Мелочь
Отправлено: navrocky от Июль 08, 2014, 14:39
Просто поставив точку останова - мы будем туда попадать снова и снова, так и не доберемся до нужного места/контекста. А включить останов потом/после тоже не удается - сработает переключение на отладчик. Поэтому caps (а не др клавиша) - его не надо держать  :)

Гениально! Я бы не додумался  :)

Видимо с этого и надо было пост начинать.


Название: Re: Мелочь
Отправлено: lit-uriy от Июль 11, 2014, 01:07
>>Видимо с этого и надо было пост начинать.
А он не может, так мимо пробегал, плюнул чего-то и был таков


Название: Re: Мелочь
Отправлено: Vlad_QtCr от Май 21, 2018, 13:39
Форум сообщил, что тема устарела, но я посчитал необходимым оставить сообщение как реальный новичок в Qt. Bepec прав, кладовая должна иметь ГОТОВЫЕ решения, а какая-нибудь фишка размещается в разделе типа ПОЛЕЗНОСТИ. Я догадываюсь, что GetKeyState это проверка состояния нажатой "капс", а (VK_CAPITAL) & 0x1) подтверждает догадку. Единица, это скорее всего состояние - включен. Двоеточие перед "::GetKeyState" не понять, но не в этом суть.
Автор должен опубликовать полный пример. Версию Qt, список используемых файлов. Где применяется и почему. Не обязательно для новичков, просто так принято (люди с "высшим" в курсе, неполную работу просто не примут... без блата конечно)))). Вторая загадочная позиция "сопли вытирать не буду" тоже малопонятна. Я так могу выйти на улицу и вдруг сказать "значит счас пописаю здесь, ок?", "Не нравится отвернитесь, или идите мимо". Все-таки это безответственно, может быть школоло?
Я даже не тестировал фрагмент, опасаясь взрыва мозга от предварительных настроек. Пожалуй лучшим было бы решение, когда форумчане за автора "разжевали" бы этот фрагмент, но понятно, что работа эта лишняя (в некоторых постах намеки). Жаль, что форум пополняется такими тредами.