MFC中开启线程+再线程里面模拟按键检测

目录

一、创建线程:不使用公司库

一、创建线程:使用公司库

1、再类里面的成员函数里面创建线程

2、线程里面模拟按键检测


一、创建线程:不使用公司库

MFC头文件中编写:分文件类外定义的数据或者创建全局变量

 

public:
	//线程
	BOOL m_bThread;

再MFC的初始化中,编写如下代码

	//_创建线程
	AfxBeginThread(ThreadProc,(LPVOID)this);
	m_bThread=TRUE;

 然后线程是写在所有函数上面的,否则会报错

UINT ThreadProc(LPVOID pa)
{
	CDCLXDlg *pDlg = (CDCLXDlg *)pa;

	if (pDlg == NULL)
	{
		return -1;
	}
	else
	{
		while(pDlg->m_bThread)
		{
			AfxMessageBox(L"xzy");//对话框输出文字
			Sleep(1000);//线程间隔时间
		}
	}

	return 0;
}

一、创建线程:使用公司库

1、再类里面的成员函数里面创建线程

pThread = FastThreadRun(ThreadFunction, this);

2、线程里面模拟按键检测

void ThreadFunction(void *pd)
{
	CFLYDlg *pThis = (CFLYDlg*)pd;

	while (isCanThread)
	{
		int now_qiDong=ZT8408_DIBit(g_cardNO,channel_qiDong);
			TRACE("channel_qiDong=%d\n", now_qiDong);
			if (now_qiDong==openInput&&now_qiDong!=last_qiDong)
			{
				::PostMessage(pThis->m_hWnd, WM_KEYUP, 1 + 48, NULL);
			}
			last_qiDong = now_qiDong;

			int now_tingZhi=ZT8408_DIBit(g_cardNO, channel_tingZhi);
			TRACE("channel_tingZhi=%d\n", now_tingZhi);
			if (now_tingZhi == openInput&&now_tingZhi != last_tingZhi)
			{
				::PostMessage(pThis->m_hWnd, WM_KEYUP, 2 + 48, NULL);
			}
			last_tingZhi = now_tingZhi;

			int now_anQuanDai=ZT8408_DIBit(g_cardNO, channel_anQuanDai);
			if (now_anQuanDai == openInput&&now_anQuanDai != last_anQuanDai)
			{
			}
			last_anQuanDai = now_anQuanDai;
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值