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;
}




MFC线程间发送消息

MFC线程消息分为几类: 1.线程消息: 2.窗口消息:传递消息用到 SendMessage(),PostMessage(),PostThreadMessage ()三个函数,详细请参看: htt...
  • HolaMirai
  • HolaMirai
  • 2015年06月03日 21:24
  • 1792

MFC类成员函数作为线程函数的解决办法

2009-10-04 - [开发语言]版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://efaq.blogbus.com/logs/47605752.htmlWin32 A...
  • onezeros
  • onezeros
  • 2009年12月05日 22:24
  • 4645

在MFC里面实现线程的实例

线程是一种从软件到硬件的技术,主要目的是为了提高运行速度,和多任务。 ××××××××××××××××××××××××××××××××××××需要储备的资料(他人的)×××××××××××××××××...
  • wenluderen
  • wenluderen
  • 2015年01月23日 15:01
  • 5434

MFC 线程的退出方法

A.线程函数的返回(推荐用法)(需要考虑的是catch/运行标志/错误处理等方法) B.ExitThread函数(不推荐) C.同一个进程或者另一个进程中的线程调用TerminateThread函...
  • KingCat666
  • KingCat666
  • 2015年03月11日 11:12
  • 7527

MFC基础控件简单运用

MFC是经典的开发桌面应用程序的C++ UI。MFC中对话框模式下有很多有用的控件,这里简要介绍部分控件的使用方法。开发环境:VS2015CBUTTON按钮控件新建基于对话框的应用程序MFCDemo,...
  • yunshiwan
  • yunshiwan
  • 2016年07月24日 11:27
  • 355

MFC 创建UI线程

对于windows来说,所有的线程都是一样的,但MFC却把线程区分为两种:用户界面(UI)线程和工作者线程。用户界面线程具有消息循环而工作者线程没有。UI线程可以创建窗口并给这些窗口发送消息,工作者线...
  • u010839382
  • u010839382
  • 2016年10月31日 17:10
  • 1271

MFC-创建,挂起,恢复线程

线程分为界面线程和工作线程界面线程: 学过windows程序设计的都知道每一个窗口都有一个消息循环来处理各种消息.所以界面线程的机制和窗口过程差不多,是比较复杂的. 工作线程: 很简单的一种线程...
  • qq_18297675
  • qq_18297675
  • 2016年04月02日 15:34
  • 1193

MFC线程的挂起、唤醒和终止

1、创建一个基于MFC的基本对话框,命名为ThreadManage 2、在对话框窗口创建五个按钮和一个静态文本和一个进度条 ____________________________________...
  • hushiwei1993
  • hushiwei1993
  • 2015年04月10日 09:22
  • 2404

[MFC]线程的挂起与恢复

实例——线程的挂起与恢复 关键代码: CDemoThreadDlg::CDemoThreadDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CDemoThr...
  • ouyangshima
  • ouyangshima
  • 2013年04月28日 18:57
  • 2036

mfc 查找线程获取程序的线程ID,判断线程是否启动

// bool CStudentComputerControl::FindProcess(CString ProcessName) {     HANDLE handle=CreateToolh...
  • liuyinghui523
  • liuyinghui523
  • 2013年04月25日 06:04
  • 1416
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC线程基本
举报原因:
原因补充:

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