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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试