129 lines
3.4 KiB
C++
129 lines
3.4 KiB
C++
// probdlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "femm.h"
|
|
#include "hd_probdlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// probdlg dialog
|
|
|
|
|
|
hdCProbDlg::hdCProbDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(hdCProbDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(hdCProbDlg)
|
|
m_problem_note = _T("");
|
|
m_precision = 1.e-8;
|
|
m_minangle=DEFAULT_MINIMUM_ANGLE;
|
|
m_depth = 1.0;
|
|
m_dt = 0.0;
|
|
m_prevsoln = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void hdCProbDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(hdCProbDlg)
|
|
DDX_Control(pDX, IDC_HD_LENGTH_UNITS, m_length_units);
|
|
DDX_Control(pDX, IDC_BSMART, m_bsmart);
|
|
DDX_Control(pDX, IDC_HD_PROBTYPE, m_probtype);
|
|
DDX_Text(pDX, IDC_HD_PROBNOTE, m_problem_note);
|
|
DDX_Text(pDX, IDC_HD_PRC, m_precision);
|
|
DDV_MinMaxDouble(pDX, m_precision, 1.e-016, 1.e-008);
|
|
DDX_Text(pDX, IDC_HD_MINANG, m_minangle);
|
|
DDV_MinMaxDouble(pDX, m_minangle, 1., MINANGLE_MAX);
|
|
DDX_Text(pDX, IDC_HD_EDIT_DEPTH, m_depth);
|
|
DDX_Text(pDX, IDC_HD_DT, m_dt);
|
|
DDX_Text(pDX, IDC_HD_PREVSOLN, m_prevsoln);
|
|
//}}AFX_DATA_MAP
|
|
DDX_Control(pDX, IDC_HD_EDIT_DEPTH, m_IDC_depth);
|
|
DDX_Control(pDX, IDC_HD_PROBNOTE, m_IDC_problem_note);
|
|
DDX_Control(pDX, IDC_HD_PREVSOLN, m_IDC_prevsoln);
|
|
DDX_Control(pDX, IDC_HD_DT, m_IDC_dt);
|
|
DDX_Control(pDX, IDC_HD_PRC, m_IDC_precision);
|
|
DDX_Control(pDX, IDC_HD_MINANG, m_IDC_minangle);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(hdCProbDlg, CDialog)
|
|
//{{AFX_MSG_MAP(hdCProbDlg)
|
|
ON_CBN_SELCHANGE(IDC_HD_LENGTH_UNITS, OnSelchangeLengthUnits)
|
|
ON_CBN_SELCHANGE(IDC_HD_PROBTYPE, OnSelchangeProbtype)
|
|
ON_EN_CHANGE(IDC_HD_PREVSOLN, OnChangeHdPrevsoln)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// probdlg message handlers
|
|
|
|
BOOL hdCProbDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
m_probtype.SetCurSel(probtype);
|
|
if(probtype) m_IDC_depth.EnableWindow(FALSE);
|
|
else m_IDC_depth.EnableWindow(TRUE);
|
|
|
|
m_length_units.SetCurSel(lengthunits);
|
|
m_bsmart.SetCurSel(bsmart);
|
|
|
|
if(m_prevsoln.GetLength()==0){
|
|
m_IDC_dt.EnableWindow(FALSE);
|
|
m_dt=0;
|
|
}
|
|
else m_IDC_dt.EnableWindow(TRUE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void hdCProbDlg::OnOK()
|
|
{
|
|
if (UpdateData()==FALSE) return;
|
|
probtype=m_probtype.GetCurSel();
|
|
if(probtype) m_depth=1;
|
|
if (m_prevsoln.GetLength()==0) m_dt=0;
|
|
UpdateData(FALSE);
|
|
lengthunits=m_length_units.GetCurSel();
|
|
bsmart=m_bsmart.GetCurSel();
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void hdCProbDlg::OnSelchangeLengthUnits()
|
|
{
|
|
|
|
}
|
|
|
|
void hdCProbDlg::OnSelchangeProbtype()
|
|
{
|
|
if(m_probtype.GetCurSel()) m_IDC_depth.EnableWindow(FALSE);
|
|
else m_IDC_depth.EnableWindow(TRUE);
|
|
}
|
|
|
|
void hdCProbDlg::OnChangeHdPrevsoln()
|
|
{
|
|
// 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.
|
|
|
|
UpdateData();
|
|
if(m_prevsoln.GetLength()==0){
|
|
m_IDC_dt.EnableWindow(FALSE);
|
|
m_dt=0;
|
|
UpdateData(FALSE);
|
|
}
|
|
else m_IDC_dt.EnableWindow(TRUE);
|
|
|
|
}
|