如何屏蔽基于对话框模式的系统快捷键

SuperBC 2003-05-06 11:44:03
我想在基于对话框模式程序中的F1键
应该怎样处理?

我是这样做的,不知道错在那里!
在对话框中增加一成员变量:
HACCEL m_hAccel
在OnInitDialog()函数中将快捷键加载:
m_hAccel = LoadAccelerators(AfxGetInstanceHandle( ),
MAKEINTRESOURCE(IDR_ACCELERATOR));
在PreTranslateMessage(MSG* pMsg)中处理快捷键的消息:
if (m_hAccel != NULL)
TranslateAccelerator(this->m_hWnd, m_hAccel, pMsg);
对话框关闭时删除加载的快捷键:
if (m_hAccel != NULL)
DestroyAcceleratorTable(m_hAccel);
其中IDR_ACCELERATOR是我自制的快捷键列表
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperBC 2003-05-06
  • 打赏
  • 举报
回复
我在PreTranslateMessage得函数中也作了屏蔽
if(pMsg->wParam == VK_F1) { MessageBox("Your press key F1","",MB_OK|MB_ICONINFORMATION);
return true;
}
可是还在找系统的帮助文件!
SuperBC 2003-05-06
  • 打赏
  • 举报
回复
谢谢两位!
问题已经在你们的帮助下解决了,受分吧!
tryber 2003-05-06
  • 打赏
  • 举报
回复
TranslateAccelerator是把按键转化为菜单命令(WM_COMMAND),你的对话框有吧menu吗?快捷键一般用有文档窗口中.在没有装keyboard hook情况下,对任何程序按F1都会调帮助文件,CWinApp里有好几个数据和函数是和帮助相关的,到那找出答案吧.
xupdlwith 2003-05-06
  • 打赏
  • 举报
回复
我用的日文版,但是你应该能看懂吧!呵呵!
xupdlwith 2003-05-06
  • 打赏
  • 举报
回复
SuperBC(四处漂泊) 的方法可以的,但是不能完全屏蔽f1的帮助功能,你需要找到你的对话框的主cpp文件,然后找到里面ON_COMMAND(ID_HELP, CWinApp::OnHelp)的这一行,把它屏蔽,如下
BEGIN_MESSAGE_MAP(CTFDSApp, CWinApp)
//{{AFX_MSG_MAP(CTFDSApp)
// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
// この位置に生成されるコードを編集しないでください。
//}}AFX_MSG
//ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
然后再用楼上的方法去转义就一定可以!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧