C API 中有 15个 Excel 回调函数只能使用 Excel4、Excel4v、Excel12、Excel12v 函数调用(或间接的使用框架函数 Excel 或 Excel12f 调用)。也就是说,这15个函数只能从 DLL 或 XLL 调用。它们包括:

  • xlAbort
  • xlCoerce
  • xlDefineBinaryName
  • xlDisableXLMsgs
  • xlEnableXLMsgs
  • xlFree
  • xlGetBinaryName
  • xlGetHwnd
  • xlGetInst
  • xlGetName
  • xlSet
  • xlSheetId
  • xlSheetNm
  • xlStack
  • xlUDF

xlAbort 函数

驱使处理器处理系统中的其它任务,检查用户是否按下了 ESC 键想要退出了宏。如果用户在计算期间按下了 ESC,工作表函数中调用此函数就可以检测到。

函数原型

Excel12(xlAbort, LPXLOPER12 pxRes, 1, LPXLOPER12 pxRetain);

参数

pxRetain (xltypeBool)

可选,如果是 FALSE, 函数就会检查中断条件,并清除所有挂起的中断。这可以让用户继续执行操作。如果忽略了这个函数或将参数设置为 TRUE,函数就会检查用户未清除的中止操作。

属性和返回值

如果用户按下了 ESC ,返回 TRUE(xltypeBool)。

备注

需要频繁调用

如果函数和命令将会花费大量时间,就应该频繁通过调用此函数使CPU 可以切换到其它的任务中去。

避免使用一些不好的语句

避免在你的用户接口中使用 “Abort"。应该考虑使用 ”Cancel"、"Halt"、"Break"、"Stop"。

实例

下面的代码,会反复的激活工作表中的单元格,直到 1分钟 过去或按下了 ESC。实例位于 : \SAMPLES\GENERIC\GENERIC.C

int WINAPI fDance(void)
{DWORD dtickStart;XLOPER12 xAbort, xConfirm;int boolSheet;int col=0;XCHAR rgch[32];//
// Check what kind of sheet is active. If it is a worksheet or macro
// sheet, this function will move the selection in a loop to show
// activity. In any case, it will update the status bar with a countdown.
//
// Call xlSheetId; if that fails the current sheet is not a macro sheet or
// worksheet. Next, get the time at which to start. Then start a while
// loop that will run for one minute. During the while loop, check if the
// user has pressed ESC. If true, confirm the abort. If the abort is
// confirmed, clear the message bar and return; if the abort is not
// confirmed, clear the abort state and continue. After checking for an
// abort, move the active cell if on a worksheet or macro. Then
// update the status bar with the time remaining.
//
// This block uses TempActiveCell12(), which creates a temporary XLOPER12.
// The XLOPER12 contains a reference to a single cell on the active sheet.
// This function is part of the framework library.
//boolSheet = (Excel12f(xlSheetId, 0, 0) == xlretSuccess);dtickStart = GetTickCount();while (GetTickCount() < dtickStart + 60000L){Excel12f(xlAbort, &xAbort, 0);if (xAbort.val.xbool){Excel12f(xlcAlert, &xConfirm, 2,TempStr12(L"Are you sure you want to cancel this operation?"),TempNum12(1));if (xConfirm.val.xbool){Excel12f(xlcMessage, 0, 1, TempBool12(0));return 1;}else{Excel12f(xlAbort, 0, 1, TempBool12(0));}}if (boolSheet){Excel12f(xlcSelect, 0, 1,TempActiveCell12(0,(BYTE)col));col = (col + 1) & 3;}wsprintfW(rgch,L"0:%lu",(60000 + dtickStart - GetTickCount()) / 1000L);Excel12f(xlcMessage, 0, 2, TempBool12(1), TempStr12(rgch));}Excel12f(xlcMessage, 0, 1, TempBool12(0));return 1;
}

转载于:https://www.cnblogs.com/boluoke/p/5945777.html

【XLL API 函数】xlAbort相关推荐

  1. 【XLL API 函数】xlSheetNm

    从外部引用包含的工作表ID返回工作表或宏表名称,或是当前表名称. 原型 Excel12(xlSheetNm, LPXLOPER12 pxRes, 1, LPXLOPER12 pxExtref); 参数 ...

  2. 【XLL API 函数】xlCoerce

    将 XLOPER/XLOPER12 转换为另一种类型,或是查询表格中的单元格值. 函数原型 Excel12(xlCoerce, LPXLOPER12 pxRes, 2, LPXLOPER12 pxSo ...

  3. 【XLL API 函数】 xlDefineBinaryName

    用于为 xltypeBigData XLOPER/XLOPER12 分配永久存储名称.用于定义 workbook 保存的位名称,并能在任何时候通过定义名称来访问. 函数原型 Excel12(xlDef ...

  4. 【XLL 文档翻译】【第1部分】 Add-in 管理器 和 XLL 接口函数

    xlAddInManagerInfo/xlAddInManagerInfo12 在 Excel 会话中,每一次调用 Add-In 管理器时,系统会调用这两个函数.此函数可以在 Add-In 管理器中提 ...

  5. Windows API函数大全

    1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同 ...

  6. [转]会自动消失的对话框API函数:MessageBoxTimeout

    //以下两个函数由user32.dll导出,只是没有微软官方文档记载,大家在cpp中包含了以下部分,就可以调用MessageBoxTimeout了. extern "C"{int ...

  7. 管理输入光标的 WIN32 API 函数

    下面的 API 函数是用来管理输入光标的 API 函数,下面是在使用C#时声明的这些函数: /**//// <summary> /// 参数说明: ///        hwnd   :  ...

  8. Delphi 常用API 函数(好多都没见过)

    2019独角兽企业重金招聘Python工程师标准>>> AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在 ...

  9. 用Debug函数实现API函数的跟踪

    用Debug函数实现API函数的跟踪 如果我们能自己编写一个类似调试器的功能,这个调试器需要实现我们对于跟踪监视工具的要求,即自动记录输入输出参数,自动让目标进程继续运行.下面我们就来介绍在不知道函数 ...

最新文章

  1. java返回json ajax_Spring MVC 中 AJAX请求并返回JSON的示例
  2. netty 之 telnet HelloWorld 详解
  3. 本期赠书中奖名单公布
  4. 在D-Bus适配器中声明槽
  5. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)
  6. 织梦cms提交熊掌号php,织梦cms熊掌号历史数据提交教程
  7. 获取系统时间出错oracle-,oracle 获取系统时间(转)
  8. yii mysql gii_Yii Gii使用
  9. 服务器安装mysql_阿里云服务器上安装MySQL
  10. javaweb html5离线存储配置,JavaWeb 知识补充
  11. [Windows核心编程]堆
  12. 2021年中国一次性血压传感器市场趋势报告、技术动态创新及2027年市场预测
  13. js 基于函数伪造的方式实现继承
  14. Extjs4.1.x使用Application动态按需加载MVC各模块
  15. 火山PC_数据库知识_MySQL操作
  16. imp遇到重复数据_oracle的imp导入时覆盖目标数据库
  17. drupal mysql hash密码_drupal7 密码重置
  18. 浅谈垂直腔面发射激光器的设计原则
  19. 【Vuejs】1017- Vue3 效率提升主要表现在哪些方面?
  20. CCF过程记录以及经验总结

热门文章

  1. 考研 计算机网络第二章物理层 知识点总结
  2. 基于STM32的函数信号发生器设计(上:硬件设计)
  3. PPT文件如何进行恢复
  4. (操作系统)中断机制
  5. 张尧学为什么不愿意提“普适计算”?是不是怕粘包?
  6. 分布式和集群实现的原理
  7. linux系统RootKit木马查杀
  8. 对于网页代码的调试方法
  9. 数说CS|国防科技大学计算机学院是怎样的存在?
  10. 深度学习中的epoch,batch_size,iterations含义解析