首页 > 代码库 > 使用C++11安全的在线程中控制UI

使用C++11安全的在线程中控制UI

本篇文章由:http://www.sollyu.com/using-the-c11-secure-online-process-control-ui/

说明

首先这里使用的是 Visual Studio 2015, 主要是它支持的C++11更好,其它的我就没有去研究了,想必 Visual Stuido 2010 也差不多吧。

步奏

  1. 创建一个MFC对话框工程

  2. 绘画界面如下图

    技术分享

  3. 添加变量

    技术分享

  4. 添加事件代码

代码

添加头文件#include <thread>, 在按钮事件中添加代码

void CMFCApplication1Dlg::OnBnClickedButtonStart()
{
    m_wndProgress.SetRange( 0, 99 );
    m_wndProgress.SetStep( 1 );
    m_wndProgress.SetPos( 0 );

    /* 创建一个线程 */
    std::thread t( [=] 
    {
        for ( size_t i = 0; i < 100; i++ )
        {
            m_wndProgress.SetPos( i );

            /* 为了更好体验在线程 */
            Sleep( 10 );
        }

        /* UI线程中显示对话框 */
        MessageBox( _T( "完成\n http://www.sollyu.com \n 欢迎光临" ), _T( "提示" ), MB_ICONINFORMATION );
    } );

    /* 将子线程从主线程里分离,子线程执行完成后会自己释放掉资源 */
    t.detach();
}

截图

技术分享

使用C++11安全的在线程中控制UI