Celia_D
2019-10-16 18:02
采纳率: 41.2%
浏览 464

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);
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题