双击单元格,获得行列索引
void classname::OnNMDblclkListIn(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult = 0;// 获得行、列索引int nItem = pNMItemActivate->iItem;int nSubItem = pNMItemActivate->iSubItem;POSITION pos = m_listIn.GetFirstSelectedItemPosition();while (pos)// 当点击位置是在列表内时,执行循环体// 也可以用 if 判断{
// Add your code...}
}
风格样式
几个常用的风格
m_list.SetExtendedStyle(m_list.GetExtendedStyle()| LVS_EX_FULLROWSELECT /* */| LVS_EX_GRIDLINES /* 网格 */| LVS_EX_DOUBLEBUFFER); /* 虚拟列表双缓存 */
虚拟列表
- 用 OnTimer、 .Invalidate()、 .UpdateWindow() 控制数据刷新频率
- 用 LVS_EX_DOUBLEBUFFER 风格样式控制闪烁
- 用 memDC 也可以控制闪烁
- 用 m_list.SetItemCount() 设置显示行数,而不是 InsertItem
// 显示列表信息
void CDlgPageInput::OnLvnGetdispinfoListIn(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);// TODO: 在此添加控件通知处理程序代码LV_ITEM *pDispItem = &(pDispInfo)->item;*pResult = 0;if ((pDispItem->mask & LVIF_TEXT)){
switch (pDispItem->iSubItem){
case 0:// 示例_stprintf_s(pDispItem->pszText, 128, _T(""), ....); break;break;case 1:// 示例lstrcpy(pDispItem->pszText, ....); break;//......default:break;}}
}