几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   vc编程 (http://www.dimcax.com/hust/forumdisplay.php?f=76)
-   -   【转帖】热键控件使用示例 CHotKeyCtrl (http://www.dimcax.com/hust/showthread.php?t=1518)

huangyhg 2007-11-12 11:24 AM

【转帖】热键控件使用示例 CHotKeyCtrl
 
记得以前刚学VC时候不知道怎么使用控件面斑上的 HOTKEY控件, 那时看不懂MSDN英文帮助,在网上找了好久都无该控件的使用帮助,今天整理硬件看到我写的这个代码,看看是这么的简单啊,:)

==================================================================================

BOOL CMyHotKeyDlg::OnInitDialog()
{
CDialog::OnInitDialog();


SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon


//获取 NOTEPAD路径
char path[100];
GetWindowsDirectory(path,100);
strcat(path,"notepad.exe");
m_path.Format("%s",path);
UpdateData(FALSE);

//也可以设置热键规则,以下代码限制只能使用CTRL+ 形式的热键
//m_hotkey.SetRules(HKCOMB_C,HOTKEYF_CONTROL);

//设置默认热键
m_hotkey.SetHotKey(VK_F2,MOD_CONTROL);

return TRUE;
}



//安装热键代码
void CMyHotKeyDlg::OnSetup()
{
//获得热键虚拟码和标志符
WORD virtualcode,modifiers;
m_hotkey.GetHotKey(virtualcode,modifiers);

//设置热键ID=100
if (!RegisterHotKey(this->m_hWnd,100,modifiers,virtualcode))
MessageBox("热键设置错误,可能重复了!");
else
MessageBox("热键设置成功!");

}

void CMyHotKeyDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{ //自定义消息 WM_HOTKEY

if (wParam==100)
{
UpdateData(TRUE); //执行
ShellExecute(this->m_hWnd,"open",m_path,NULL,NULL,SW_SHOW);
}

}



需要字定义消息WM_HOTKEY

BEGIN_MESSAGE_MAP(CMyHotKeyDlg, CDialog)
//{{AFX_MSG_MAP(CMyHotKeyDlg)
............................

ON_MESSAGE(WM_HOTKEY,OnHotKey)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()




// Generated message map functions
//{{AFX_MSG(CMyHotKeyDlg)
................

afx_msg void OnHotKey(WPARAM wParam,LPARAM lParam);
//}}AFX_MSG


很简单一个使用示例,代码演示了怎么设置各种热键以便打开 WINDOWS 记事本程序!


所有的时间均为北京时间。 现在的时间是 06:01 PM.