- 积分
- 0
- 注册时间
- 2010-4-14
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 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);
} |
|