使用MFC热键

使用热键

两种方法:

(1)

直接重写WM_HOTKEY

头文件中:

public:

  afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2);

 

源文件中:

BEGIN_MESSAGE_MAP(CMyhotKeyDlg, CDialogEx)

ON_WM_HOTKEY()

END_MESSAGE_MAP()

 

BOOL CMyhotKeyDlg::OnInitDialog()

{

  ::RegisterHotKey(m_hWnd,199,MOD_ALT,'U');//注意要大写,注册的热键id为199(自己定义),Alt+U

  //::RegisterHotKey(m_hWnd,200,MOD_CONTROL,'W');热键为ctrl+W,如果为Alt+W 就不成功,应该是系统有了吧

}

 

void CMyhotKeyDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)

{

  // TODO: 在此添加消息处理程序代码和/或调用默认值

  if(nHotKeyId == 199)

  {

     AfxMessageBox(_T("使用了热键"));

     return;

  }

  CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);

}

 

BOOL CMyhotKeyDlg::DestroyWindow()

{

  // TODO: 在此添加专用代码和/或调用基类

  ::UnregisterHotKey(m_hWnd,199);//释放资源

  return CDialogEx::DestroyWindow();

}

 

(2)手动添加热键消息

头文件中:

afx_msg long MyHotKey(WPARAM wParam,LPARAM lParam);

 

源文件中:

BEGIN_MESSAGE_MAP(CMyhotKeyDlg, CDialogEx)

ON_MESSAGE(WM_HOTKEY,MyHotKey)

END_MESSAGE_MAP()

 

HRESULT CMyhotKeyDlg::MyHotKey(WPARAM wParam,LPARAM lParam)

{

  if(wParam == 199)

  {

     AfxMessageBox(_T("使用了热键"));

  }

  return TRUE;

  }

 

BOOL CMyhotKeyDlg::DestroyWindow()

{

  // TODO: 在此添加专用代码和/或调用基类

  ::UnregisterHotKey(m_hWnd,199);//释放资源

  return CDialogEx::DestroyWindow();

}

 

总结:

(1)在初始化函数中,使用RegisterHotKey函数注册热键

(2)自定义热键消息或重写热键消息

(3)热键函数进行热键id判断

(4)使用UnregisterHotKey释放热键资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值