关闭

xlAutoClose

58人阅读 评论(0) 收藏 举报
分类:

xlAutoClose

任何时候XLL 被去激活都会调用此函数。当Excel会话正常结构时会去激活add-in。add-in 也可以由用户在Excel会话期间去激活,调用此函数。

Excel没有规定XLL必需实现和输出此函数,尽管它是明智的,如XLL去激活函数和命令,释放资源,撤销定制,等等。如果函数和命令没有由XLL明确要求释放,Excel会在调用xlAutoClose函数后,再进行此操作。

参数

此函数没有参数

属性值和返回值

你实现了此函数后,必需返回1(int)

备注

每当XLL从内存中卸载去激活后,Excel调用xlAutoClose函数。XLL会在以下情形中去激活:

  • Excel会话正常结束时。
  • 在Excel会话过程中明确卸载XLL
  • XLL可以使用以下几种方法卸载
  • 使用 Add-In 管理器。
  • 从其它的XLL中调用 xlfUnregister函数,使用这个DLL做为唯一的参数名。
  • 从XLM宏表中调用UNREGISTER,以这个DLL名称作为唯的参数名

这个函数可以作以下几种操作:

  • 移除由这个XLL添加和菜单和菜单项。
  • 执行任意必要的全局清理
  • 删除任意创建的任意名称,尤其是函数输出的名称。这里需要注意的是注册的函数可能引起一些名称被创建,如果第4个参数 REGISTER 呈现出来。

实例

int WINAPI xlAutoClose(void)
{
   int i;
   XLOPER12 xRes;

//
// This block first deletes all names added by xlAutoOpen or
// xlAutoRegister12. Next, it checks if the drop-down menu Generic still
// exists. If it does, it is deleted using xlfDeleteMenu. It then checks
// if the Test toolbar still exists. If it is, xlfDeleteToolbar is
// used to delete it.
//
// The following code to delete the defined names
// does not work in the current version of Excel. 
// You cannot delete these names once they are Registered.
// The code is left here in case the functionality becomes 
// available in a future version.
//

   for (i = 0; i < g_rgWorksheetFuncsRows; i++)
      Excel12f(xlfSetName, 0, 1, TempStr12(g_rgWorksheetFuncs[i][2]));

   for (i = 0; i < g_rgCommandFuncsRows; i++)
      Excel12f(xlfSetName, 0, 1, TempStr12(g_rgCommandFuncs[i][2]));
//
// Everything else works as documented.
//
   Excel12f(xlfGetBar, &xRes, 3, TempInt12(10), TempStr12(L"Generic"), TempInt12(0));

   if (xRes.xltype != xltypeErr)
   {
      Excel12f(xlfDeleteMenu, 0, 2, TempNum12(10), TempStr12(L"Generic"));

      // Free the XLOPER12 returned by xlfGetBar //
      Excel12f(xlFree, 0, 1, (LPXLOPER12) &xRes);
   }

   Excel12f(xlfGetToolbar, &xRes, 2, TempInt12(7), TempStr12(L"Test"));

   if (xRes.xltype != xltypeErr)
   {
      Excel12f(xlfDeleteToolbar, 0, 1, TempStr12(L"Test"));

      // Free the XLOPER12 returned by xlfGetToolbar //
      Excel12f(xlFree, 0, 1, (LPXLOPER12) &xRes);
   }

   return 1;
}
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102次
    • 积分:30
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:3篇
    • 评论:0条
    文章分类
    文章存档