Здрасьте. Глянул я на исхдники на сайти, и в Platform SDK глянул по описании RegisterHotKey и сообщений WM_SETHOTKEY.., поиск по форуму выдал темы которые тоже не дали мне понимания, как же все таки работать с горячими клавишами? А нужно мне вот что: У меня есть основное диалоговое окно, надо по нажатию "Ctrl+E" вызвать дочернее диалоговое окно, в котором эта комбинация уже бы не работала. При этом, хотелось бы чтобы горячая клавиша была бы доступно только когда запущено мое приложение. Может ктото опишет, каковы должны быть мои действия?
напрмер в файле *.rc Код (Text): ... MENUACC ACCELERATORS BEGIN 27,IDM_EXIT,VIRTKEY,NOINVERT 79,IDM_OPEN,VIRTKEY,NOINVERT "^A",IDM_PROG END ... в код будут приходить соотв. IDM Только диалоговое окно должно быть совмещено с обычным окном и иметь петлю выборки сообщений, чтоб клавиши работали. А можно через WM_KEYDOWN прикрутить самому.
>WM_KEYDOWN Пробывал у меня глупо получилось. Точнее вообще не попадает в код где обработка этого сообщения. Если сделать RegisterHotKey, то по аварийному завершению проги, я думаю регистрация в системе клавиши останется
Сделал так: В обработке wm_initdialog оконной процы основного окна, регистрирую нужные мне горячие клавиши. Далее в WM_HOTKEY по идешкам их отлавливаю и обрабатываю так: 1. ctrl+d - MessageBox с about 2. ctrl+e - настройки параметра 1 3. ctrl+k - настройки параметра 2 в wm_close я убиваю их регистрацию Что не нравится: нажму ctrl+d появляется about, верно! но если в этот момент нажать на ctrl+e то поверх about появляется окно с настройками параметра 1, жму далее ctrl+k появляется еще окно с настройками параметра 2. Что я бы хотел: чтобы понажатию очередной горячей клавиши ноевозможно было ее обработать, пока работает другая Как это можно решить?
заведи флажок "нажата горячая клавиша". Как нажмешь, если нет флажка-> в проц.->ставишь его. Как выйдешь снимаешь флаг.
Мне вот еще кажется, что поскольку горячие клавиши общесистемные, то диалоги будут вызываться, даже если твое приложение неактивно. К тому же твой MessageBox не будет работать, если запущен SoftICE А чем акселераторы не подходят?
yureckor спасибо, но до этого как обновить эту страничку и увидеть твой совет. Я уже сделал этот самый флажок. vinnie_pooh Я это кой как понял, вчера весь день сдк читал, а ты мне такую сложность предлагаешь! )) спасибо, решил вроде все что мне надо