在開發編輯器類軟體時,快捷鍵的支援是提升使用者體驗的關鍵。無論是 Ctrl+S 存檔、Ctrl+Q 退出,還是編輯操作如複製、貼上、復原,透過組合鍵觸發功能能大幅提高操作效率。本文將以 MFC(Microsoft Foundation Classes)為例,說明如何快速建立具備基本編輯與檔案管理功能的編輯器,並詳細介紹如何透過「加速鍵」資源自訂快捷鍵對應。
Visual Studio 提供的 MFC 應用程式精靈能自動生成一個功能完整的編輯器雛形:
這些功能對應的命令 ID(如 ID_EDIT_COPY、ID_FILE_SAVE)及預設快捷鍵已由框架自動配置。
若需新增功能或修改現有快捷鍵,無需撰寫程式碼攔截訊息,只需操作資源編輯器即可:
IDR_MAINFRAME 或類似)。| 欄位 | 說明 |
|---|---|
| ID | 命令識別碼(如 ID_MY_CUSTOM_CMD) |
| Key | 觸發按鍵(字元、功能鍵或虛擬鍵碼) |
| Type | 按鍵類型(ASCII / VIRTKEY) |
| Modifiers | 修飾鍵組合:Control、Shift、Alt 可多選 |
範例:將 Ctrl+Shift+T 綁定至自訂命令 ID_TOOLS_TRANSLATE:
ID_TOOLS_TRANSLATETVIRTKEYControl、Shift儲存資源後,框架會自動在 CMainFrame 載入加速鍵表,並透過 TranslateAccelerator 處理訊息分發,對應的 ON_COMMAND 處理函式即會被呼叫。
若需在執行期依使用者設定動態調整快捷鍵,可採取以下策略:
LoadAccelTable 載入預設表,再以 CreateAcceleratorTable 依設定建立新表並替換 m_hAccelTable。IDR_ACCEL_EN、IDR_ACCEL_ZH),切換語言時重新載入對應資源。PreTranslateMessage 未誤攔截。CMainFrame::PreTranslateMessage 設中斷點,觀察 pMsg->message == WM_KEYDOWN 及 TranslateAccelerator 回傳值。善用 MFC 內建的加速鍵機制,能以極低成本實現專業級的快捷鍵支援。開發者只需專注於業務邏輯(命令處理函式),將鍵盤映射交給資源編輯器管理,既符合關注點分離原則,又便於後期維護與本地化擴展。