mfc当listctrl控件有数据更新时是否就运行NM_CLICK消息相应函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc当listctrl控件有数据更新时是否就运行NM_CLICK消息相应函数相关的知识,希望对你有一定的参考价值。

mfc当listctrl控件有数据更新时是不是就运行listctrl控件相应NM_CLICK消息响应函数

一般不,你没点,但不能排除程序没有“点”,有些代码实现是会主动发送的,具体还要看你相关的代码实现追问

什么样的代码会主动发送这样的消息

追答

这个取决于写代码的人啊,
NM_CLICK本质还是可以通过SendMesage发送的的,写代码的只要愿意,完全可以加进去啊
至于有没有必要,那也是她本人去判断了
我说的这个只是一种可能,具体要查代码的

参考技术A NM_CLICK不是单击响应函数么?什么也是数据更新的了。追问

我在listctrl添加了NM_CLICK消息响应函数,调试时当我插数据到数据库里时更新listctrl控件时每次都跳到NM_CLICK消息响应函数,可我并没有点击listctrl控件。

MFC中的列表控件,当选择了多项时,如何对选中的数据进行操作?

我想判断选中的三个数据的户室号是否相同,用for循环应该如何实现?还有GetFirstSelectedItemPostion()函数如何获取它的Index值?

用GetNextSelectedItem函数可以得到所选项的索引,如果用for循环,可以这样写:
假设列表控件对象为m_ListCtrl;
POSITION pos=m_ListCtrl.GetFirstSelectedItemPosition()
for(POSITION posTemp=pos;posTemp!=NULL;)

int ItemIndex=GetNextSelectedItem(posTemp);

如果你选择了4项,则这个循环会进行4次,每一次就可以得到一个选择项的对应的索引,保存到ItemIndex中。
参考技术A 条款九:获取当前所有选中的行(多选)
这个,俺就比较懒了,抄msdn的代码吧,反正很简单
// CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem
(IDC_YOURLISTCONTROL);
ASSERT(pListCtrl != NULL);
POSITION pos =
pList->GetFirstSelectedItemPosition();
if (pos == NULL)
TRACE0("No items were selected!\n");
else

while (pos)

int nItem =
pList->GetNextSelectedItem(pos);
TRACE1("Item %d was
selected!\n", nItem);
// you could do your own
processing on nItem here

追问

你敢不敢不复制粘贴

以上是关于mfc当listctrl控件有数据更新时是否就运行NM_CLICK消息相应函数的主要内容,如果未能解决你的问题,请参考以下文章

ListCtrl控件 实现 :程序控制滚动(mfc的)

listctrl控件怎么用?

mfc如何用txt保存下拉框控件的内容?下拉框如何读入TXT中的内容到属性-数据中?

vc mfc 中的listctrl控件 垂直滚动条置于最底端

在MFC中使用listctrl控件,要修改某行某列的值

MFC_2.6 使用菜单列表和控件