在listctrl中如何通过文本框用关键字将选择出来的数据显示在第一行,求代码
解决方案 »
- 跪求指导关于debug assertion failed in occmgr.cpp与datagrid控件的问题
- 多文档关闭报错
- RegOpenKeyEx 访问存在的键值返回 2
- 请问为何调用CoGetClassObject会出现异常
- 这样关闭一个窗体为什么不行??
- 关于文本处理的问题。
- 遥感图象的处理 一般是用什么做啊
- 救命!HTMLHelp错误HHC4012,谁能帮帮小妹,不过我总共只有200分可发。
- 下载最新版本的cocos2d-x的压缩包。里面没有template\msvc目录
- 有谁知道网管软件是什么,请帮忙解释一下,用什么语言开发最好?
- 自定义对话框如何在销毁后传递数值
- 没心情写程序了,一个做外贸朋友一个月挣2-3万,悲伤
CListCtrl::GetItemText 获取行中的信息CListCtrl::InsertItem 插入信息
1。初始化:
char str[][20]=
{
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四",
"王二麻子",
"张三",
"李四"
}; m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
//
m_List.InsertColumn(0, "序号", LVCFMT_LEFT, 40);
m_List.InsertColumn(1, "名称", LVCFMT_LEFT, 240); char txt[50];
int jj;
for( jj=0;jj<20;jj++)
{
sprintf(txt,"%d",jj);
m_List.InsertItem(jj, txt, NULL);
m_List.SetItemData(jj, jj);
m_List.SetItemText(jj, 1, str[jj]);
}
//
m_List.SetBkColor(RGB(237,250,254));
m_List.SetTextBkColor(RGB(237,250,254));
m_List.SetTextColor(RGB(0,0,255));
2。sort函数:
int CALLBACK ListSortCompare(LPARAM lp1,LPARAM lp2,LPARAM subItem)
{ // lp1,lp2 are the 'ID' original oders. the iItem will changes
int ID1=(int)lp1;
int ID2=(int)lp2;
if(subItem==1)
{
if((strcmp(str[ID1],"张三")==0) && ((strcmp(str[ID2],"张三")==0))) return 0;
else if((strcmp(str[ID1],"张三")==0)) return -1;
else if((strcmp(str[ID2],"张三")==0)) return 1;
else return 0;
}
return 0;
}
3。调用:
void CListCheckDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
//
int sb=pNMListView->iSubItem;
// fast enough
m_List.SortItems(ListSortCompare,sb);}
int CALLBACK ListSortCompare(LPARAM lp1,LPARAM lp2,LPARAM Check)
{ // lp1,lp2 are the 'ID' original oders. the iItem will changes
if((strcmp(str[(int)lp1],(char *)Check)==0) && ((strcmp(str[(int)lp2],(char *)Check)==0))) return 0;
else if((strcmp(str[(int)lp1],(char *)Check)==0)) return -1;
else if((strcmp(str[(int)lp2],(char *)Check)==0)) return 1;
else return 0;
}
////
void CListCheckDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
//
int sb=pNMListView->iSubItem;
// fast enough
if(sb==1)
{
m_List.SortItems(ListSortCompare,(LPARAM)"张三");
}
}