承接专栏《MFC工控项目实例之二主菜单制作》
用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。
1、新建IDD_SYS_DATA对话框,类名SYS_DATA。
三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图
2、SEAL_PRESSURE.h中添加代码
#include "resource.h" // main symbols
typedef struct sys_para
{
union
{
struct
{
double m_fMaxTime;
double m_fMinTime;
double m_fMaxPressure;
double m_fMinPressure;
};
char len1[4096];
};
}SYS_PARA;
class CSEAL_PRESSUREApp : public CWinApp
{
public:
CSEAL_PRESSUREApp();
SYS_PARA m_sys_data;
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};
extern class CSEAL_PRESSUREApp theApp;
3、SEAL_PRESSUREDlg.h中添加代码
public:
void iPlotX_SHOW();
4、SYS_DATA.cpp中添加代码
void SYS_DATA::OnOK()
{
// TODO: Add extra validation here
if(!UpdateData())
return;
CDialog::OnOK();
theApp.m_sys_data.m_fMaxTime=m_fMaxTime;
theApp.m_sys_data.m_fMinPressure=m_fMinPressure;
theApp.m_sys_data.m_fMaxPressure=m_fMaxPressure;
}
5、SEAL_PRESSUREDlg.cpp中添加代码
#include "SEAL_PRESSURE.h"
#include "SEAL_PRESSUREDlg.h"
#include "SYS_DATA.h"
#include "iplotchannelx.h"
#include "iPlotAxisX.h"
void CSEAL_PRESSUREDlg::iPlotX_SHOW()
{
// TODO: Add your control notification handler code here
CiPlotAxisX axis;
axis = m_ctrlPlot_1.GetXAxis(0);
axis.SetMin(0);
axis.SetSpan(theApp.m_sys_data.m_fMaxTime);
axis = m_ctrlPlot_1.GetYAxis(0);
axis.SetMin(theApp.m_sys_data.m_fMinPressure);
axis.SetSpan(theApp.m_sys_data.m_fMaxPressure - theApp.m_sys_data.m_fMinPressure);
}
void CSEAL_PRESSUREDlg::OnSysData()
{
SYS_DATA dlg;
if(dlg.DoModal() == IDOK)
{
iPlotX_SHOW();
Invalidate();
}
}
运行程序