找回密码
 注册
Simdroid-非首页
查看: 101|回复: 3

matlab与VC混编,嵌入绘图的问题!

[复制链接]
发表于 2011-1-12 10:57:11 | 显示全部楼层 |阅读模式 来自 天津
本帖最后由 Sdfsa 于 2011-1-12 11:06 编辑

各位大大好,我是编程新人,最近使用matlab2008a与VS2010进行混编,采用引擎方式,发现采用基于对话框的MFC时,嵌入matlab绘图没有问题,而采用CFormView的单文档时,不改变程序,嵌入视图后,图像不能显示,请问怎么解决呢?

实现嵌入的代码:
void CTest1View::OnBnClickedButton1()
{
if(!(ep = engOpen("\0")))
{
  fprintf(stderr,"\n MATLAB引擎启动失败!\n");
  exit(-1);
}
engEvalString(ep,"cd C:\\Documents and Settings\\Administrator\\My Documents\\MATLAB");
engEvalString(ep,"drawpic");
::Sleep(1000);
HWND hFig = ::FindWindow(NULL,_T("V")); // 获得Figure 窗口句柄
::ShowWindow(hFig,SW_HIDE);
long lStyle = ::GetWindowLong(hFig,GWL_STYLE); // 去掉Figure 窗口的标题栏和边框
::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_DRAWPIC1);
PlotArea->GetWindowRect(&PlotRec);
long Width = PlotRec.right - PlotRec.left;
long Height = PlotRec.bottom - PlotRec.top;
//::MoveWindow(hFig,0,0,PlotRec.right,PlotRec.bottom,TRUE);
::SetParent(hFig,PlotArea->GetSafeHwnd());// 设置Figure 窗口为VC 界面的子窗口并调整位置
::SetWindowPos(hFig,NULL,1,1,Width+10,Height+35,SWP_NOZORDER | SWP_NOACTIVATE);
::ShowWindow(hFig,SW_SHOW);
::SetForegroundWindow(this->m_hWnd);
}
 楼主| 发表于 2011-1-13 10:24:39 | 显示全部楼层 来自 天津
Simdroid开发平台
自己顶一下,会混合编程的高手们帮忙看一下啊
回复 不支持

使用道具 举报

发表于 2011-1-13 18:00:12 | 显示全部楼层 来自 新加坡
正好路过,由于忙于工作上的事情,只能快速看看你贴出的代码,我觉得下面这行代码应该有问题:
CWnd *PlotArea = GetDlgItem(IDC_DRAWPIC1);

提醒你再仔细看看。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-1-14 14:53:54 | 显示全部楼层 来自 天津
感觉CWnd *PlotArea = GetDlgItem(IDC_DRAWPIC1);没有错啊,我看很多嵌入matlab的代码都是这样,而且在基于对话框的程序中也成功了,就是换成CFormView后一开始不显示,如果拖动滚动条将嵌入绘图的区域移动到视图可见以外,再滚动回去就可以看见了,对MFC的视图机制不是很了解,还请高手们看看问题在哪。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 03:31 , Processed in 0.027439 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表