Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
kmdm229
Зарегистрирован: 20.03.2006 Сообщения: 4
|
Добавлено: Пн Мар 20 2006 19:17 Заголовок сообщения: горячие клавиши в приложении |
|
|
Мне нужно, чтоб по горячим клавишам, например "ALT+Q" определенному мной окну передавалось сообщение. Как огранизовать перехват нажатых клавиш в Windows. Среда программирования VC.NET |
|
Вернуться к началу |
|
|
OI
Зарегистрирован: 28.03.2006 Сообщения: 2
|
Добавлено: Ср Мар 29 2006 12:13 Заголовок сообщения: Re: горячие клавиши в приложении |
|
|
kmdm229 писал(а): | Мне нужно, чтоб по горячим клавишам, например "ALT+Q" определенному мной окну передавалось сообщение. Как огранизовать перехват нажатых клавиш в Windows. Среда программирования VC.NET |
А с этим вопросом вы уже тоже справились самостоятельно? Если не добрались, почитайте про WM_HOTKEY, RegisterHotKey и MsgWaitForMultipleObjects. Думаю, это то.
А если уже сделали, то напишите коротко как, если не сложно. |
|
Вернуться к началу |
|
|
kmdm229
Зарегистрирован: 20.03.2006 Сообщения: 4
|
Добавлено: Чт Мар 30 2006 20:46 Заголовок сообщения: Re: горячие клавиши в приложении |
|
|
OI писал(а): | kmdm229 писал(а): | Мне нужно, чтоб по горячим клавишам, например "ALT+Q" определенному мной окну передавалось сообщение. Как огранизовать перехват нажатых клавиш в Windows. Среда программирования VC.NET |
А с этим вопросом вы уже тоже справились самостоятельно? Если не добрались, почитайте про WM_HOTKEY, RegisterHotKey и MsgWaitForMultipleObjects. Думаю, это то.
А если уже сделали, то напишите коротко как, если не сложно. |
Конечно не сложно.
я сделал это так:
class CAltTabDlg : public CDialog{ ... UINT m_nIDHotKey; //Идентификатор горячей клавиши // Generated message map functions //{{AFX_MSG(CAltTabDlg) ... afx_msg LRESULT OnHotKey(WPARAM wp, LPARAM lp); //}}AFX_MSG DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CAltTabDlg, CDialog) //{{AFX_MSG_MAP(CAltTabDlg) ... //Это сообщение ( WM_HOTKEY )посылается когда пользователь нажимает горячие клавиши //зарегистрированные RegisterHotKey ON_MESSAGE(WM_HOTKEY, OnHotKey) ... //}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOL CAltTabDlg::OnInitDialog(){ ... //Регистрируем "Alt + Tab" как свой hot key (Alt + Tab) m_nIDHotKey = GlobalAddAtom("PressingAltTab"); TRACE("m_nIDHotKey = %d\n", m_nIDHotKey); RegisterHotKey(m_hWnd, m_nIDHotKey, MOD_ALT, VK_TAB); ...}LRESULT CAltTabDlg::OnHotKey(WPARAM wp, LPARAM lp){ TRACE(_T("CAltTabDlg::OnHotKey\n")); if ( wp == m_nIDHotKey && !IsWindowVisible()) { ShowWindow(SW_SHOWNORMAL); } return 0;}
только после этого необходимо удалить зарегистрированную клмбинацию
void CAltTabDlg::OnDestroy() { CDialog::OnDestroy(); UnregisterHotKey(m_hWnd, m_nIDHotKey); } |
|
Вернуться к началу |
|
|
|