MFC edit control控件循环显示问题

各位大佬麻烦帮忙看一下,我想实现枚举进程的功能,一开始使用list box控件但是无法实现换行。。。所以改用edit control,运行后发现只显示最后一个进程,不能循环显示
控件代码如下:

void Cprocessor1Dlg::OnBnClickedEnumProcess()
{
    // TODO: 在此添加控件通知处理程序代码
    CString str;
    PROCESSENTRY32 pe;
    //设置结构体pe的大小
    pe.dwSize = sizeof(pe);
    //获取系统内进程的快照
    HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if (hProcessSnap == INVALID_HANDLE_VALUE) {
        this->MessageBox("CreateToolhelp32Snapshot error.\n");
        //return -1;
    }
    //遍历进程快照,显示每个进程的信息
    BOOL bMore = ::Process32First(hProcessSnap,&pe);
    while (bMore)  {
        UpdateData(TRUE);
        str.Format("Process Name:%s\r\nPID:%u\r\nNumber of Thread:%u ",pe.szExeFile,pe.th32ProcessID,pe.cntThreads);
        //str.Format("Process Name:%s\n",pe.szExeFile);
        //str.Format("PID:%u\n",pe.th32ProcessID);
        //str.Format("Number of Thread:%u\n",pe.cntThreads);
        //str.Format("==========================\n\n");
        bMore = ::Process32Next(hProcessSnap,&pe);
        m_enum1.SetWindowTextA(str);
        UpdateData(FALSE);
    }
    //释放snapshot对象
    ::CloseHandle(hProcessSnap);
}

图片说明

1个回答

void Cprocessor1Dlg::OnBnClickedEnumProcess()
{
    // TODO: 在此添加控件通知处理程序代码
    CString str1 = "", str;
    PROCESSENTRY32 pe;
    //设置结构体pe的大小
    pe.dwSize = sizeof(pe);
    //获取系统内进程的快照
    HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if (hProcessSnap == INVALID_HANDLE_VALUE) {
        this->MessageBox("CreateToolhelp32Snapshot error.\n");
        //return -1;
    }
    //遍历进程快照,显示每个进程的信息
    BOOL bMore = ::Process32First(hProcessSnap,&pe);
    while (bMore)  {
        UpdateData(TRUE);
        str1 = str1 + str.Format("Process Name:%s\r\nPID:%u\r\nNumber of Thread:%u ",pe.szExeFile,pe.th32ProcessID,pe.cntThreads);
        //str.Format("Process Name:%s\n",pe.szExeFile);
        //str.Format("PID:%u\n",pe.th32ProcessID);
        //str.Format("Number of Thread:%u\n",pe.cntThreads);
        //str.Format("==========================\n\n");
        bMore = ::Process32Next(hProcessSnap,&pe);
        m_enum1.SetWindowTextA(str1);
        UpdateData(FALSE);
    }
    //释放snapshot对象
    ::CloseHandle(hProcessSnap);
}
fangdongheiha
Lafayette* 回复贵阳老马马善福专业维修游泳池堵漏防水工程: !成了!谢谢您!之前几个问题也是您帮忙解决的,太感谢了!
3 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Lafayette*: 不好意思,写错了,是str.Format("Process Name:%s\r\nPID:%u\r\nNumber of Thread:%u ",pe.szExeFile,pe.th32ProcessID,pe.cntThreads);str1 = str1 + str;
3 个月之前 回复
fangdongheiha
Lafayette* 您好!请问str1=str1+str.Format() 报错: 3 IntelliSense: 没有与这些操作数匹配的 "+" 运算符 209
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问