CMFCMaskedEdit クラス
CMFCMaskedEdit
クラスは、マスクされた編集コントロールをサポートしています。マスクに対してユーザー入力を検証し、テンプレートに従って検証された結果を表示します。
構文
class CMFCMaskedEdit : public CEdit
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CMFCMaskedEdit::CMFCMaskedEdit |
既定のコンストラクターです。 |
CMFCMaskedEdit::~CMFCMaskedEdit |
デストラクターです。 |
パブリック メソッド
名前 | 説明 |
---|---|
CMFCMaskedEdit::D isableMask | ユーザー入力の検証を無効にします。 |
CMFCMaskedEdit::EnableGetMaskedCharsOnly | GetWindowText メソッドがマスクされた文字のみを取得するかどうかを指定します。 |
CMFCMaskedEdit::EnableMask | マスクされた編集コントロールを初期化します。 |
CMFCMaskedEdit::EnableSelectByGroup | マスクされた編集コントロールが特定のユーザー入力グループを選択するか、すべてのユーザー入力を選択するかを指定します。 |
CMFCMaskedEdit::EnableSetMaskedCharsOnly | マスクされた文字のみに対して、またはマスク全体に対してテキストを検証するかどうかを指定します。 |
CMFCMaskedEdit::GetThisClass |
このクラス型に関連付けられている CRuntimeClass オブジェクトへのポインターを取得するためにフレームワークによって使用されます。 |
CMFCMaskedEdit::GetWindowText | マスクされた編集コントロールから検証済みのテキストを取得します。 |
CMFCMaskedEdit::SetValidChars | ユーザーが入力できる有効な文字の文字列を指定します。 |
CMFCMaskedEdit::SetWindowText | マスクされた編集コントロールにプロンプトを表示します。 |
保護メソッド
名前 | 説明 |
---|---|
CMFCMaskedEdit::IsMaskedChar | 対応するマスク文字に対して指定された文字を検証するためにフレームワークによって呼び出されます。 |
解説
アプリケーションで CMFCMaskedEdit
コントロールを使用するには、次の手順を実行します。
CMFCMaskedEdit
オブジェクトをウィンドウ クラスに埋め込みます。CMFCMaskedEdit::EnableMask メソッドを呼び出してマスクを指定します。
有効な文字の一覧を指定するには、 CMFCMaskedEdit::SetValidChars メソッドを呼び出します。
CMFCMaskedEdit::SetWindowText メソッドを呼び出して、マスクされた編集コントロールの既定のテキストを指定します。
検証されたテキストを取得するには、 CMFCMaskedEdit::GetWindowText メソッドを呼び出します。
マスク、有効な文字、および既定のテキストを初期化するために 1 つ以上のメソッドを呼び出さない場合、マスクされた編集コントロールは、標準の編集コントロールの動作と同じように動作します。
例
次の例では、 EnableMask
メソッドを使用してマスク (電話番号など) を設定し、マスクされた編集コントロールのマスクを作成する方法、ユーザーが入力できる有効な文字の文字列を指定する SetValidChars
メソッド、マスクされた編集コントロールにプロンプトを表示する SetWindowText
方法を示します。 この例は、 New Controls サンプルの一部です。
CMFCMaskedEdit m_wndMaskEdit1;
CMFCMaskedEdit m_wndMaskEdit2;
CMFCMaskedEdit m_wndMaskEdit3;
CMFCMaskedEdit m_wndMaskEdit4;
CMFCMaskedEdit m_wndMaskEdit5;
CString m_strValue1;
CString m_strValue2;
CString m_strValue3;
CString m_strValue4;
CString m_strValue5;
BOOL CPage4::OnInitDialog()
{
CMFCPropertyPage::OnInitDialog();
// Mask 1: phone number
m_wndMaskEdit1.EnableMask(_T(" ddd ddd dddd"), // The mask string
_T("(___) ___-____"), // Literal, "_" char = character entry
_T(' ')); // Default char
m_wndMaskEdit1.SetValidChars(NULL); // Valid string characters
m_wndMaskEdit1.SetWindowText(_T("(123) 123-1212"));
// Mask 2: State, Zip Code
m_wndMaskEdit2.EnableMask(_T(" cc ddddd-dddd"), // The mask string
_T("State: __, Zip: _____-____"), // Literal, "_" char = character entry
_T(' ')); // Backspace replace char
m_wndMaskEdit2.SetValidChars(NULL); // Valid string characters
m_wndMaskEdit2.SetWindowText(_T("State: NY, Zip: 12345-6789"));
// Mask 3: serial code
m_wndMaskEdit3.EnableMask(_T(" AAAA AAAA AAAA AAAA"), // The mask string
_T("S/N: ____-____-____-____"), // Literal, "_" char = character entry
_T('_')); // Backspace replace char
m_wndMaskEdit3.SetValidChars(NULL); // Valid string characters
m_wndMaskEdit3.SetWindowText(_T("S/N: FPR5-5678-1234-8765"));
// Mask 4: 0xFFFF
m_wndMaskEdit4.EnableMask(_T(" AAAA"), // The mask string
_T("0x____"), // Literal, "_" char = character entry
_T('_')); // Backspace replace char
m_wndMaskEdit4.SetValidChars(_T("1234567890ABCDEFabcdef")); // Valid string characters
m_wndMaskEdit4.SetWindowText(_T("0x01AF"));
// Mask 5: digits only
m_wndMaskEdit5.DisableMask(); // Don't use the mask
m_wndMaskEdit5.SetValidChars(_T("1234567890")); // Valid string characters
m_wndMaskEdit5.SetWindowText(_T("1234567890"));
return TRUE; // return TRUE unless you set the focus to a control
}
void CPage4::OnButtonGet()
{
m_wndMaskEdit1.GetWindowText(m_strValue1);
m_wndMaskEdit2.GetWindowText(m_strValue2);
m_wndMaskEdit3.GetWindowText(m_strValue3);
m_wndMaskEdit4.GetWindowText(m_strValue4);
m_wndMaskEdit5.GetWindowText(m_strValue5);
UpdateData(FALSE);
}
継承階層
要件
Header: afxmaskededit.h
CMFCMaskedEdit::D isableMask
ユーザー入力の検証を無効にします。
void DisableMask();
解説
ユーザー入力の検証が無効になっている場合、マスクされた編集コントロールは標準の編集コントロールと同様に動作します。
CMFCMaskedEdit::EnableGetMaskedCharsOnly
GetWindowText
メソッドがマスクされた文字のみを取得するかどうかを指定します。
void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);
パラメーター
bEnable
[in]true CMFCMaskedEdit::GetWindowText メソッドがマスクされた文字のみを取得することを指定します。メソッドがテキスト全体を取得することを指定する場合は FALSE。 既定値は TRUE です。
解説
マスクされた文字の取得を有効にするには、このメソッドを使用します。 次に、(425) 555-0187 などの電話番号に対応するマスクされた編集コントロールを作成します。 GetWindowText
メソッドを呼び出すと、"4255550187" が返されます。 マスクされた文字の取得を無効にした場合、 GetWindowText
メソッドは編集コントロールに表示されるテキストを返します (例: "(425) 555-0187")。
CMFCMaskedEdit::EnableMask
マスクされた編集コントロールを初期化します。
void EnableMask(
LPCTSTR lpszMask,
LPCTSTR lpszInputTemplate,
TCHAR chMaskInputTemplate=_T('_'),
LPCTSTR lpszValid=NULL);
パラメーター
lpszMask
[in]ユーザー入力の各位置に表示できる文字の種類を指定するマスク文字列。 lpszInputTemplate および lpszMask パラメーター文字列の長さは同じである必要があります。 マスク文字の詳細については、「解説」セクションを参照してください。
lpszInputTemplate
[in]ユーザー入力の各位置に表示できるリテラル文字を指定するマスク テンプレート文字列。 アンダースコア文字を文字('_') プレースホルダーとして使用します。 lpszInputTemplate および lpszMask パラメーター文字列の長さは同じである必要があります。
chMaskInputTemplate
[in]ユーザー入力の無効な文字ごとにフレームワークが置き換える既定の文字。 このパラメーターの既定値はアンダースコア('_')です。
lpszValid
[in]有効な文字のセットを含む文字列。 NULL は、すべての文字が有効であることを示します。 このパラメーターの既定値は NULL です。
解説
マスクされた編集コントロールのマスクを作成するには、このメソッドを使用します。 CMFCMaskedEdit
クラスからクラスを派生させ、CMFCMaskedEdit::IsMaskedChar メソッドをオーバーライドして、カスタム マスク処理に独自のコードを使用します。
次の表に、既定のマスク文字を示します。
マスク文字 | Definition |
---|---|
D | 指。 |
d | 数字またはスペース。 |
+ | プラス ('+')、マイナス ('-')、またはスペース。 |
C | 英字。 |
c | 英字またはスペース。 |
A | 英数字。 |
a | 英数字またはスペース。 |
* | 印刷可能な文字。 |
CMFCMaskedEdit::EnableSelectByGroup
マスクされた編集コントロールで、ユーザーが特定のグループ入力またはすべての入力を選択できるかどうかを指定します。
void EnableSelectByGroup(BOOL bEnable=TRUE);
パラメーター
bEnable
[in]グループのみを選択する場合は TRUE。テキスト全体を選択する場合は FALSE。 既定値は TRUE です。
解説
この関数を使用して、マスクされた編集コントロールでユーザーがグループまたはテキスト全体を選択できるかどうかを指定します。
既定では、グループによる選択が有効になっています。 この場合、ユーザーは有効な文字の連続したグループのみを選択できます。
たとえば、次のマスクされた編集コントロールを使用して電話番号を検証できます。
m_wndMaskEdit.EnableMask(
_T(" ddd ddd dddd"), // Mask string
_T("(___) ___-____"), // Template string
_T(' ')); // Default char
m_wndMaskEdit.SetValidChars(NULL); // All characters are valid.
m_wndMaskEdit.SetWindowText(_T("(425) 555-0187")); // Prompt
グループによる選択が有効になっている場合、ユーザーは "425"、"555"、または "0187" の文字列グループのみを取得できます。 グループの選択が無効になっている場合、ユーザーは電話番号のテキスト全体を取得できます: "(425) 555-0187"。
CMFCMaskedEdit::EnableSetMaskedCharsOnly
マスクされた文字のみに対して、またはマスク全体に対してテキストを検証するかどうかを指定します。
void EnableSetMaskedCharsOnly(BOOL bEnable=TRUE);
パラメーター
bEnable
[in]マスクされた文字のみに対してユーザー入力を検証する場合は TRUE。マスク全体に対して検証する場合は FALSE。 既定値は TRUE です。
CMFCMaskedEdit::GetWindowText
マスクされた編集コントロールから検証済みのテキストを取得します。
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount) const;
void GetWindowText(CString& rstrString) const;
パラメーター
lpszStringBuf
[out]エディット コントロールからテキストを受け取るバッファーへのポインター。
nMaxCount
[in]受信する最大文字数。
rstrString
[out]エディット コントロールからテキストを受け取る文字列オブジェクトへの参照。
戻り値
最初のメソッド オーバーロードは、 lpszStringBuf パラメーター バッファーにコピーされる文字列のバイト数を返します。マスクされた編集コントロールにテキストがない場合は 0。
解説
このメソッドは、マスクされた編集コントロールから lpszStringBuf バッファーまたは rstrString 文字列にテキストをコピーします。
このメソッドは、 CWnd::GetWindowText を再定義します。
CMFCMaskedEdit::IsMaskedChar
対応するマスク文字に対して指定された文字を検証するためにフレームワークによって呼び出されます。
virtual BOOL IsMaskedChar(
TCHAR chChar,
TCHAR chMaskChar) const;
パラメーター
chChar
[in]検証する文字。
chMaskChar
[in]マスク文字列の対応する文字。
戻り値
chChar パラメーターが chMaskChar パラメーターで許可される文字の型である場合は TRUE。それ以外の場合は FALSE。
解説
入力文字を独自に検証するには、このメソッドをオーバーライドします。 マスク文字の詳細については、 CMFCMaskedEdit::EnableMask メソッドを参照してください。
CMFCMaskedEdit::SetValidChars
ユーザーが入力できる有効な文字の文字列を指定します。
void SetValidChars(LPCTSTR lpszValid=NULL);
パラメーター
lpszValid
[in]有効な入力文字のセットを含む文字列。 NULL は、すべての文字が有効であることを意味します。 このパラメーターの既定値は NULL です。
解説
有効な文字の一覧を定義するには、このメソッドを使用します。 入力文字がこのリストに含まれていない場合、マスクされた編集コントロールはそれを受け入れなくなります。
次のコード例では、16 進数のみを受け入れます。
//Mask: 0xFFFF
m_wndMaskEdit.EnableMask(
_T(" AAAA"), // The mask string.
_T("0x____"), // The literal template string.
_T('_')); // The default character that
// replaces the backspace character.
// Valid string characters
m_wndMaskEdit.SetValidChars(_T("1234567890ABCDEFabcdef"));m_wndMaskEdit.SetWindowText(_T("0x01AF"));
CMFCMaskedEdit::SetWindowText
マスクされた編集コントロールにプロンプトを表示します。
void SetWindowText(LPCTSTR lpszString);
パラメーター
lpszString
[in]プロンプトとして使用される null で終わる文字列を指します。
解説
このメソッドは、コントロール テキストを設定します。
このメソッドは、 CWnd::SetWindowTextを再定義します。