shortcutmanager.h
来自「管理项目进度工具的原代码」· C头文件 代码 · 共 77 行
H
77 行
// ShortcutManager.h: interface for the CShortcutManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SHORTCUTMANAGER_H__08D5DF0A_7D5E_4266_A244_59C4B2BD5DC2__INCLUDED_)
#define AFX_SHORTCUTMANAGER_H__08D5DF0A_7D5E_4266_A244_59C4B2BD5DC2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Subclass.h"
#include <afxtempl.h>
// some more 'subtle' invalid modifiers
enum
{
HKCOMB_EXFKEYS = 0x0100, // lets function keys thru
HKCOMB_EDITCTRLS = 0x0200, // prevents clashing shortcuts working when in an edit control
};
const DWORD NO_SHORTCUT = 0xffffffff;
class CShortcutManager : protected CSubclassWnd
{
public:
CShortcutManager(BOOL bAutoSendCmds = TRUE);
virtual ~CShortcutManager();
// hooks AfxGetMainWnd() and only sends commands there
BOOL Initialize(CWnd* pOwner, WORD wInvalidComb = HKCOMB_EDITCTRLS, WORD wFallbackModifiers = 0);
BOOL Release();
UINT ProcessMessage(const MSG* pMsg, DWORD* pShortcut) const; // call this in PreTranslateMessage. returns the cmd ID or 0
// AddShortcut fails if the shortcut is already being used
BOOL AddShortcut(UINT nCmdID, WORD wVirtKeyCode, WORD wModifiers = HOTKEYF_CONTROL);
BOOL AddShortcut(UINT nCmdID, DWORD dwShortcut);
// SetShortcut never fails and will overwrite any existing shortcuts
void SetShortcut(UINT nCmdID, WORD wVirtKeyCode, WORD wModifiers = HOTKEYF_CONTROL);
void SetShortcut(UINT nCmdID, DWORD dwShortcut);
void DeleteShortcut(UINT nCmdID);
void SaveSettings();
DWORD GetShortcut(UINT nCmdID) const;
WORD ValidateModifiers(WORD wModifiers, WORD wVirtKeyCode) const;
static CString GetShortcutText(DWORD dwShortcut);
CString GetShortcutTextByCmd(UINT nCmdID);
int IsEmpty() { return (m_mapID2Shortcut.GetCount() == 0); }
WORD GetInvalidComb() { return m_wInvalidComb; }
int BuildMapping(UINT nMenuID, CStringArray& aMapping, char cDelim = '\t');
protected:
CMap<DWORD, DWORD, UINT, UINT&> m_mapShortcut2ID; // for use in ProcessMsg
CMap<UINT, UINT, DWORD, DWORD&> m_mapID2Shortcut; // for use in PrepareMenuItems
WORD m_wInvalidComb, m_wFallbackModifiers;
BOOL m_bAutoSendCmds;
protected:
virtual LRESULT WindowProc(HWND hRealWnd, UINT msg, WPARAM wp, LPARAM lp);
void PrepareMenuItems(CMenu* pMenu) const;
DWORD GetShortcut(WORD wVirtKeyCode, BOOL bExtended) const;
void LoadSettings();
int BuildMapping(CMenu* pMenu, LPCTSTR szParentName, CStringArray& aMapping, char cDelim);
static CString GetKeyName(WORD wVirtKeyCode, BOOL bExtended = FALSE);
static BOOL IsEditShortcut(DWORD dwShortcut);
};
#endif // !defined(AFX_SHORTCUTMANAGER_H__08D5DF0A_7D5E_4266_A244_59C4B2BD5DC2__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?