「CEditを継承したクラスを作成する」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし
編集の要約なし |
|||
165行目: | 165行目: | ||
// 他の型用の DDV も標準であります | // 他の型用の DDV も標準であります | ||
DDV_MinMaxDouble(pDX, atof(m_strValue), 0.0, 1.0); | DDV_MinMaxDouble(pDX, atof(m_strValue), 0.0, 1.0); | ||
} | |||
</source> | |||
<br><br> | |||
== 複数のエディットコントロール間で有効性を確認する == | |||
2つのエディットコントロール間の関係性から、データの有効性を決めたいことがある。<br> | |||
例えば、ユーザに上限値と下限値を入力してもらう場合、上限値は下限値より大きくなければいけない。<br> | |||
そこで、データが有効か確認するための独自関数を作成する。<br> | |||
<br> | |||
<source lang="c++"> | |||
void DDV_CheckLowerUpper(CDataExchange* pDX, double lower, double upper) | |||
{ | |||
if(lower > upper) | |||
{ | |||
AfxMessageBox(_T("下限値には上限値より小さい数値を入力してください."), MB_ICONWARNING); | |||
pDX->Fail(); | |||
} | |||
} | |||
</source> | |||
上記の関数を、DoDataExchange()内に追記する。<br> | |||
<source lang="c++"> | |||
void CMyDialog::DoDataExchange(CDataExchange* pDX) | |||
{ | |||
CDialog::DoDataExchange(pDX); | |||
// 入力値の制限,OnChar をオーバーライドしたクラス | |||
DDX_Control(pDX, IDC_EDIT_LOWER_VALUE, m_editLower); | |||
DDX_Control(pDX, IDC_EDIT_UPPER_VALUE, m_editUpper); | |||
// ダイアログ消滅後の値取得用 | |||
DDX_Text(pDX, IDC_EDIT_LOWER_VALUE, m_strLower); | |||
DDX_Text(pDX, IDC_EDIT_UPPER_VALUE, m_strUpper); | |||
// 入力値の範囲確認 | |||
// 他の型用のDDVも標準で存在する | |||
DDV_MinMaxDouble(pDX, atof(m_strLower), 0.0, 1.0); | |||
DDV_MinMaxDouble(pDX, atof(m_strUpper), 0.0, 1.0); | |||
// 下限値と上限値が入力されている場合は 下限値 < 上限値 であるかチェックする | |||
if(!m_strLower.IsEmpty() && !m_strUpper.IsEmpty()) | |||
{ | |||
DDV_CheckLowerUpper(pDX, atof(m_strLower), atof(m_strUpper)); | |||
} | |||
} | } | ||
</source> | </source> |