任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,大家都知道windows自带的任务管理器在刷新的时候滚动条并不会滚动,而用MFC的CListCtrl实现的任务管理器在刷新的时候滚动条会跳回开始处,那么怎么可以让滚动条不动呢?我百度了好久,还是没有找到答案。不知道大家有没有好的方法,有的话希望可以分享一下,不胜感激。由于苦苦找不到答案,于是我就想了一种新的方法,不知道别人有没有用过哦。。。
方法很简单,就是只刷新更改的项。
具体见源码。
我在论坛的另一篇帖子 VC++实现网络连接查看器源码也可以用类似的方法解决刷新时的问题,有兴趣可以去修改一下。
此次把SkinSharp的36套皮肤一起打包上来。
关于SkinSharp的使用可以百度
大家在RefreshData这个函数中加入如下代码: if (pProcItem->dwProcessID == pe32.th32ProcessID &&
strcmp(pProcItem->szExeFile, pe32.szExeFile) == 0)
{
bIsExist = TRUE;
//反斜杠包含的为新加代码
////////////////////////////////////////////////////////////
strExePath = m_List1.GetItemText(i, 4);
if (strExePath.IsEmpty())
{
strExePath = GetProcessPath(pe32.th32ProcessID);
m_List1.SetItemText(i, 4, strExePath);
SHGetFileInfo(strExePath, 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
m_List1.SetItem(i, 0, LVIF_IMAGE | LVIF_TEXT, pe32.szExeFile, m_ImageList.Add(info.hIcon), 0, 0, 0);
}
/////////////////////////////////////////////////////////////
m_List1.SetItemText(i, 5, "TRUE");