📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
|||
| (同じ利用者による、間の1版が非表示) | |||
| 2行目: | 2行目: | ||
CEditを継承したクラスを作成し、OnChar関数をオーバーライドする。 | CEditを継承したクラスを作成し、OnChar関数をオーバーライドする。 | ||
< | <syntaxhighlight lang="c++"> | ||
CNumericEdit.h | CNumericEdit.h | ||
| 33行目: | 33行目: | ||
DECLARE_MESSAGE_MAP() | DECLARE_MESSAGE_MAP() | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="c++"> | ||
#include "stdafx.h" | #include "stdafx.h" | ||
#include "CNumericEdit.h" | #include "CNumericEdit.h" | ||
| 112行目: | 112行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 119行目: | 119行目: | ||
DoModal()関数がIDOKを返した時点で、ダイアログ内のコントロールが破棄されてしまうため、値を取得する事ができない。<br> | DoModal()関数がIDOKを返した時点で、ダイアログ内のコントロールが破棄されてしまうため、値を取得する事ができない。<br> | ||
この場合、メンバにCString型の変数を定義し、DDX_Textで値を更新する。<br> | この場合、メンバにCString型の変数を定義し、DDX_Textで値を更新する。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
CMyDialog dlg; | CMyDialog dlg; | ||
| 128行目: | 128行目: | ||
dlg.m_editValue.GetWindowText(strText); // アサーションエラー | dlg.m_editValue.GetWindowText(strText); // アサーションエラー | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== 入力値の制限と値取得を同時に行う == | == 入力値の制限と値取得を同時に行う == | ||
CEdit型とCString型の変数を定義し、DoDataExchange内に、DDXControlとDDXTEXTを追加する。 | CEdit型とCString型の変数を定義し、DoDataExchange内に、DDXControlとDDXTEXTを追加する。 | ||
< | <syntaxhighlight lang="c++"> | ||
void CMyDialog::DoDataExchange(CDataExchange* pDX) | void CMyDialog::DoDataExchange(CDataExchange* pDX) | ||
{ | { | ||
| 144行目: | 144行目: | ||
DDX_Text(pDX, IDC_EDIT_VALUE, m_strValue); | DDX_Text(pDX, IDC_EDIT_VALUE, m_strValue); | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 150行目: | 150行目: | ||
ダイアログデータバリデーション(DDV)を使用する。<br> | ダイアログデータバリデーション(DDV)を使用する。<br> | ||
DoDataExchange()内に下記のように関数を追加する。<br> | DoDataExchange()内に下記のように関数を追加する。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
void CMyDialog::DoDataExchange(CDataExchange* pDX) | void CMyDialog::DoDataExchange(CDataExchange* pDX) | ||
{ | { | ||
| 165行目: | 165行目: | ||
DDV_MinMaxDouble(pDX, atof(m_strValue), 0.0, 1.0); | DDV_MinMaxDouble(pDX, atof(m_strValue), 0.0, 1.0); | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 173行目: | 173行目: | ||
そこで、データが有効か確認するための独自関数を作成する。<br> | そこで、データが有効か確認するための独自関数を作成する。<br> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="c++"> | ||
void DDV_CheckLowerUpper(CDataExchange* pDX, double lower, double upper) | void DDV_CheckLowerUpper(CDataExchange* pDX, double lower, double upper) | ||
{ | { | ||
| 182行目: | 182行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
上記の関数を、DoDataExchange()内に追記する。<br> | 上記の関数を、DoDataExchange()内に追記する。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
void CMyDialog::DoDataExchange(CDataExchange* pDX) | void CMyDialog::DoDataExchange(CDataExchange* pDX) | ||
{ | { | ||
| 208行目: | 208行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:MFC]] | [[カテゴリ:MFC]] | ||