命令行的封装,关于等待用户输入的问题
做一个绘图工具
有类似CAD的命令行
现在要封装一些命令行的输入函数API
比如GetPoint(point& pt);
用户调用此函数后,命令行提示输入点的坐标: 视图区鼠标等到用户点取
当用户输入后,此函数返回点的坐标
CAD的二次开发中就有这样的API,可是我想不通,这个函数内部怎么实现等待用户输入的
要知道,这个函数是个API啊,并不在线程中,函数内部怎么实现即可等待用户输入,又不阻塞界面呢
[解决办法]
CAD的二次开发中就有这样的API
异步什么的,又不是系统的API.
[解决办法]
在函数内部里触发参数消息到命令行线程,包含参数格式
命令行输入完成(用户按下enter或者页面按钮)时按照参数格式填写参数值,回调该函数。
[解决办法]
此类函数可以考虑用实现IDispatch接口COM组件,ITypeInfo包含了函数的格式。
或者mozilla的xpcom
[解决办法]
写得不好,不过多线程可以实现。
记得cad是mdi程序。那么一个函数可能是在doc里写的,可以在doc里发送消息给主线程,主线程再调用命令行,然后再依次返回,主线程做中转。
doc thread->main thread->command thread
[解决办法]
对不起,看反了。你的需求是命令行等视图区的指令输入,我看错了。
我也没有开发过类似程序,探讨一下。
命令行线程
---
if (当前行.以字符串开始("GetPoint")
if (当前行.包含(",")) //实参
GetPoint(x, y);
else //形参
{
向主线程发送请求获取点数据
挂起本线程;
}
---
主线程
---
收到命令行获取请求,发送到视图线程。
---
视图线程
---
鼠标操作获取点。
发送点数据到主线程。
挂起本线程。
---
主线程
---
收到点数据,向命令行线程的语法队列插入GetPoint(x, y)
恢复命令行线程
---