CListCtrl在处理NM_CLICK的时候,如何判断Ctrl SHIFT ALT键是否按下

在MFC应用程序中,使用CListCtrl控件处理NM_CLICK通知时,可以通过检查`LPNMITEMACTIVATE`结构的`uKeyFlags`成员来判断Ctrl, Shift, Alt键是否被按下。例如,在`OnNMClickList1`函数中,当`uKeyFlags`等于LVKF_CONTROL时,表示Ctrl键被按下了;等于LVKF_SHIFT时,表示Shift键被按下了;等于LVKF_ALT时,表示Alt键被按下了。" 93306790,8257290,Qt自定义动效进度条与启动图实现,"['Qt', 'GUI开发', 'Python', '软件UI']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百度 NMITEMACTIVATE
在 NM_CLICK  的处理函数中,将 NMHDR 结构强制转换成 NMITEMACTIVATE,这一步MS已经帮助我们完成了,其中,结构体中的 uKeyFlags 就是特殊按键的信息
LVKF_ALT 表示 alt 键被按下
LVKF_CONTROL 表示 ctrl 键被按下

LVKF_SHIFT 表示 shift 键被按下。

具体程序如下:

void CCCCCCCDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE >(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
if(LVKF_CONTROL ==pNMItemActivate->uKeyFlags){
TRACE("%d LVKF_CONTROL\r\n",pNMItemActivate->uKeyFlags);
}
if(LVKF_ALT  ==pNMItemActivate->uKeyFlags){
TRACE("%d LVKF_ALT \r\n",pNMItemActivate->uKeyFlags);
}
if(LVKF_SHIFT  ==pNMItemActivate->uKeyFlags){
TRACE("%d LVKF_SHIFT \r\n",pNMItemActivate->uKeyFlags);
}

*pResult = 0;
}

输出如下:

2 LVKF_CONTROL
4 LVKF_SHIFT 
1 LVKF_ALT 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值