mfc的listbox怎么写自定义排序

潕闻 2019-06-18 04:37:54
点击数学排序按数学由大到小排序,数学为double型
...全文
203 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
潕闻 2019-06-19
  • 打赏
  • 举报
回复
引用 5 楼 gouyanfen的回复:
[quote=引用 4 楼 gouyanfen 的回复:] [quote=引用 2 楼 潕闻 的回复:] [quote=引用 1 楼 gouyanfen的回复:][quote=引用 楼主 潕闻 的回复:] 点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了[/quote] 这是个小任务,做完就溜,并不打算深入了解[/quote] 那就直接用内存中的数据重新排个序,清掉原来list中的东西,重新添加一次,就排好了[/quote] 你原来计算的结果是double类型的,弄个double数组记住原来的所有数据,需要排序了,把数组排个序,再清除list,转成字符串Add就行了[/quote] void Management:: add() { Student *stu = new Student; strcpy_s(stu->name,pDia->m_name); stu->id =pDia->ID; stu->xb = (pDia->xb == 0 ? 'M' : 'F'); stu->age = pDia->age; stu->math = pDia->math; stu->c = pDia->c; strcpy_s(stu->address, pDia->address); pDia->index =pDia-> m_list.AddString(pDia->m_name); pDia->m_list.SetItemData(pDia->index, (DWORD_PTR)stu); } void Management::del() { int nCur = pDia->m_list.GetCurSel(); if (nCur != LB_ERR) { Student* stu = (Student*)pDia->m_list.GetItemData(nCur); pDia->m_list.DeleteString(nCur); delete stu; //----- pDia->OnLbnSelchangeList1(); } } void Management::deal() { int nCur = pDia->m_list.GetCurSel(); CWnd* pButton = pDia->GetDlgItem(IDC_BUTTON2); if (nCur != LB_ERR) //-1 { pButton->EnableWindow(TRUE); Student* stu = (Student*)pDia->m_list.GetItemData(nCur); pDia->m_name = stu->name; pDia->ID = stu->id; //CString pDia->xb = (stu->xb == 'M' ? 0 : 1); pDia->address = stu->address; pDia->math = stu->math; pDia->c = stu->c; } else { pButton->EnableWindow(FALSE); } } void Management::save() { CFileDialog dlg(FALSE); if (dlg.DoModal() == IDOK) { CString strFile = dlg.GetPathName(); //FILE* ofstream out(strFile, ios::binary); if (out.is_open()) {//------------- m_lst int n = pDia->m_list.GetCount(); out.write((char*)&n, sizeof(int)); for (int i = 0; i < n; i++) { Student* stu = (Student*)pDia->m_list.GetItemData(i); out.write((char*)stu, sizeof(Student)); } } } } void Management::change() { int nCur = pDia->m_list.GetCurSel(); if (nCur != LB_ERR) { Student* stu = (Student*)pDia->m_list.GetItemData(nCur); pDia->m_list.DeleteString(nCur); strcpy_s(stu->name, pDia->m_name); stu->id = pDia->ID; stu->xb = (pDia->xb == 0 ? 'M' : 'F'); stu->age = pDia->age; stu->math = pDia->math; stu->c = pDia->c; strcpy_s(stu->address, pDia->address); CString s; s = pDia->m_ 我想问问这怎么用数组排序 pDia是对话框的的指针 student是自定义的类
gouyanfen 2019-06-19
  • 打赏
  • 举报
回复
引用 4 楼 gouyanfen 的回复:
[quote=引用 2 楼 潕闻 的回复:] [quote=引用 1 楼 gouyanfen的回复:][quote=引用 楼主 潕闻 的回复:] 点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了[/quote] 这是个小任务,做完就溜,并不打算深入了解[/quote] 那就直接用内存中的数据重新排个序,清掉原来list中的东西,重新添加一次,就排好了[/quote] 你原来计算的结果是double类型的,弄个double数组记住原来的所有数据,需要排序了,把数组排个序,再清除list,转成字符串Add就行了
gouyanfen 2019-06-19
  • 打赏
  • 举报
回复
引用 2 楼 潕闻 的回复:
[quote=引用 1 楼 gouyanfen的回复:][quote=引用 楼主 潕闻 的回复:] 点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了[/quote] 这是个小任务,做完就溜,并不打算深入了解[/quote] 那就直接用内存中的数据重新排个序,清掉原来list中的东西,重新添加一次,就排好了
潕闻 2019-06-19
  • 打赏
  • 举报
回复
引用 1 楼 gouyanfen的回复:
[quote=引用 楼主 潕闻 的回复:] 点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了[/quote] 能给个具体点的例子吗
潕闻 2019-06-19
  • 打赏
  • 举报
回复
引用 1 楼 gouyanfen的回复:
[quote=引用 楼主 潕闻 的回复:] 点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了[/quote] 这是个小任务,做完就溜,并不打算深入了解
gouyanfen 2019-06-18
  • 打赏
  • 举报
回复
引用 楼主 潕闻 的回复:
点击数学排序按数学由大到小排序,数学为double型
初学不建议入MFC坑了,简单的,你排完了,把原来的删了,重新添加一次就行了

24,856

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧