fangdongheiha
Celia_D
采纳率41.2%
2019-10-16 18:02

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条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前
    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);
    }
    
    点赞 评论 复制链接分享