文档章节

CWinThread 部分代码

lssaint
 lssaint
发布于 2015/02/05 09:33
字数 121
阅读 12
收藏 0
CWinThread* AFXAPI AfxGetThread()
{
	// check for current thread in module thread state
	AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
	CWinThread* pThread = pState->m_pCurrentWinThread;
	return pThread;
}
AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState()
{
	AFX_MODULE_THREAD_STATE* pResult=AfxGetModuleState()->m_thread.GetData();
	ENSURE(pResult != NULL);
	return pResult;
}
AFX_MODULE_STATE* AFXAPI AfxGetModuleState()
{
	_AFX_THREAD_STATE* pState = _afxThreadState;
	ENSURE(pState);
	AFX_MODULE_STATE* pResult;
	if (pState->m_pModuleState != NULL)
	{
		// thread state's module state serves as override
		pResult = pState->m_pModuleState;
	}
	else
	{
		// otherwise, use global app state
		pResult = _afxBaseModuleState.GetData();
	}
	ENSURE(pResult != NULL);
	return pResult;
}
AFX_INLINE TYPE* GetData()
	{
		TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
		ENSURE(pData != NULL);
		return pData;
	}
CNoTrackObject* CProcessLocalObject::GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)())
{
	if (m_pObject == NULL)
	{
		AfxLockGlobals(CRIT_PROCESSLOCAL);
		TRY
		{
			if (m_pObject == NULL)
				m_pObject = (*pfnCreateObject)();
		}
		CATCH_ALL(e)
		{
			AfxUnlockGlobals(CRIT_PROCESSLOCAL);
			THROW_LAST();
		}
		END_CATCH_ALL
		AfxUnlockGlobals(CRIT_PROCESSLOCAL);
	}
	return m_pObject;
}


© 著作权归作者所有

下一篇: CWnd 弹框
lssaint
粉丝 9
博文 19
码字总数 14315
作品 1
程序员
私信 提问
AfxBeginThread和AfxEndThread及线程资源分配和释放

AfxBeginThread动态创建CWinThread(或派生类)线程对象,并分配相关资源. AfxEndThread会释放线程资源和CWinThread(或派生类)线程对象. 下面这个过程的分析,这里仅仅给出简单代码用于说明问题....

jetyi
2018/06/26
0
0
哲学家就餐问题——MFC演示程序

这个问题实际上就是多线程的调度问题,因为MFC里面已经给我们封装好了线程类,CWinThread类,因此我们要做的仅仅是简单的为每位哲学家分别创建进程。程序逻辑不是很复杂,但在用MFC来做哲学家...

晨曦之光
2012/05/23
186
0
WINDOWS消息机制(四)--MFC消息网络整体布局

该文主要介绍MFC中各对象之间继承体系建立的过程中随之建立的消息网络整体布局,会介绍如下问题: 1. 单个对象中的消息MAP如何形成 2. 具有继承关系的类的消息MAP如何建立关系 1. 单个MFC类中...

西昆仑
2012/07/06
756
3
MFC线程有关问题

AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的。现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的...

小文liuwen
2014/04/10
0
0
[转]MFC运行机制(自认为介绍比较清晰的)

学MFC,竟然还不知道MFC的MAIN函数在什么地方?怎么运行的?实在不高明。 看过候捷(JJHOU)老师的《深入浅出MFC》的,对它一定很熟悉。呵呵,本文是献给没有看过那本书,但是又很希望学习MFC...

shiyongfu19890308
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java发送html模板的高逼格邮件

最近做了一个监测k8s服务pod水平伸缩发送邮件的功能(当pod的cpu/内存达到指定阈值后会水平扩展出多个pod、或者指定时间内pod数应扩展到指定数量),一开始写了个格式很low的邮件,像下面这样...

码农实战
17分钟前
6
0
php-fpm配置文件详解/MariaDB密码重置、慢查询日志

来源:https://blog.csdn.net/Powerful_Fy php-fpm主配置文件路径:/usr/local/php-fpm/etc/php-fpm.conf #位于安装php安装目录下的etc/目录中,该文件中最后一行将配置文件指向:include=/...

asnfuy
22分钟前
4
0
川普给埃尔多安和内堪尼亚胡的信

任性 https://twitter.com/netanyahu/status/1186647558401253377 https://edition.cnn.com/2019/10/16/politics/trump-erdogan-letter/index.htm...

Iridium
43分钟前
12
0
golang-mysql-原生

db.go package mainimport ("database/sql""time"_ "github.com/go-sql-driver/mysql")var (db *sql.DBdsn = "root:123456@tcp(127.0.0.1:3306)/test?charset=u......

李琼涛
今天
5
0
编程作业20191021092341

1编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时 间。使用#define或const创建一个表示60的符号常量或const变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0的值...

1李嘉焘1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部