怎样在CListCtrl的OnItemChanged事件中得到当前或被修改了的单元格列号?
行号可以这样得到: int iCurSel;
iCurSel = m_pOperList.GetSelectionMark();但怎么得到列号呢?
解决方案 »
- ActiveX控件在网页里加载的问题
- vc++ 模板类的使用????
- 关于控件的文字对齐方式
- 组合框目前已经处于输入状态了,为何它不是具有焦点的控件?我用
- VS2012无法打开VC6.0的工程
- 消息处理函数里怎么不能操纵对话框?
- LRESULT是什么类型?它只能定义函数的类型吗?变量可不可以?
- 应如何取得位图句柄?如何实现类似windows中的注释条?急!
- VC的HOOK问题
- 谁能详细介绍一下二、八、十、十六进制的发展由来及它们之间怎样进行换算?
- 各位,我安装了一个Sysbase数据库的客户端,用VC的ADO怎么连接他的数据库
- 为什么在子线程中调用View中GetCaretPos得到的Point始终为(0,0)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here int nRow=-1;
int nColumn=-1;
nRow=pNMListView->iItem; //行号是正确的
nColumn=pNMListView->iSubItem; //列号为什么不正确 ? *pResult = 0;
}
MFC中的NM_LISTVIEW*结构为:
typedef struct tagNMLISTVIEW {
NMHDR hdr;
int iItem;
int iSubItem;
UINT uNewState;
UINT uOldState;
UINT uChanged;
POINT ptAction;
LPARAM lParam;
} NMLISTVIEW, FAR* LPNMLISTVIEW;
既然系统已检测到某个单元格的值发生变化,获得这个单元格是哪一行哪一列不是很容易吗?
int iActiveIndex = 0 , iColIndex = 0;
LV_HITTESTINFO lvH = {0};
lvH.pt.x = pNMListView->ptAction.x;
lvH.pt.y = pNMListView->ptAction.y;
m_ListEKey.SubItemHitTest(&lvH); //这是CListView对象的检测函数
iActiveIndex = lvH.iItem;//行索引
iColIndex = lvH.iSubItem;//列索引