Matlab在C++ GUI中直接绘图

4
我正在使用Matlab编译器从我的m文件生成C++共享库。 是否有可能直接在C++ GUI中显示Matlab图形(而不是在单独的窗口中显示)?

1
有趣的问题,但恐怕答案是否定的:在Matlab中所有UI相关的工作都是由Java完成的。 - stijn
2个回答

5
我找到了一个简单的解决方案。如果你正在使用Windows系统,你可以将窗口的父级设置为Matlab窗口。就像这样:
HWND h = FindWindow(L"SunAwtFrame", L"Figure 1");

void MatlabViewerHack::EmbedMatlabPlot(HWND h)
{
   SetWindowPos(h,NULL,rect.left(), rect.top(), rect.width(), rect.height(),0);
   SetWindowLong(h, GWL_STYLE,WS_CHILD|WS_VISIBLE);
   SetParent(h, parent_widget);             //dynamic_cast<QWidget*>(parent())->winId()

   //updating ui_state, windows xp, window 7
   SendMessage(h, WM_UPDATEUISTATE, UIS_INITIALIZE, 0);
   SendMessage(parent_widget, WM_UPDATEUISTATE, UIS_INITIALIZE, 0);
   SendMessage(h, WM_CHANGEUISTATE, UIS_INITIALIZE, 0);
   SendMessage(parent_widget, WM_CHANGEUISTATE, UIS_INITIALIZE, 0);

   current_window = h;
}

我刚刚使用它在 WPF 应用程序中嵌入了一个 Matlab 曲面图,效果非常好。 - stijn
嗨@Heorhiy!是否可以在WPF中实现相同的功能?我需要在我的WPF应用程序中显示Matlab图形(而不是在单独的窗口中)。请帮助我。提前致谢。 - PRABHAKARAN

1

MATLAB使用JIDE作为其用户界面,该界面是基于Java/Swing构建的。MATLAB Builder JA也没有可嵌入的图形。因此,根据stijn的说法,我认为没有可嵌入的绘图。但我很愿意被证明是错误的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接