Fix: process list architecture column sorting was a no-op
The process list stored the architecture string only in ItemData::Arch, leaving Data[3] (the architecture column) empty. Sorting by the architecture column therefore compared empty strings and did nothing. Populate Data[3] with the architecture value so the sort works. Co-Authored-By: deepseek-v4-pro
This commit is contained in:
@@ -260,8 +260,8 @@ void CSystemDlg::ShowProcessList(void)
|
|||||||
m_ControlList.SetItemText(i, 1, str);
|
m_ControlList.SetItemText(i, 1, str);
|
||||||
m_ControlList.SetItemText(i, 2, szProcessFullPath);
|
m_ControlList.SetItemText(i, 2, szProcessFullPath);
|
||||||
m_ControlList.SetItemText(i, 3, arr[1].empty() ? "N/A" : arr[1].c_str());
|
m_ControlList.SetItemText(i, 3, arr[1].empty() ? "N/A" : arr[1].c_str());
|
||||||
// ItemData 为进程ID
|
// ItemData 为进程ID;Data[3] 需与第 4 列"架构"一致,否则按架构排序拿到空串而无意义
|
||||||
auto data = new ItemData{ *PID, {arr[0].c_str(), str, szProcessFullPath}, arr[1].c_str() };
|
auto data = new ItemData{ *PID, {arr[0].c_str(), str, szProcessFullPath, arr[1].empty() ? "N/A" : arr[1].c_str()}, arr[1].c_str() };
|
||||||
m_ControlList.SetItemData(i, DWORD_PTR(data));
|
m_ControlList.SetItemData(i, DWORD_PTR(data));
|
||||||
|
|
||||||
dwOffset += sizeof(DWORD) + lstrlen(szExeFile) + lstrlen(szProcessFullPath) + 2; //跳过这个数据结构 进入下一个循环
|
dwOffset += sizeof(DWORD) + lstrlen(szExeFile) + lstrlen(szProcessFullPath) + 2; //跳过这个数据结构 进入下一个循环
|
||||||
|
|||||||
Reference in New Issue
Block a user