Matlab 直接在 C++ GUI 中绘图

Heo*_*hiy 4 c++ matlab user-interface

我正在使用 matlab 编译器从我的 m 文件生成 c++ 共享库。是否可以直接在 c++ GUI 中显示 matlab 绘图(而不是在单独的窗口中)?

Heo*_*hiy 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;
}
Run Code Online (Sandbox Code Playgroud)