• 工作线程AfxBeginThread的使用


    原文链接地址:http://blog.csdn.net/akof1314/article/details/5761689

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

    AfxBeginThread 的原型如下:

    CWinThread* AfxBeginThread(
       AFX_THREADPROC pfnThreadProc,
       LPVOID pParam,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );
    CWinThread* AfxBeginThread(
       CRuntimeClass* pThreadClass,
       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); 
    }

    程序运行结果:

  • 相关阅读:
    阶乘
    如何利用”七牛云”在UEditor实现图片的上传和浏览
    ueditor保存出现 从客户端(Note="<p>12345</p>")中检测到有潜在危险的 Request.Form 值
    配置进程外的Session
    数据库增加索引
    判断HTML中的checkbox是否被选中
    Oracle 配置文件目录
    Oracle 游标
    Oracle 分区表的索引、分区索引
    Oracle 索引
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/5725126.html
Copyright © 2020-2023  润新知