CEvent事件跟线程的使用

建立一个基于对话框的MFC工程,窗体上房一个按钮,创建一个CButton对象,在头文件中加入CEvent事件的头文件#include <afxmt.h> 和线程头文件 #include <process.h>,

在对话框工程头 .h 文件中声明一个线程处理函数(类外声明)。

UINT WINAPI ThreandOne(LPVOID pParam);

 CEvent m_MyEvent(false,true);  //创建一个CEvent手工事件,第一个参数为FALSE,所有要访问资源的线程必须等待,第二个参数为TRUE 表示为手工事件
 HANDLE One;//一个句柄

 int  i = 0;

在Button处理函数中 添加如下代码:

    CString m_str= NULL;
    One = (HANDLE)_beginthreadex(0,0,ThreandOne,0,0,0);
    while (1)
    {
        m_str.Format(_T("%d"),i);
        m_MyButton.SetWindowText(m_str);

   }

线程处理函数代码:

UINT WINAPI ThreandOne(LPVOID pParam)
{

    while (1)
    {
        WaitForSingleObject(One,1000);
         i++;
    }
    return 1;
    

}

运行程序,按钮上的数字会每隔一秒 加 1

猜你喜欢

转载自blog.csdn.net/p312011150/article/details/82254517