CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

用户休息时间

2024-5-18 18:26| 发布者: admin| 查看: 57| 评论: 0|原作者: admin|来自: AutoCAD

用户休息时间

如果 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
        . 
        . 
        . 
    } 
}

后面稍作修改的代码片段在不调用 .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()

父主题:

  1. 获取用户输入

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 12:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部