15,471
社区成员
发帖
与我相关
我的任务
分享
//在类体外定义该线程函数
UINT MyThread(LPVOID lpParam)
{
//省略若干语句 ....
...
//engEvalString是调用matlab的语句,这不是问题重点...
engEvalString(ep,"open(某一个matlab文件)"); //打开Matlab中的某个文件
engEvalString(ep,"sim(文件名字);"); //仿真该文件并弹出2个动态图窗口 注意:这里的2个动态图先弹出2个窗口,分别画若干秒后,才运行下面语句
engEvalString(ep,"plot(yout)"); //然后再画一个静态图
return 0;
}
//然后在某个按钮响应事件函数中:
void CMyProgramDlg::OnButton()
{
CWinThread* pThread=AfxBeginThread((AFX_THREADPROC)MyThread,NULL);//执行线程
while ((::FindWindow(NULL,"窗口名字1")==NULL)||(::FindWindow(NULL,"窗口名字2")==NULL))
{
//捕捉由matlab画出的前2个动态图窗口,没弹出窗口则继续该循环,待两个窗口都弹出后跳出该循环,运行下面代码(其实就是让它在这等着)
}
HWND Fig_target=::FindWindow(NULL,"窗口名字1"); //这两句用来捕捉前两个弹出的窗口
HWND Fig_interference=::FindWindow(NULL,"窗口名字2");
//上面如果不加while循环的话,有可能前2个窗口还没弹出,就开始捕捉,导致捕捉失败...
//下面语句就是通过捕捉的窗口来进行各种图形嵌入
//省略...
...
}