- 积分
- 0
- 注册时间
- 2010-4-5
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 lastyaer 于 2011-3-18 14:05 编辑
求助,谢谢各位! 如下问题:
shunfly的帖子“写了个MATLAB VC绘图类”,(http://forum.simwe.com/viewthread.php?tid=779324&extra=&highlight=%D0%B4%C1%CB%B8%F6MATLAB%2BVC%BB%E6%CD%BC%C0%E0&page=2)拜读以后激动万分,在这个基础上写了一个MATLAB VC绘图类CMATLABDLG,原理完全相同,只是把matlab fig嵌在dialog中,作为该类的显示资源。
主程序是MFC 单文档模式,定义了一个成员变量:
CMATLABDLG m_matdlg;
将m_matdlg嵌在view视图中,然后调用绘图函数
int func1()
{ .....
Vplot(x, y, mwArray("Parent"), m_matdlg.m_hAxis);
...}
m_hAxis为axes句柄。运行正常。
但是如果用分线程调用func1(),报错
开启分线程:
CWinThread *pThread=AfxBeginThread(Thread1,this);
UINT CMatlabView::Thread1(LPVOID lpParameter)
{
CMatlabView *pView=(CMatlabView *)lpParameter;
pView->func1();
return 1;
}
分线程的调用方式没问题,只要不涉及m_matdlg的函数都运行正常。
错误提示:
Runtime Error!
Program: E:/..../MatLab.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
后来看网上有些资料说分线程调用函数和对象时,要使用静态或全局对象,把m_matdlg改成全局对象后依然报错,错误提示相同。
不知道怎么办了,求助给位,第一次发帖求助,不知道问题说清楚没有.......
我的本意是做一个MFC界面,嵌入几个MATLAB视图,功能是接收即时数据处理并作图显示,开启几个分线程处理即时数据并作图显示,因为计算比较费时间,单线程无法即时完成,所以使用多线程。处理数据没问题,只是最后要作图时必须调用绘图类对象。求助!! 谢谢各位了...... |
|