如果 AutoCAD 用户按 ESC 键进行响应,则返回用户输入函数和 /,/,,,,, 和函数。外部函数应将此响应视为取消请求并立即返回。ObjectARX还提供了一个函数,用于显式检查用户是否按了ESC。此函数使 ObjectARX 应用程序能够检查用户中断。acedCommandS()acedCommandC()acedCmdS()acedCmdC()acedEntSel()acedNEntSelP()acedNEntSel()acedDragGen()acedSSGet()RTCANacedUsrBrk() 应用程序不需要调用,除非它在与用户的交互之间执行冗长的计算。该函数绝不应用作检查可返回的用户输入函数返回的值的替代品。acedUsrBrk()acedUsrBrk()RTCAN 在某些情况下,应用程序希望忽略用户的取消请求。如果是这种情况,它应该调用以清除请求;否则,ESC 仍将未完成,并将导致下一个用户输入调用失败。(如果应用程序忽略 ESC,则应打印一条消息,告知用户它正在这样做。每当调用 ObjectARX 应用程序时,都会自动清除 ESC 条件。acedUsrBrk() 例如,如果用户在提示符下输入 ESC,则以下代码段将失败。 int test()
{
int i;
while (!acedUsrBrk()) {
acedGetInt("\nInput integer:", &i); // WRONG
.
.
.
}
}
后面略微修改的代码片段可以正确处理 ESC 的输入,而无需调用。acedUsrBrk() int test()
{
int i;
for (;;) {
if (acedGetInt("\nInput integer:", &i) != RTNORM)
break;
...
}
}
下面的示例更改循环条件。此构造也可以正常工作。 int test()
{
int i;
while (acedGetInt("\nInput integer:", &i) == RTNORM) {
...
}
}
有效的使用位置是在冗长的操作中。例如,单步执行图形数据库中的每个图元的代码可能非常耗时,应调用。acedUsrBrk()acedUsrBrk() |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-29 17:10
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.