XTPKeyboardManager.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
- // XTPKeyboardManager.h : interface for the CXTPKeyboardManager class.
- //
- // This file is a part of the XTREME COMMANDBARS MFC class library.
- // (c)1998-2008 Codejock Software, All Rights Reserved.
- //
- // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
- // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
- // CONSENT OF CODEJOCK SOFTWARE.
- //
- // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
- // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
- // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
- // SINGLE COMPUTER.
- //
- // CONTACT INFORMATION:
- // support@codejock.com
- // http://www.codejock.com
- //
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_CODEJOCK_PRIVATE
- #if !defined(__XTPKEYBOARDMANAGER_H__)
- #define __XTPKEYBOARDMANAGER_H__
- //}}AFX_CODEJOCK_PRIVATE
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- //===========================================================================
- // Summary:
- // CXTPKeyboardManager class used to handle keyboard hooks
- //===========================================================================
- class _XTP_EXT_CLASS CXTPKeyboardManager : public CNoTrackObject
- {
- public:
- //-----------------------------------------------------------------------
- // Summary:
- // Constructs a CXTPKeyboardManager object.
- //-----------------------------------------------------------------------
- CXTPKeyboardManager();
- //-------------------------------------------------------------------------
- // Summary:
- // Destroys a CXTPKeyboardManager object, handles clean up and deallocation
- //-------------------------------------------------------------------------
- ~CXTPKeyboardManager();
- public:
- //-----------------------------------------------------------------------
- // Summary:
- // This method is called to start/end keyboard hooks
- // Parameters:
- // bSetup - TRUE to start keyboard hooks
- // See Also: SetupCallWndProcHook
- //-----------------------------------------------------------------------
- void SetupKeyboardHook(BOOL bSetup = TRUE);
- //-----------------------------------------------------------------------
- // Summary:
- // This method is called to start/end message hooks
- // Parameters:
- // bSetup - TRUE to start message hooks
- // See Also: SetupKeyboardHook
- //-----------------------------------------------------------------------
- void SetupCallWndProcHook(BOOL bSetup = TRUE);
- //-----------------------------------------------------------------------
- // Summary:
- // Call this method to hook keyboard notifications
- // Parameters:
- // pHook - CXTPHookManagerHookAble object that will receive keyboard notifications
- // See Also: UnhookKeyboard
- //-----------------------------------------------------------------------
- void HookKeyboard(CXTPHookManagerHookAble* pHook);
- //-----------------------------------------------------------------------
- // Summary:
- // Call this method to unhook keyboard notifications
- // Parameters:
- // pHook - CXTPHookManagerHookAble object to remove
- // See Also: HookKeyboard
- //-----------------------------------------------------------------------
- void UnhookKeyboard(CXTPHookManagerHookAble* pHook);
- //-----------------------------------------------------------------------
- // Summary:
- // Determines if keyboard is hooked
- // Returns:
- // TRUE if keyboard is hooked
- //-----------------------------------------------------------------------
- BOOL IsKeyboardHooked() { return m_lstKeyboardHooks.GetCount() > 0; }
- //-----------------------------------------------------------------------
- // Summary:
- // This method is called to process keyboard hook
- // Parameters:
- // nMessage - Message to process
- // wParam - Message specified parameter
- // lParam - Message specified parameter
- // Returns:
- // TRUE if message was processed
- //-----------------------------------------------------------------------
- BOOL ProcessKeyboardHooks(UINT nMessage, WPARAM wParam, LPARAM lParam = 0);
- protected:
- //{{AFX_CODEJOCK_PRIVATE
- static LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
- static LRESULT CALLBACK CallWndProc(int code, WPARAM wParam, LPARAM lParam);
- static LRESULT CALLBACK GetMessageProc(int code, WPARAM wParam, LPARAM lParam);
- //}}AFX_CODEJOCK_PRIVATE
- protected:
- HHOOK m_hHookKeyboard; // Keyboard hook
- HHOOK m_hHookCallWndProc; // Message hook
- HHOOK m_hHookGetMessage; // Message hook
- #ifdef _AFXDLL
- AFX_MODULE_STATE* m_pModuleState; // Module state
- #endif
- static CThreadLocal<CXTPKeyboardManager> _xtpKeyboardThreadState; // Instance of Keyboard hook
- CList<CXTPHookManagerHookAble*, CXTPHookManagerHookAble*> m_lstKeyboardHooks; // List of keyboard hooks
- private:
- friend CXTPKeyboardManager* XTPKeyboardManager();
- friend class CXTPCommandBars;
- };
- AFX_INLINE CXTPKeyboardManager* XTPKeyboardManager() {
- return CXTPKeyboardManager::_xtpKeyboardThreadState.GetData();
- }
- #endif //#if !defined(__XTPKEYBOARDMANAGER_H__)