02创建MFC用户界面线程

AfxBeginThread
AfxBeginThread有两个重载版本:一个用于用户界面线程,一个用于辅助线程。其中用户界面线程通常用于处理用户输入和响应用户事件,这些行为独立于执行应用程序他部分的线程。

下面列举创建用户界面线程的函数声明

CWinThread* AfxBeginThread(

CRuntimeClass* pThreadClass,

int nPriority=THREAD_PRIORITY_NORMAL,

UINT nStackSize=0,

DWORD dwCreateFlags=0,

LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);


pThreadClass:从CWinThread派生的类的RUNTIME_CLASS.

nPriority:(可选)所需的优先级别。默认值为正常优先级。

nStackSize:(可选)所需的线程堆栈大小。默认值与创建线程的堆本大小相同。

dwCreateFlags:(可选)CREATE_SUSPEND,如果希望在挂起状态中创建线程。默认值为0,即正常启动线程。

lpSecurityAttrs:(可选)所需的安全属性。默认值与父线程具有相同的访问权。


创建用户界面线程时,必须首先从CWinThread派生类。必须使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏声明并实现此类。此类必须重写某些函数,也可以重写其他函数。下表列出这些函数及其用途

函数用途
ExitInstance线程终止时执行清除
InitInstance执行线程实例初始化。必须重写
OnIdle执行线程特定的闲置时间处理。通常不重写
PreTranslateMessage将消息调度到TranslateMessage和DispatchMessage之前对其进行筛选。通常不重写。
ProcessWndProcException截获由线程的消息和命令处理程序引发的未处理异常。通常不生写
Run控制线程的函数。包含消息泵。一般不重写。


BOOL CUIThread::InitInstance()
{
	// TODO:  perform and per-thread initialization here
	CUIDlg  *pDlg=new CUIDlg;
	pDlg->Create(IDD_DIALOG1);								//创建非模态对话框
	pDlg->ShowWindow(SW_SHOW);							//显示对话
	m_pMainWnd = pDlg;										//将对话框设为主窗口
	return TRUE;
}

int CUIThread::ExitInstance()
{
	// TODO:  perform any per-thread cleanup here
	if(m_pMainWnd!= NULL)
		delete m_pMainWnd;	//删除动态指针
	return CWinThread::ExitInstance();
}
void CUIThreadDemoView::OnUiThread() 
{
	// TODO: Add your command handler code her	//使用AfxBeginThread函数启动用户界面线程
	CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread),0,0,NULL);	
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值