Celia_D 2019-10-16 18:02 采纳率: 50%
浏览 546
已采纳

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条回答 默认 最新

  • threenewbee 2019-10-16 19:27
    关注
    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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法