在 mfc 中检索键盘中断结果

Posted

技术标签:

【中文标题】在 mfc 中检索键盘中断结果【英文标题】:Retrieving keyboard interrupt result in mfc 【发布时间】:2015-05-11 07:52:25 【问题描述】:

我有 CListCtrl,我正在尝试处理一些键盘按钮,例如 page-up / page-down 等。我正在使用 OnLvnKeydown 处理程序。 我的问题是在键盘中断后检索项目的索引。例如,如果项目 1 被标记并且我按下 page-down 我想显示现在标记的新项目的详细信息,但提供的所有功能 - GetFirstSelectedItemPosition、GetSelectionMark 等 - 返回发生中断时选择的项目, 表示第 1 项。 有谁知道如何处理这个问题?中断完成后如何检索新标记项的索引?

感谢大家的帮助!

【问题讨论】:

【参考方案1】:

在您的消息映射中添加

ON_NOTIFY(LVN_ITEMCHANGING, YOUR_LIST_CONTROL_ID, &CYourDialog::OnItemchanging)

然后实现 OnItemchangeing

void CYourDialog::OnItemchanging(NMHDR *pNMHDR, LRESULT *pResult)


    // LVN_ITEMCHANGING notification handler
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

    // is the user selecting an item?
    if ((pNMLV->uChanged & LVIF_STATE) && (pNMLV->uNewState & LVNI_SELECTED))
           
        // do what you want with your selected item pNMLV
    
    *pResult = 0;

【讨论】:

以上是关于在 mfc 中检索键盘中断结果的主要内容,如果未能解决你的问题,请参考以下文章

键盘 Enter 键在 MFC 对话框中不起作用?

在 mfc 应用程序中捕获键盘上按下的键

MFC:窗口响应键盘消息,边输入边显示在视图里,怎么响应消息。

在 MFC Web 浏览器控件中禁用键盘快捷键的方法

从应用程序对话框访问的 MFC 自定义键盘 DLL

MFC 全局键盘挂钩