1. 如果在非模式对话框中放一个按扭,点按扭时执行: acedSSGet(...) 函数, 当我按下按扭后,不选择对象(但此时acedSSGet 函数已执行).由于是非模式对话框,我还可以继续点按扭,当点的次数很多时,系统就出错了
我想在第二次点按扭时,如果前一个按扭没有完成任务(这可以判断出来),就终止前一个任务,执行这个新的任务,就像发送一个ESC消息一样,怎么办 刚才试验了一下,没难度,只要在这个对话框加个成员变量,假定为bool型,初始化为true,只要这个对话框还在,这个变量就存在,在按钮执行命令一开始,就检测这个变量的值,只要是false,就rerurn,如果为true,就马上让他为false,然后调用getXXX,代码最后将这个变量设为true,这样就可以避免啦, [CODE]void ModelessDLG::OnBnClickedButton1() { // 参考代码 if ( m_cmdStatus == false ) if ( m_cmdStatus == false ) { AfxMessageBox(L"command in progress! "); return; } m_cmdStatus=false; ads_point pt; ads_name name; acedEntSel(L"pick an entity:\n", name, pt ); m_cmdStatus = true; }[/CODE 针对多个命令,或者是不同对话框的命令,可以设置全局变量来考虑,但是,【取消上一个命令,我还不了解机里】 |