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 コントロールを使用するには、次の手順を実行します。

  1. CMFCMaskedEdit オブジェクトをウィンドウ クラスに埋め込みます。

  2. CMFCMaskedEdit::EnableMask メソッドを呼び出してマスクを指定します。

  3. 有効な文字の一覧を指定するには、 CMFCMaskedEdit::SetValidChars メソッドを呼び出します。

  4. CMFCMaskedEdit::SetWindowText メソッドを呼び出して、マスクされた編集コントロールの既定のテキストを指定します。

  5. 検証されたテキストを取得するには、 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);
}

継承階層

CObject

CCmdTarget

CWnd

CEdit

CMFCMaskedEdit

要件

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を再定義します。

関連項目

階層図
クラス
CEdit クラス