您的位置:首页 > 编程语言 > MATLAB

在VS2008,VS2010,VC6.0MFC中嵌入MATLAB的command window,调用MATLAB引擎

2016-09-30 09:43 519 查看

在VS2008,VS2010,VC6.0MFC中嵌入MATLAB的command window,调用MATLAB引擎

我们在MFC运用的时候,有时候需要调用MATLAB的功能,实现画图,计算的一下功能,这里我们可直接将MATLAB的command window嵌入MFC界面,从而实现我们所需功能。如下图



1. 首先在资源视图你的主MFC界面里加入一个Group Box,设置他的ID



2. 在你主程序的初始化里面加入以下代码

BOOL CSJBPage1::OnInitDialog()
{
CBCGPPropertyPage::OnInitDialog();

// TODO:  在此添加额外的初始化

//***********************MATLAB Command Window的打开及嵌入界面************************************//

(void) delay(4);
//由于程序打开过快,由于MATLAB打开过慢,第一次打开可能捕捉不到窗口,需要一个延时函数,延时4s,当然电脑配置好的话也不需要加
hComWin = ::FindWindow(NULL,"MATLAB Command Window");//获取窗口句柄
long ComWinStyle = ::GetWindowLong(hComWin,GWL_STYLE);//去掉窗口的标题栏和边框
::SetWindowLong(hComWin,GWL_STYLE,ComWinStyle&(~WS_CAPTION));
CRect ComWinRect;//获取绘图区域的位置和大小
CWnd *TrimArea = GetDlgItem(IDC_STATICCommand);
TrimArea->GetWindowRect(&ComWinRect);
long ComWinWidth = ComWinRect.Width();
long ComWinHeight = ComWinRect.Height();
::SetParent(hComWin,TrimArea->GetSafeHwnd());//设置matlab窗口为mfc子窗口并调整大小
::SetWindowPos(hComWin,NULL,0,0,ComWinWidth,ComWinHeight,SWP_NOZORDER | SWP_NOACTIVATE);
//::SetWindowPos(hComWin,NULL,0,0,300,300,SWP_NOZORDER | SWP_NOACTIVATE);//设置窗口宽度
::ShowWindow(hComWin,SW_SHOW);
::SetForegroundWindow(this->m_hWnd);
return TRUE;  // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}


3. 在构造函数里面初始化

CSJBPage1::CSJBPage1()
: CBCGPPropertyPage(CSJBPage1::IDD)
{
ShellExecute(0,"open","MATLABR2011b",NULL,"C:\\Users\\sujianbo\\Desktop",SW_SHOWNORMAL);//快捷方式必须是MATLABR2011b不能是MATLABR2011b.exe
//C:\\Users\\sujianbo\\Desktop这个是你引擎启动快捷方式放的位置
}


4. MATLAB 启动的快捷方式制作





我用的是MATLAB2011b,其他版本可能会有一些问题

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: