📄 setdlg.cpp
字号:
// SetDlg.cpp : implementation file
//
#include "stdafx.h"
#include "simulate.h"
#include "SetDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetDlg dialog
CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetDlg)
m_fLAxisAdd = 1.00000f;
m_fObjRadius = 2.0f;
m_fSAxisAdd = 1.00000f;
m_nReflectCount = 100;
m_fShineIntensity = 50.0f;
m_fSAxisFrom = 15.0f;
m_nAllPhoton = 0;
m_fLAxisFrom = 50.0f;
m_nRandomSimulateNum = 10;
m_fError = 0.001f;
//}}AFX_DATA_INIT
m_hIcon=::AfxGetApp()->LoadIcon(IDI_SET);
m_nObjSort=1;
m_nAllPhoton=(int)(4*3.14*m_fObjRadius*m_fObjRadius*this->m_fShineIntensity);
//加载位图
m_bitOk.LoadBitmap(IDB_OK);
m_bitCancel.LoadBitmap(IDB_CANCEL);
//------------------------------------------------
m_SetParam.fLAxisAdd=this->m_fLAxisAdd;
m_SetParam.fLAxisFrom=this->m_fLAxisFrom;
m_SetParam.fObjRadius=this->m_fObjRadius;
m_SetParam.fSAxisAdd=this->m_fSAxisAdd;
m_SetParam.fSAxisFrom=this->m_fSAxisFrom;
m_SetParam.fShineIntensity=this->m_fShineIntensity;
m_SetParam.nAllPhoton=this->m_nAllPhoton;
m_SetParam.nObjSort=this->m_nObjSort;
m_SetParam.nReflectCount=this->m_nReflectCount;
m_SetParam.nRandomSimulateNum=this->m_nRandomSimulateNum;
m_SetParam.fError=this->m_fError;
//------------------------------------------------
}
void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetDlg)
DDX_Control(pDX, IDC_COMBO_OBJSORT, m_comboObjSort);
DDX_Text(pDX, IDC_EDIT_LAXISADD, m_fLAxisAdd);
DDV_MinMaxFloat(pDX, m_fLAxisAdd, 0.f, 30.f);
DDX_Text(pDX, IDC_EDIT_OBJR, m_fObjRadius);
DDX_Text(pDX, IDC_EDIT_SAXISADD, m_fSAxisAdd);
DDX_Text(pDX, IDC_EDIT_REFLECTCOUNT, m_nReflectCount);
DDX_Text(pDX, IDC_EDIT_SHINEINTENSITY, m_fShineIntensity);
DDX_Text(pDX, IDC_EDIT_SAXISFORM, m_fSAxisFrom);
DDX_Text(pDX, IDC_EDIT_ALLPHOTON, m_nAllPhoton);
DDX_Text(pDX, IDC_EDIT_LAXISFORM, m_fLAxisFrom);
DDX_Text(pDX, IDC_EDIT_RANDOMSIMULATENUM, m_nRandomSimulateNum);
DDX_Text(pDX, IDC_EDIT_ERROR, m_fError);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
//{{AFX_MSG_MAP(CSetDlg)
ON_EN_CHANGE(IDC_EDIT_OBJR, OnChangeEditObjr)
ON_EN_CHANGE(IDC_EDIT_SHINEINTENSITY, OnChangeEditShineintensity)
ON_BN_CLICKED(IDC_BTN_DEFAULT, OnBtnDefault)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetDlg message handlers
BOOL CSetDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
this->SetIcon(m_hIcon,true);
this->UpdateData(true);
this->m_comboObjSort.SetCurSel(m_nObjSort);
((CButton*)GetDlgItem(IDOK))->SetBitmap(m_bitOk);
((CButton*)GetDlgItem(IDCANCEL))->SetBitmap(m_bitCancel);
// CG: The following block was added by the ToolTips component. { // Create the ToolTip control. m_tooltip.Create(this); m_tooltip.Activate(TRUE); // TODO: Use one of the following forms to add controls:
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_ERROR),"数据分析时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_RANDOMSIMULATENUM), "只能填整数,不要填小数哦");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_LAXISADD),"随机模拟时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_SAXISADD),"随机模拟时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_LAXISFORM),"随机模拟时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_SAXISFORM),"随机模拟时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_REFLECTCOUNT),"随机模拟时要用到");
m_tooltip.AddTool(GetDlgItem(IDC_EDIT_SHINEINTENSITY),"随机模拟时要用到"); }
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSetDlg::OnOK()
{
// TODO: Add extra validation here
this->UpdateData(true);
if(this->m_fLAxisAdd<=0||this->m_fLAxisAdd>30)
{
MessageBox("长半轴增量必须大于0且小于30","设置错误",MB_ICONINFORMATION);
GetDlgItem(IDC_EDIT_LAXISADD)->SetFocus();
return;
}
if(this->m_fObjRadius<0)
{
MessageBox("物体的半径必须小于或者等于1.41cm且大于0","设置错误",MB_ICONINFORMATION);
GetDlgItem(IDC_EDIT_OBJR)->SetFocus();
return;
}
this->m_nObjSort=this->m_comboObjSort.GetCurSel();
this->UpdateData(false);
if(this->m_comboObjSort.GetCurSel()==1)//球体
m_nAllPhoton=(int)(4*m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
else
m_nAllPhoton=(int)(m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
m_SetParam.fLAxisAdd=this->m_fLAxisAdd;
m_SetParam.fLAxisFrom=this->m_fLAxisFrom;
m_SetParam.fObjRadius=this->m_fObjRadius;
m_SetParam.fSAxisAdd=this->m_fSAxisAdd;
m_SetParam.fSAxisFrom=this->m_fSAxisFrom;
m_SetParam.fShineIntensity=this->m_fShineIntensity;
m_SetParam.nAllPhoton=this->m_nAllPhoton;
m_SetParam.nObjSort=this->m_nObjSort;
m_SetParam.nReflectCount=this->m_nReflectCount;
m_SetParam.nRandomSimulateNum=this->m_nRandomSimulateNum;
CDialog::OnOK();
}
void CSetDlg::ApplySet(SetParam& sp)
{
sp.fLAxisAdd=m_SetParam.fLAxisAdd;
sp.fLAxisFrom=m_SetParam.fLAxisFrom;
sp.fObjRadius=m_SetParam.fObjRadius;
sp.fSAxisAdd=m_SetParam.fSAxisAdd;
sp.fSAxisFrom=m_SetParam.fSAxisFrom;
sp.fShineIntensity=m_SetParam.fShineIntensity;
sp.nAllPhoton=m_SetParam.nAllPhoton;
sp.nReflectCount=m_SetParam.nReflectCount;
sp.nObjSort=m_SetParam.nObjSort;
sp.nRandomSimulateNum=m_SetParam.nRandomSimulateNum;
sp.fError=m_SetParam.fError;
}
void CSetDlg::OnChangeEditObjr()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
this->UpdateData(true);
if(this->m_comboObjSort.GetCurSel()==1)//球体
m_nAllPhoton=(int)(4*m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
else
m_nAllPhoton=(int)(m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
this->UpdateData(false);
}
void CSetDlg::OnChangeEditShineintensity()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
this->UpdateData(true);
if(this->m_comboObjSort.GetCurSel()==1)//球体
m_nAllPhoton=(int)(4*m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
else
m_nAllPhoton=(int)(m_fObjRadius*m_fObjRadius*3.14*this->m_fShineIntensity);
this->UpdateData(false);
}
void CSetDlg::ChangeSet(SetParam sp)
{
//--------------------------------------------
m_SetParam.fLAxisAdd=sp.fLAxisAdd;
m_SetParam.fLAxisFrom=sp.fLAxisFrom;
m_SetParam.fObjRadius=sp.fObjRadius;
m_SetParam.fSAxisAdd=sp.fSAxisAdd;
m_SetParam.fSAxisFrom=sp.fSAxisFrom;
m_SetParam.fShineIntensity=sp.fShineIntensity;
m_SetParam.nAllPhoton=sp.nAllPhoton;
m_SetParam.nObjSort=sp.nObjSort;
m_SetParam.nReflectCount=sp.nReflectCount;
m_SetParam.fError=sp.fError;
//--------------------------------------------
//--------------------------------------------
m_fLAxisAdd=sp.fLAxisAdd;
m_fLAxisFrom=sp.fLAxisFrom;
m_fObjRadius=sp.fObjRadius;
m_fSAxisAdd=sp.fSAxisAdd;
m_fSAxisFrom=sp.fSAxisFrom;
m_fShineIntensity=sp.fShineIntensity;
m_nAllPhoton=sp.nAllPhoton;
m_nObjSort=sp.nObjSort;
m_nReflectCount=sp.nReflectCount;
m_fError=sp.fError;
//--------------------------------------------
}
void CSetDlg::OnBtnDefault()
{
// TODO: Add your control notification handler code here
m_fLAxisAdd = 0.100000f;
m_fObjRadius = 2.0f;
m_fSAxisAdd = 0.100000f;
m_nReflectCount = 100;
m_fShineIntensity = 50.0f;
m_fSAxisFrom = 15.0f;
m_nAllPhoton = 0;
m_fLAxisFrom = 50.0f;
m_nObjSort=1;
m_nAllPhoton=(int)(4*3.14*m_fObjRadius*m_fObjRadius*this->m_fShineIntensity);
m_nRandomSimulateNum=10;
//------------------------------------------------
m_SetParam.fLAxisAdd=this->m_fLAxisAdd;
m_SetParam.fLAxisFrom=this->m_fLAxisFrom;
m_SetParam.fObjRadius=this->m_fObjRadius;
m_SetParam.fSAxisAdd=this->m_fSAxisAdd;
m_SetParam.fSAxisFrom=this->m_fSAxisFrom;
m_SetParam.fShineIntensity=this->m_fShineIntensity;
m_SetParam.nAllPhoton=this->m_nAllPhoton;
m_SetParam.nObjSort=this->m_nObjSort;
m_SetParam.nReflectCount=this->m_nReflectCount;
m_SetParam.nRandomSimulateNum=this->m_nRandomSimulateNum;
//------------------------------------------------
this->UpdateData(false);
}
BOOL CSetDlg::PreTranslateMessage(MSG* pMsg)
{
// CG: The following block was added by the ToolTips component. { // Let the ToolTip process this message. m_tooltip.RelayEvent(pMsg); } return CDialog::PreTranslateMessage(pMsg); // CG: This was added by the ToolTips component.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -