vc++_MFC多线程_线程间通信_主线程与子线程实例,实现控件更新

https://blog.csdn.net/txwtech/article/details/115696293

按钮触发事件,启动线程:

复制代码
pThread=new CWinThread();
    pThread->m_bAutoDelete=false;
    // m_pMainDlg = ::AfxGetMainWnd();


    pThread=AfxBeginThread(ThreadProc, this);
    if(pThread==NULL)
    {
        //MessageBox(L"启动失败,自动关闭");
        //return FALSE;
    }
    b_ThreadRunning=TRUE;
复制代码

 

复制代码
void CInfoBridgeDlg::CheckRequestInfo()
{
    int cnt=0;

    cnt=m_ListCtrl_Entity.GetItemCount();             
    CString show_content=L"有请求,请处理";
    CString no_show_content=L"无请求";
    if(cnt>0)
    {
        if(timer_has_entity_id_count%2==1)
        {
            m_bSendMessage.Attach(IDC_BUTTON_SendMessage, this, RED, WHITE, DKGRAY);    
            Invalidate();
            SetDlgItemText(IDC_STATIC_entity_id_notification,show_content);
            FlashWindow(TRUE);
        }
        else
        {
            m_bSendMessage.Attach(IDC_BUTTON_SendMessage, this, BLUE, WHITE, DKGRAY);
            Invalidate();
        }


        timer_has_entity_id_count++;


    }
    else
    {
        timer_has_entity_id_count=0;
        m_bSendMessage.Attach(IDC_BUTTON_SendMessage, this, BLUE, WHITE, DKGRAY);
        Invalidate();
        SetDlgItemText(IDC_STATIC_entity_id_notification,no_show_content);
        FlashWindow(FALSE);
    }
    Sleep(1000);
}

bool b_ThreadRunning=TRUE;

// CInfoBridgeDlg message handlers
 static unsigned int ThreadProc(LPVOID pParam)
{
   while(b_ThreadRunning)
   {
       ((CInfoBridgeDlg*)pParam)->CheckRequestInfo();
       Sleep(1000);
   }
   return 0;
}
复制代码

 

posted @   txwtech  阅读(399)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示