AfxInitExtensionModule和AfxTermExtensionModule
来源:互联网 发布:苹果手机解压软件 编辑:程序博客网 时间:2024/05/29 14:05
一个很好的API查询网站 www.apihome.cn
AfxInitExtensionModule
BOOL AFXAPI AfxInitExtensionModule( AFX_EXTENSION_MODULE& state, HMODULE hModule );
返回值:
如果成功地初始化了扩展DLL,则返回TRUE;否则返回FALSE。
参数:
说明:
在扩展DLL的DllMain中调用此函数以初始化DLL。例如:
static AFX_EXTENSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
// 扩展DLL 一次性初始化
if(!AfxInitExtensionModule(extensionDLL, hInstance)) return 0;
...
}
}
AfxInitExtensionModule生成DLL的HMODULE的一个拷贝,并捕捉DLL的运行类(CRuntimeClass结构)和它的对象工厂(COleObjectFactory对象)以供创建CDynLinkLibrary时使用。
MFC的扩展DLL必须在它们的DllMain函数中做两件事情:·调用AfxInitExtensionModule 并检验返回值。·如果DLL要引出CRuntimeClass对象或者具有它自己的资源,则创建一个CDynLinkLibrary对象。当每个进程与扩展DLL分离时(这发生在进程退出,或者因为调用了AfxFreeLibrary,DLL被卸载时),你可以调用AfxTermExtensionModule来清除扩展DLL。
请参阅:AfxTermExtensionModule
AfxTermExtensionModule
void AFXAPI AfxTermExtensionModule(
AFX_EXTENSION_MODULE& state,
BOOL bAll = FALSE
);
参数:
说明:
调用这个函数,使每个进程与DLL分离(这在进程退出时发生,或者是由于调用了AfxFreeLibrary,DLL被卸载)的时候MFC可以清除扩展DLL。
AfxTermExtensionModule将删除所有与模块相连的局部内容并从消息映射中除去所有的入口。例如:
static AFX_EXTENSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
// 扩展 DLL 的一次性初始化
if(!AfxInitExtensionModule( extensionDLL, hInstance)) return 0;
// 任务:执行其它的初始化工作
}
else if(dwReason == DLL_PROCESS_DETACH)
{
// 扩展DLL的每个进程结束
AfxTermExtensionModule(extensionDLL);
// 任务:执行其它的清除工作。
}
return 1; // 完成
}
如果你的应用程序动态地载入、释放扩展DLL,确保调用了AfxTermExtensionModule。因为大多数扩展DLL不是动态载入(通常,它们与其引入库相连接)的,通常没有必要调用AfxTermExtensionModule。
MFC的扩展DLL需要在它们的DllMain中调用AfxInitExtensionModule。如果DLL将输出CRuntimeClass对象或者具有它自己的资源,你也需要在DllMain中创建CDynLinkLibrary对象。
0 0
- AfxInitExtensionModule和AfxTermExtensionModule
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- #和##
- && 和 ||
- 、和
- #和##
- .//和..//
- 和
- ?和\?
- ./ 和 ../
- #和##
- #、和##
- #和##
- *和&
- <和>
- HUD-5399 Too Simple(数学)
- bootstrap,select
- 身份证号码的合法性校验
- boost处理string
- 数据结构实验之二叉树的建立与遍历
- AfxInitExtensionModule和AfxTermExtensionModule
- 线程临界区相关结构体和函数
- JS学习十九天----组合模式
- 扩展存储过程 xp_smtp_sendmail的安装
- 黑马程序员_反射
- orcale将日期格式化为“yyyy年mm月dd日”
- jdk
- Eclipse中的svn冲突解决办法
- 常用投影及转换介绍