[MS C++]如何实现退出keyin命令

老师们好,我们一般可以通过keyin 命令加载自己写的程序。想知道,可否在C++程序里 写一句话,来退出当前命令。  

我不太清楚DgnTool的工作机制。 拿DgnPrimitiveTool来说,Install() --> postinstall() -->  OnDataButton(点击左键)  ,我发现无论是在OnDataButton里return true还是return false,工具都不会调用Oncleanup或者是ExitTool,一定要运行另一个Tool才会退出当前命令。  而我想实现的是工具是,点击一下左键,完成命令后,就退出该工具。   

请问各位老师,这能否实现?

Parents Reply Children
  • 真的是这个问题。^^ 我有点明白了。郭工,那可否这样理解,想要在工具函数原有功能的基础重写这个工具函数,为了保持它原有的功能,必须在函数体里调用它的基类函数 :比如在:_OnPostInstall ()的函数体中调用__super::_OnPostInstall (),再写自定义代码,否则就会破坏了基类的机制,在启动工具时就不会自动调用_OnPostInstall ()了.

  • 不是不会调用_OnPostInstall了,在您调用_InstallTool之后,后台会保存您调用_InstallTool的DgnTool*指针,通过这个指针,后台会调用_OnPostInstall,_OnPostInstall是个虚函数,如果子类重新了_OnPostInstall就会调用子类重新的这个_OnPostInstall函数,没有重写的话调用的就是基类的这个函数。这是c/c++里边多态的一种,还是c/c++学的不过关呀。

  • 郭工,这下我明白了。每个基类的函数体并不是空的,除了纯虚函数的函数体是空的。

    重写基类函数,为了保持基类函数原有的功能(比如on_install中加载工具的一系列动作),需要调用基类函数(__super::oninstall),然后再写自己的代码。  这也解决了我的一直以来的疑问,关于为什么很多重写函数的函数体里一开始都有一句调用基类函数的语句。  

    感谢郭工