matlab的figure嵌入到vc的图像控件中

limingcui 2011-07-21 04:05:44
根据一篇论文,叫做《两种matlab图像嵌入vc界面的实现方法》,我怎么实现不了呢;
本人用的是matlab7.0.1建立com组件,vc6.0混合编程
vc中代码如下:
void CTryPlotDlg::OnButton1()
{
CoInitialize(NULL);
Iplotsin* pImyclass;
HRESULT hr=CoCreateInstance(CLSID_plotsin,NULL,CLSCTX_ALL,IID_Iplotsin,(void **)&pImyclass);

COleVariant ctrl;
ctrl=(double)0;
pImyclass->guitest1((VARIANT)ctrl);
char FigName[]="_guitest_";
HWND hFig=::FindWindow(NULL,FigName);
long lStyle=::GetWindowLong(hFig,GWL_STYLE);
::SetWindowLong(hFig,GWL_STYLE,lStyle&(~WS_CAPTION)&(~WS_THICKFRAME));
::SetWindowPos(hFig,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_FRAMECHANGED);
RECT PlotRec;
CWnd* PlotArea=GetDlgItem(IDC_PLOTPIC);
PlotArea->GetWindowRect(&PlotRec);
long Width=PlotRec.right-PlotRec.left;
long Height=PlotRec.bottom-PlotRec.top;
::SetParent(hFig,PlotArea->GetSafeHwnd());
::SetWindowPos(hFig,NULL,1,1,Width-3,Height-3,SWP_NOZORDER|SWP_NOACTIVATE);
ctrl=(double)1;
pImyclass->guitest1((VARIANT)ctrl);
}
就是在对话框中,有个按钮来响应,matlab作图sin函数,没有问题
执行vc后,按钮响应后,matlab图形可以做出来,但是还是和以前一样是显示的matlab的图形,而没有嵌入到vc图像控件里面
为什么呢?
郁闷
还有,我分数好像不多,请各位大虾帮帮忙
...全文
611 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
scmyxlg 2012-09-24
  • 打赏
  • 举报
回复
楼主有没有实现呀
还请多多帮忙,我也急需这方面的程序
禾禾爸爸 2012-02-29
  • 打赏
  • 举报
回复
多好的帖子啊。结了干啥啊
向立天 2011-08-13
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
safei9 2011-07-24
  • 打赏
  • 举报
回复
这样做有意义吗,机器上还得同时装两个软件
呔妖怪来嘛 2011-07-23
  • 打赏
  • 举报
回复
有个软件 mathtools 能把mfile转成c代码
画图应该够了
limingcui 2011-07-23
  • 打赏
  • 举报
回复
每日一顶
limingcui 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hezhe1008 的回复:]

能不用com就不要用com了
这东西很难整
[/Quote]


com还行吧,就是传递参数数据交互的时候麻烦了点
那LS用的是啥
limingcui 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lishenfreeman 的回复:]

这种方法根本不行,分两次调用matlab的函数,第一次调用生成一个不可见的窗口,然后对这个窗口进行了修改,但后面又调用了函数,这次生成了一个可见的窗口,可以想象,两次调用,执行的一个函数,区别只是一次显示,一次不显示,第二次的调用根本没有在第一次的调用基础上进行修改,所以根本无法成功。
[/Quote]

终于有人帮忙了
我的matlab函数是这样的

function guitest1(ctrl)
x=0:0.01:10;
y=sin(x);
switch ctrl
case 0
figure('NumberTitle','Off','Name','_guitest_','Visible','Off');
case 1
h=gcf;
set(h,'Visible','On');
end
plot(x,y,'r--');

给传递不同的ctrl值,然后一次调用传入ctrl=0,是不显示的
后面一次调用,传入ctrl=1,是显示的,显示在VC的窗口里面
呔妖怪来嘛 2011-07-22
  • 打赏
  • 举报
回复
能不用com就不要用com了
这东西很难整
lishenfreeman 2011-07-22
  • 打赏
  • 举报
回复
这种方法根本不行,分两次调用matlab的函数,第一次调用生成一个不可见的窗口,然后对这个窗口进行了修改,但后面又调用了函数,这次生成了一个可见的窗口,可以想象,两次调用,执行的一个函数,区别只是一次显示,一次不显示,第二次的调用根本没有在第一次的调用基础上进行修改,所以根本无法成功。
limingcui 2011-07-22
  • 打赏
  • 举报
回复
怎么没有高手给解答啊

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧