x// MatlabEngineDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MatlabEngine.h"
#include "MatlabEngineDlg.h"
#include "engine.h" //添加Matlab引擎头文件
添加MATLAB引擎库对应的静态链接库文件。
通过Visual C++的ClassWizard,添加按钮的单击响应事件,并添加如下代码。
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMatlabEngineDlg dialog
CMatlabEngineDlg::CMatlabEngineDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMatlabEngineDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMatlabEngineDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMatlabEngineDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMatlabEngineDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMatlabEngineDlg, CDialog)
//{{AFX_MSG_MAP(CMatlabEngineDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_MATLAB_ENGINE, OnMatlabEngine)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMatlabEngineDlg message handlers
BOOL CMatlabEngineDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CMatlabEngineDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMatlabEngineDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMatlabEngineDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMatlabEngineDlg::OnMatlabEngine()
{
// TODO: Add your control notification handler code here
Engine *ep; //定义Matlab引擎变量
MessageBox("单击确定按钮,Windows正在准备启动Matlab引擎!","Matlab引擎 ", MB_OK | MB_ICONINFORMATION);
if (!(ep=engOpen("\0"))) //打开Matlab引擎
{
fprintf(stderr, "\n Matlab引擎启动失败!\n");
MessageBox("Matlab引擎启动失败!","Matlab引擎 ",
MB_OK |MB_ICONERROR);
exit(-1);
}
MessageBox("单击确定按钮,隐藏MATLAB!","Matlab引擎",MB_OK | MB_ICO-
NINFORMATION);
engSetVisible(ep, 0); //隐藏Matlab窗口
MessageBox("单击确定按钮,系统重新显示MATLAB!", "Matlab引擎", MB_OK | MB_ICONINFORMATION);
engSetVisible(ep, 1); //重新显示Matlab窗口
mxArray *T = NULL;
double time[10] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 };
//生成矩阵
T = mxCreateDoubleMatrix(1, 10, mxREAL);
memcpy((void *)mxGetPr(T), (void *)time, sizeof(time));
//将矩阵变量写入Matlab引擎的工作区
engPutVariable(ep,"T", T);
//通过Matlab引擎执行Matlab命令
engEvalString(ep, "D = .5.*(-9.8).*T.^2;");
engEvalString(ep, "plot(T,D);");
engEvalString(ep, "title('Position vs. Time for a falling object');");
engEvalString(ep, "xlabel('Time (seconds)');");
engEvalString(ep, "ylabel('Position (meters)');");
engEvalString(ep, "grid on;");
//释放矩阵变量T占用的内存空间
mxDestroyArray(T);
MessageBox("通过例程,说明Matlab的图形显示能力!","Matlab引擎", MB_OK | MB_ICONINFORMATION);
//画一朵花
engEvalString(ep, "x=-8:0.5:8;");
engEvalString(ep, "y=x;");
engEvalString(ep, "[Y,X]=meshgrid(y,x);");
engEvalString(ep, "R=sqrt(X.^2+Y.^2)+eps;");
engEvalString(ep, "Z=2*sin(R)./R;");
engEvalString(ep, "surf(X,Y,Z);");
MessageBox("关闭Matlab引擎,系统将退出Matlab应用程序!","Matlab引擎", MB_OK | MB_ICONINFORMATION);
engClose(ep); //关闭Matlab引擎,退出Matlab
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB与外部程序接口编程.rar (66个子文件)
MATLAB与外部程序接口编程
第7章
testproperty.m 131B
zhsl.txt 1KB
myrandplot.m 229B
getplotcolor.m 220B
新建 文本文档.txt 0B
diamond.txt 5KB
第11章
OnMorphErosionMATLAB.txt 2KB
CreateHistogram.txt 1KB
OnFileOpen.txt 345B
OnDraw.txt 943B
新建 文本文档.txt 0B
ImageErrors.h 816B
Imageload.h 3KB
OnFileSaveAs.txt 1KB
CdbiObject.cpp 16KB
第4章
li2.m 208B
li1.m 703B
新建 文本文档.txt 0B
li1.txt 3KB
li2.txt 800B
第1章
testcell.m 744B
teststring.m 495B
teststruct.m 517B
processgrayimage.m 878B
第10章
li1.txt 1KB
li2.txt 2KB
第5章
新建 文本文档.txt 0B
li3.txt 3KB
li1.txt 6KB
li2.txt 2KB
第9章
1024.txt 747B
Project1.prj.txt 1KB
第6章
ex2.cpp 860B
showmatrix.c 980B
showcell.c 3KB
mex.h 440B
phonebook.c 3KB
mxshowsparsematrix.c 2KB
exam2.txt 704B
fulltosparse.c 2KB
showstruct.c 2KB
exam1.cpp 537B
timestwo.c 808B
mxshowstring.c 4KB
revord.c 1KB
第2章
jacobi.m 349B
li6.txt 4KB
新建 文本文档.txt 2KB
li3.txt 2KB
li5.txt 2KB
li1.txt 844B
gasket.m 478B
li2.txt 1KB
li4.txt 2KB
第3章
li40.m 167B
li38.m 142B
li23.m 218B
第8章
diamond.m 343B
phonebook.m 2KB
pb_lookup.m 193B
pb_remove.m 409B
pb_keyfilter.m 139B
pb_add.m 564B
pb_listall.m 161B
pb_change.m 744B
pb_display.m 219B
共 66 条
- 1
xuwentao185122
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页