工程中有很多个对话框,非模态的,希望在任意一个对话框显示的时候,按快捷键能将其中一个指定的对话框A显示出来,按另一个快捷键能将其隐藏起来。请问该如何实现?另外问一下,这里的快捷键是不是要要和常用的快捷键“Alt+F4,Ctrl+C,Ctrl+Shift+Delete”不能重复呢?
第2个问题,我的对话框中有很多个按钮,要求每个按钮都有对应的快捷键,这里的快捷键是不是不能和上面的快捷键重复,并且不能和常用的快捷键“Alt+F4,Ctrl+C,Ctrl+Shift+Delet”重复?
第2个问题,我的对话框中有很多个按钮,要求每个按钮都有对应的快捷键,这里的快捷键是不是不能和上面的快捷键重复,并且不能和常用的快捷键“Alt+F4,Ctrl+C,Ctrl+Shift+Delet”重复?
解决方案 »
- 整型数怎么转换为四个字节?
- BCGControlBar的Ribbon界面
- 通过注册表更改IP为自动获取方式,DhcpNotifyConfigChange怎么传参数?
- 算法问题~
- 关于vs2008的编译问题
- 在http://www.vckbase.com/code/viewcode.asp?id=1319 中视图分割源代码中问题解决(220分)
- Remote Desktop 管理不了我的远程服务器了!!急,急,急!
- CListCtrl::InsertItem()出错,求大神帮助
- error C2440: '=' : cannot convert from 'struct tagBITMAPINFOHEADER *' to 'unsign
- 如何在MFC中调用网页
- 如何编写OLE DB驱动程序。。。。
- 怎样开发在web更新和下载程序的Activex控件?
然后响应WM_HOTKEY消息,
WM_HOTKEY消息响应函数要自己写,
========================
可以将系统热键拦截,变成你自己的,但为什么要拦截?
从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast这个问题如何解决?
可以将系统热键拦截,变成你自己的,但为什么要拦截?
==========================================
有一些系统快捷键自己不知道,那万一程序中用到了不是要出错?
RegisterHotKey(m_hWnd,2688,MOD_SHIFT|MOD_CONTROL,'Q');
LRESULT CTestHotKeyDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{ if(wParam==1688)
{
dlg2->ShowWindow(SW_SHOW);
}
if(wParam==2688)
{
dlg2->ShowWindow(SW_HIDE);
}
return 0;
} UnregisterHotKey(m_hWnd,1688);
UnregisterHotKey(m_hWnd,2688);
参考的资料,这样写出的问题。
如果添加VW_HotKey消息的话,自动生成的消息响应函数是void CTestHotKeyDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
这三个参数怎么用呢?
===============??????????????函数 ? 类?系统?
A. 首先是注册系统热键 RegisterHotKeyBOOL RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk); hWnd : 指定响应该热键的窗体
id : 指定响应该事件的 id
fsModifiers : 指定组合键。这个值可以由 MOD_ALT MOD_CONTROL MOD_SHIFT MOD_WIN 中的一个或几个组成。
vk : 指定热键的虚拟键值。如 'A'例如在本例中注册一个 Ctrl+Alt+Q 的热键。在 CTestHotkeyDlg特定的地方中调用:
RegisterHotKey(this->m_hWnd, 0x1998, MOD_CTRL | MOD_ALT, 'Q');B. 接着响应并实现系统热键消息 WM_HOTKEY添加消息映射 ON_MESSAGE(WM_HOTKEY,OnHotKey) 并实现函数 OnHotKeyLRESULT CHotKeyTestDlg::OnHotKey(WPARAM wParam, LPARAM lParam)
{
MessageBox("You press Ctrl+Alt+Q");
return 0;
}C. 最后,可别忘了在程序结束时撤销注册的热键 UnRegisterHotKeyvoid CHotKeyTestDlg::OnDestroy()
{
CDialog::OnDestroy();
UnregisterHotKey(this->m_hWnd,1000);
}网上拷的源码,不知道行不