MFC动态创建线程

==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍


这里需要一个知识点,就是多个线程可以共用一个线程函数,所以我们就不需要去烦恼怎么动态创建不同的线程函数。只需要考虑同一个线程函数什么时候该做哪一个线程的事就行。所以变化的就是穿进线程函数的参数了,然后由这个值来确定是哪个线程.

例子如下:
效果如图:
MFC动态创建线程_第1张图片

MFC动态创建线程_第2张图片

MFC动态创建线程_第3张图片

代码如图:

1.开始按钮

	UpdateData(TRUE);
	for (int i =0;i

2.线程函数

UINT ThreadProc(LPVOID lParam)
{
	SetDlgItemInt(AfxGetApp()->m_pMainWnd->m_hWnd, g_uStatic[(UINT)lParam], g_i[(UINT)lParam]++,TRUE);
	SetTimer(AfxGetApp()->m_pMainWnd->m_hWnd, (UINT)lParam, 1000, NULL);
	return 0;
}

3.定时器函数

void CMFCTESTDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	SetDlgItemInt(g_uStatic[nIDEvent], g_i[nIDEvent]++);
	CDialogEx::OnTimer(nIDEvent);
}

4.全局变量

int g_i[6] = {0};
UINT g_uStatic[6] = { IDC_STATIC_1,IDC_STATIC_2 ,IDC_STATIC_3,
					IDC_STATIC_4 ,IDC_STATIC_5 ,IDC_STATIC_6 };

这个例子只是抛砖引玉,根据这个思路,可以传任意的参数进去,然后做相应处理。还有线程的个数随便设置,不一定最大是6,因为这里的演示需要,所以把线程最大数固定了,其实它是个可变的变量.

你可能感兴趣的:(MFC)