2008/04/04

프로그램에 시스템 Hotkey 붙이기

프로그램에 시스템 Hotkey를 연결하여 언제 어디서나 프로그램을 호출하거나 특정 기능을 동작 시킬 수 있다.

Hotkey를 사용하기 위한 API 함수이다.

ATOM GlobalAddAtom(
LPCTSTR lpString
);


BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);

BOOL UnregisterHotKey(
HWND hWnd,
int id
);



시스템에 유일한 아이디를 만들고 핫키를 할당하면 된다.

///////////////////////////////////////////////////////////////
// Header

// 시스템 Hotkey ID
ATOM atm;

// WM_HOTKEY message 핸들러 함수
afx_msg LRESULT OnHotkey(WPARAM wparam, LPARAM lparam);

// 핸들러 함수 매핑
BEGIN_MESSAGE_MAP
ON_MESSAGE(WM_HOTKEY, OnHotkey)


///////////////////////////////////////////////////////////////
// Source

::OnInitDialog()
// 시스템에 유일한 ID 생성
atm = GlobalAddAtom( _T("MyHotkey") );

// 시스템 Hotkey 등록
RegisterHotKey( this->m_hWnd, atm, MOD_WIN, VK_SPACE );

::OnClose()
// 시스템 Hotkey 해제
UnregisterHotKey( this->m_hWnd, atm );

// Hotkey 핸들러 함수
LRESULT CGlobalHKeyDlg::OnHotkey(WPARAM wparam, LPARAM lparam)
{
AfxMessageBox( _T("Global Hotkey") );

return 0;
}



RegisterHotkey 사용 방법

BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);

HWND hWnd
핫키를 할당하고자 하는 윈도우 핸들

int id
핫키 아이디

UINT fsModifiers
핫키에 사용될 조합키
MOD_ALT ALT key
MOD_CONTROL CTRL key
MOD_SHIFT SHIFT key
MOD_WIN WINDOW key

UINT vk
핫키



Original Post : http://neodreamer-dev.tistory.com/88

No comments :

Post a Comment