MFC线程基本

原创 2012年03月24日 16:24:56

线程的创建很简单,只要在类当中新建一个函数(非成员函数),然后在事件中触发就可以了,如:

UINT MessageThread(LPVOID pParam)//不能用成员函数
{
	char* pMessage=(char*)pParam;
	CWnd* pMainWnd=AfxGetMainWnd();
	::MessageBox(pMainWnd->m_hWnd,pMessage,"Thread",MB_OK);
	eventObj.Lock();
	pMessage="Thread1 unlock";
	::MessageBox(pMainWnd->m_hWnd,pMessage,"Thread1 message",MB_OK);
	return 0;
}

AfxBeginThread(MessageThread,"Thread1 start");//调用MessageThread,第二个参数可以传任意类型的东西给线程函数,这个就启动了一个线程了


对于多界面及工作线程,跟JAVA的也大同小异,可以自建一个类CMyThread继续自CWinThread,用户界面例如就继续自CFrameWnd

然后通过主界面VIEW当中启动CMyThread:

AfxBeginThread(RUNTIME_CLASS(CMyThread));//启动线程来启动一个窗口

这里主线程会新建一个CMyThread线程,并调用其InitInstance()函数进行初始化,这时可以在初始化当中进行操作,如:

BOOL CMyThread::InitInstance()
{
	//因新建的类CMyWnd:public CFrameWnd的构造是protected的,在不改变权限情况下不能直接构造
	CRuntimeClass* pClass=RUNTIME_CLASS(CMyWnd);
	CObject* pObject=pClass->CreateObject();
	ASSERT(pObject->IsKindOf(RUNTIME_CLASS(CMyWnd)));//断言判断pObject类型
	CMyWnd* pFrameWnd=(CMyWnd*)pClass->CreateObject();//强转
	pFrameWnd->Create(NULL,"Thread window");
	pFrameWnd->ShowWindow(SW_SHOW);
	pFrameWnd->UpdateWindow();
	return TRUE;
}




相关文章推荐

thread线程的基本入门文档

  • 2012年05月07日 04:19
  • 31MB
  • 下载

线程的基本用法

  • 2013年03月19日 13:12
  • 31KB
  • 下载

MFC如何获得线程的状态的方法

如何获得线程的状态的方法不管是Windows API还是MFC的CWinThread类都没有给出直接获得线程状态的接口或函数。线程的状态分为正在执行、挂起、已经结束三种。利用API函数GetExitC...

委托和线程基本代码

  • 2013年05月18日 23:00
  • 88KB
  • 下载

在MFC里面实现线程的实例

线程是一种从软件到硬件的技术,主要目的是为了提高运行速度,和多任务。 ××××××××××××××××××××××××××××××××××××需要储备的资料(他人的)×××××××××××××××××...

java线程基本知识小结.doc

  • 2011年10月29日 12:51
  • 162KB
  • 下载

线程基本知识(英文)

  • 2011年03月02日 10:58
  • 182KB
  • 下载

如何正确的关闭 MFC 线程

前言:   近日在网上看到很多人问及如何关闭一下线程,但是我看网上给出的并不详细,而且有些方法还是错误的。小弟在此拙作一篇,不谈别的,只谈及如何正确的关闭MFC的线程,至于Win32和C Run...

线程的基本管理

  • 2015年10月20日 19:57
  • 2.92MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC线程基本
举报原因:
原因补充:

(最多只允许输入30个字)