社区
界面
帖子详情
对话框如何响应按键消息?我想用来做按钮快捷键(在线等)
luchang
2005-07-28 04:48:10
按钮可以定义快捷键,但是只有在按钮获得焦点时才有效
我希望无论什么时候都能响应按键消息
可是我用SPY发现对话框对按键消息不响应
问对话框能响应按键消息吗?如何实现?
...全文
506
6
打赏
收藏
对话框如何响应按键消息?我想用来做按钮快捷键(在线等)
按钮可以定义快捷键,但是只有在按钮获得焦点时才有效 我希望无论什么时候都能响应按键消息 可是我用SPY发现对话框对按键消息不响应 问对话框能响应按键消息吗?如何实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lianglp
2005-07-28
打赏
举报
回复
建议注册系统热键来实现。这样太快了。
caocheng8230
2005-07-28
打赏
举报
回复
我的做法是在preTranslateMessage()中去拦截消息然后组合消息,然后再处理
goodboyws
2005-07-28
打赏
举报
回复
用Accelerator,很佩服楼上,好详细啊
Kudeet
2005-07-28
打赏
举报
回复
方法一:
http://support.microsoft.com/?kbid=222829
1 插入一个新的Accelerator到资源里,把加速键和对应的响应控件(如一个按钮)关联
2 在对话框头文件中声明:
HACCEL m_hAccel;
3 在对话框的构造函数里初始化m_hAccel
m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
4 然后重载对话框的PreTranslateMessage函数,在
BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg)
{
if (m_hAccelTable)
{
if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg))
{
return(TRUE);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
方法二:
1 声明热键消息处理函数原型
在.h中消息映射声明处(AFX_mSG字样之后)加入如下语句:
LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
2. 消息与相应处理函数相关联
在.Cpp中加入消息映射宏,使消息与相应处理函数发生关系,
ON_MESSAGE(WM_HOTKEY,OnHotKey);
3. 为方便以后的操作
预先在类中创建一个响应WM_CREATE和WM_DESTROY消息的函数
OnCreate()与OnDestroy()的框架
4.向系统登记热键
在OnCreate()函数中加入如下代码以向系统登记热键,本例子的热键设为
Ctrl+Shift+A.
RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,'A');
RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,'a');
5.处理热键
在消息处理函数OnHotKey()中对热键进行处理,并可加入用户希望运行的程序代码
LRESULT C****::OnHotKey(WPARAM wParam,LPARAM lParam)
if(wParam==1001||wParam==1002)
CWnd::SetForegroundWindow();//使得被激活窗口出现在前景
MessageBox("Hello!");
//用户可在此添加代码
return 0;
6.程序运行完毕后解除热键
在OnDestroy()中通过UnRegisterHotKey()解除热键登记,释放系统资源.
UnRegisterHotKey(m_hWnd,1001);
UnRegisterHotKey(m_hWnd,1002);
7.编译并运行程序
wuprograme
2005-07-28
打赏
举报
回复
在对话框中响应键盘消息只有直接在pretranslatemessage()中直接调用onkeydown()或onchar();
luchang
2005-07-28
打赏
举报
回复
还有,按钮定义的快捷键如果是数字的话,它不能区分 shift+num,也就是说我按下8和*结果都一样
该如何才能区分出shift+num??
MFC中DIALOG(
对话框
)程序
响应
加速键(
快捷键
)
本文介绍如何在MFC的
对话框
程序中添加和
响应
快捷键
。通过创建资源、设置加速键、添加变量和重写PreTranslateMessage函数,实现了Ctrl+O和
按键
A触发“打开”
按钮
的效果。
对话框
中使用加速键的步骤包括添加Accelerator资源、初始化HACCEL变量和处理PreTranslateMessage
消息
。
c语言
对话框
的快捷添加
按钮
,MFC中基于
对话框
程序
快捷键
的实现
本文介绍了在MFC基于
对话框
的程序中如何实现
快捷键
功能。提供了两种方法:一是直接在PreTranslateMessage函数中检测
按键
消息
;二是通过加载
快捷键
资源并映射
消息
。对比了两种方法的适用场景,并给出了具体代码示例。
MFC中基于
对话框
程序
快捷键
的实现
本文介绍了在FC中基于SDI和MDI的程序如何利用预设的
快捷键
资源实现
快捷键
功能,以及基于
对话框
的程序如何通过PreTranslateMessage函数和加载
快捷键
资源来实现
快捷键
。详细解释了两种方法的实现过程和优缺点。
MFC键盘
响应
事件、不
响应
怎么办、亲测解决、字母和数字键的键码值
本文详细介绍了如何在MFC
对话框
中
响应
键盘事件,包括通过
对话框
属性生成
响应
函数,自定义
按键
映射执行特定操作,以及重写PreTranslateMessage函数确保事件正确
响应
。适用于需要在MFC应用中实现
快捷键
功能的开发者。
在MFC
对话框
程序中使用加速键
本文介绍如何在
对话框
中添加
按钮
并设置ID,进而为
按钮
配置
消息
响应
事件,实现通过按指定
快捷键
触发操作的效果。通过加载加速键资源、处理
按键
消息
和调用TranslateAccelerator函数,使得用户可以通过
快捷键
执行与点击
按钮
相同的操作。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章