非框架窗口键盘加速键的使用

      在设计应用程序菜单时,可以选择使用键盘加速键给任意或者全部菜单项分配快捷键,加速键也会引发WM_COMMAND消息。

第一步,是要创建一个加速键表(特殊的资源)。具体方法是,在资源列表视图里面,添加加速资源,然后根据所需要的条件给按键绑定相应的值,绑定完按键,记得回车,又生成下一个加速资源,继续绑定下一个需要的按键或者菜单项。


第二步,由于非框架窗口缺少CFrameWnd中对加速键的支持,所以要在派生类中添加一个HACCEL的数据成员:

HACCEL m_hAccel;

第三步,在初始化函数中,调用api函数::LoaderAccelerator加载加速键表。将 ::LoaderAccelerator返回的句柄复制到m_hAccel:

m_hAccel= ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
第四步,在窗口类中重载PreTranslateMessage。
 
BOOL CDlgCalcDlg::PreTranslateMessage(MSG* pMsg) 
{
    if (m_hAccel != NULL)
        if (::TranslateAccelerator (m_hWnd, m_hAccel, pMsg))
            return TRUE;
    
    return CDialog::PreTranslateMessage (pMsg);
}

第五步,创建WM_COMMAND消息的处理函数
void  function();
第六步,添加消息响应
ON_COMMAND(xxxBUTTON,fucntion);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值