如何在MFC设计器中为复选框添加加速器键?
MFC复选框助记符(加速器键)的实现
MFC设计器没办法直接给复选框添加助记符——你在控件标题里加&没出现下划线是因为复选框的文本标签和控件本身在MFC资源里是分离的,设计器不支持自动将&关联为助记符,必须通过以下两种方式实现:
方法一:利用MFC的ID关联约定
- 在对话框设计器里给复选框搭配一个相邻的静态文本控件,把静态文本的Caption设为带&的内容(比如
&自动保存),这样静态文本会显示带下划线的助记符。 - 修改静态文本的ID为复选框ID减1(比如复选框ID是IDC_CHECK_AUTOSAVE,静态文本就设为IDC_CHECK_AUTOSAVE-1)。
- 运行后按下Alt+对应字母,就能直接触发复选框的选中/取消操作,不需要额外代码。
- 在对话框设计器里给复选框搭配一个相邻的静态文本控件,把静态文本的Caption设为带&的内容(比如
方法二:手动处理键盘消息
如果不想调整控件ID,就在对话框的PreTranslateMessage函数里手动捕获助记符按键:BOOL CYourDialog::PreTranslateMessage(MSG* pMsg) { // 捕获Alt+A的按键(对应&自动保存里的A) if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 'A' && (GetKeyState(VK_MENU) & 0x8000)) { CButton* pCheckBtn = (CButton*)GetDlgItem(IDC_CHECK_AUTOSAVE); if (pCheckBtn) { pCheckBtn->SetCheck(!pCheckBtn->GetCheck()); return TRUE; // 标记消息已处理 } } return CDialogEx::PreTranslateMessage(pMsg); }
内容的提问来源于stack exchange,提问作者ROBERT RICHARDSON
相关产品推荐
相关产品推荐

