zoukankan      html  css  js  c++  java
  • 工作线程AfxBeginThread的使用

    工作线程通常用来执行一些后台任务,如:数据计算、后台杀毒等等。因为不需要创建窗口和处理用户消息,编写比较容易,在程序中只要调用AfxBeginThread 函数就可以创建并启动一个工作线程了。

    AfxBeginThread 的原型如下:

    CWinThread *AfxBeginThread( 
        AFX_THREADPROC pfnThreadProc,                           //指向控制函数的地址  
        LPVOID pParam,                                                     //指向传递给控制函数的参数  
        int  nPriority /* = THREAD_PRIORITY_NORMAL */ ,     //指定线程的优先级  
        UINT nStackSize /* = 0 */ ,                                      //指定堆栈大小  
        DWORD dwCreateFlags /* = 0 */ ,                            //创建标识  
        LPSECURITY_ATTRIBUTES lpSecurityAttrs /* = NULL */     //安全属性  
    ) 

    从上面参数可以看到,只有前两个参数是必须的,其余参数都使用默认的话,就可创建了一个具有普通优先级别的线程。

    示例:编写一个应用程序,当在程序窗口按下鼠标左键,启动一个线程,该线程可以在屏幕上显示一个信息框。
    1.新建单文档程序;
    2.在视图类CPP文件添加一个准备作为线程的函数:

    UINT MessageThread(LPVOID pParam) 

        LPTSTR    pMessage = (LPTSTR)pParam; 
        CWnd *pMainWnd = AfxGetMainWnd(); 
        ::MessageBox(pMainWnd->m_hWnd, pMessage, _T("Thread Message" ), MB_OK); 
        return  0 
    } 

    3.在视图类的鼠标左键消息响应函数中创建和启动线程:

    void  CThreadTestView::OnLButtonDown(UINT nFlags, CPoint point) 

        AfxBeginThread(MessageThread, _T("Greetings from your thread!" )); 
        CView::OnLButtonDown(nFlags, point); 
    } 

    程序运行结果:

  • 相关阅读:
    机房收费系统总结
    python手记(45)
    Hbase深入学习(二) 安装hbase
    Java异常机制
    MySQL 分析服务器状态
    人生感悟:人生像吃自助餐
    Android使用蓝牙连接adb调试App
    JQuery DataTables 列自己定义数据类型排序
    Android-自己定义图像资源的使用(1)
    11款开放中文分词引擎大比拼
  • 原文地址:https://www.cnblogs.com/lidabo/p/3489640.html
Copyright © 2011-2022 走看看