快捷键的问题 我在子对话框的一个按钮上设置caption为“&button1",为什么我使用“Alt+b”快捷键只能是第一次进入该子对话框时有效,而其他时候没效呢?(按了之后没有任何反映)。我想要该按钮设置一个“F9”的快捷键,应该怎么做。一定给分!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载对话框的PreTranslateMessge函数,在函数中如下处理BOOL CTeDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { if (pMsg->wParam == VK_F9) { OnButton1();//调用button1的响应函数 } } return CDialog::PreTranslateMessage(pMsg);} 1。定义全局变量:int id = ::GlobalAddAtom("#123");2。在对应窗体的消息循环中加入ON_MESSAGE(WM_HOTKEY,OnHotKey)3。定义处理函数void CMyDlg::OnHotkey(WPARAM wParam,LPARAM lParam){...}4。在初始化(如OnInitDialog等)中注册快捷键if(!::RegisterHotKey(GetSafeHwnd(),id,NULL,VK_F9)) MessageBox("Hot Key regiser failed!");5。在退了程序之前注销快捷键::UnregisterHotKey(GetSafeHwnd(),id);::GlobalDeleteAtom( id );到此OK! 谢谢vcforever(霓裳羽衣),能解释一下“我在子对话框的一个按钮上设置caption为“&button1",为什么我使用“Alt+b”快捷键只能是第一次进入该子对话框时有效,而其他时候没效呢?(按了之后没有任何反映)。”的情况吗? 我~~~我是新手,为什么vcforever(霓裳羽衣)的办法那么简单,而vollin(林尚义) 的办法我基本看不懂~~两种办法的优缺点是什么? >>>>>为什么我使用“Alt+b”快捷键只能是第一次进入该子对话框时有效,而其他时候没效呢?(按了之后没有任何反映)。按第一次有效是什么意思,弹出对话框之后,再关闭该弹出对话框,再按alt+b就不好使了吗? 不是这意思,而是在该子对话框开着的时候,只能使用一次alt+b,而用鼠标点击则没什么问题。如果关闭此对话框,然后再打开也还是只能使用一次。 你的子对话框打开的时候,主对话框就不是当前窗口了,就不会响应主对话框上的alt+b了! 我定义的是全局的快捷,也就是说不管你的焦点在什么地方,你按F9就会执行相应的函数。而vcforever(霓裳羽衣) 的方法只有在你所操作的窗口被激活的时候才能使用。 to:vcforever(霓裳羽衣)我说的 Alt+b 是在子窗口上的,而不是在主窗口上. to:vcforever(霓裳羽衣)我说的 Alt+b 是在子窗口上的,而不是在主窗口上. to:vcforever(霓裳羽衣) 忽然想起个问题,像您说的办法那样,对每一个按键都进行监视和判断,这种方法会造成程序的缓慢吗?(当然对这么小的一个程序是感觉不出来的 ,但是如果是在快捷键比较多,或是实时性要求比较严格的程序中是否会有很大的副作用呢?) 我试了一下,不会出现你所说的Alt_B只能使用一次的情况,你可以检查一下是不是因为你的处理函数使你的对话框失去了焦点,或者说激活了其它的窗体。 一个窗口被拖动时,它的重绘由谁来完成呢?(拖动时没有wm_paint,窗口过程不管呀) 助 zxdyu2009 同学一把 VC创建文本的问题 刚学习 SDK 有2个问题不懂? 我还需要重写那些函数或问题出在那?(具体问题请看内容) 请问如何在对话框标题栏添加图标? 请教一个error LNK2001的错误 C++问题,有兴趣钻研的看看 怎么可以得到硬盘的序列号,或是网卡,CPU的,求源码 请教各位高手指点迷津 资源管理器对话框 文件操作:读txt or dat文件。急!!!
BOOL CTeDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN) {
if (pMsg->wParam == VK_F9) {
OnButton1();//调用button1的响应函数
}
}
return CDialog::PreTranslateMessage(pMsg);
}
1。定义全局变量:
int id = ::GlobalAddAtom("#123");2。在对应窗体的消息循环中加入
ON_MESSAGE(WM_HOTKEY,OnHotKey)
3。定义处理函数
void CMyDlg::OnHotkey(WPARAM wParam,LPARAM lParam)
{
...
}
4。在初始化(如OnInitDialog等)中注册快捷键
if(!::RegisterHotKey(GetSafeHwnd(),id,NULL,VK_F9))
MessageBox("Hot Key regiser failed!");
5。在退了程序之前注销快捷键
::UnregisterHotKey(GetSafeHwnd(),id);
::GlobalDeleteAtom( id );
到此OK!
能解释一下“我在子对话框的一个按钮上设置caption为“&button1",为什么我使用“Alt+b”快捷键只能是第一次进入该子对话框时有效,而其他时候没效呢?(按了之后没有任何反映)。”的情况吗?
我是新手,
为什么vcforever(霓裳羽衣)的办法那么简单,而vollin(林尚义) 的办法我基本看不懂~~
两种办法的优缺点是什么?
vcforever(霓裳羽衣) 的方法只有在你所操作的窗口被激活的时候才能使用。
我说的 Alt+b 是在子窗口上的,而不是在主窗口上.
我说的 Alt+b 是在子窗口上的,而不是在主窗口上.