MFC   VC++   Visual Studio   Visual Studio   プログラミング

CMFCMaskedEditの使い方

 「CMFCMaskedEdit」は「CEdit」を改良したクラスで、入力文字を制限するだけでなく、入力形式まで指定できるので、用途によってはかなり使い道の多いクラスだと思います。
 このクラスの使い方については、サンプルを見れば大体わかると思いますが、ここでは補足的な感じで紹介したいと思います。

 まず、「CMFCMaskedEdit」は「CEdit」の派生クラスなので、エディットコントロールを設置するように、リソースエディタや直接コードを記入して作成します。
 リソースエディタで設置した場合は、メンバ変数の追加から「CMFCMaskedEdit」のメンバ変数(ここではm_mask_edit)を追加します。
 初期設定として「OnInitDialog」などで、許可する文字列の設定や入力形式を設定します。
 設定方法は、「EnableMask」で入力形式に添った入力可能文字や空白時の文字などを設定し、入力形式を「SetWindowText」で設定します。

 この他に「SetValidChars」で入力可能な文字を制限します。
 例えば、「EnableMask」で数字を入力可能にしたけど"0"は入力させたくないという場合に、「SetValidChars」で"123456789"を設定することで"0"は入力できなくなります。

 具体的なコードを書くと以下のようになります。
    m_mask_edit.EnableMask(_T("     AAAA AAAA AAAA AAAA"), // 英数字入力
        _T("S/N: ____-____-____-____"), // 入力の対応するところに"_"を入力する
        _T('_')); // 空白の箇所に入れる文字
    m_mask_edit.SetValidChars(NULL); // 入力可能な文字
    m_mask_edit.SetWindowText(_T("S/N: ABCD-0123-45678-9abc"));
 ここで上記のコードについて説明すると、まず、「EnableMask」の第一引数で、入力可能にする文字を文字単位で設定します。
 ここでは英数字を表す"A"を並べて記述していますが、最後の4つを数字だけにしたい場合は、"     AAAA AAAA AAAA DDDD"とします。

 次の第二引数で、入力するための形式を設定します。
 このとき、入力可能にする箇所には"_"を入力しておきます。
 ここで注意点として、第一引数と第二引数の文字列の長さが違う場合、コンパイルは通りますが実行時にエラーになります。

 第三引数は、空白時に表示させるための文字を設定します。
 ここでは省略していますが、第四引数は、次の行の「SetValidChars」と同様に、入力可能な文字を設定します。
 第四引数で設定するか「SetValidChars」の違いだけで、どちらかで設定すればいいです。
 両方で違う設定をすると、後から設定したものになります。
 デフォルトの"NULL"を設定すれば、第一引数で設定した制限だけになります。

 最後の行の「SetWindowText」は、最初に表示させておく文字列を設定するのですが、ここで初期表示設定をしないと何も入力できなくなるので、空白でもいいので設定しておきます。
 注意点として、ここで設定する文字列も、「EnableMask」で設定した第一引数・第二引数の文字列の長さと同じにしないと何も入力できなくなります。

 最後に、「SetWindowText」の第一引数で設定するときの制限文字の種類を掲載しておきます。
  • D → 数字
  • d → 数字または空白
  • + → 正符号 (+)、負符号 (-)、または空白
  • C → 英文字
  • c → 英文字または空白
  • A → 英数字
  • a → 英数字または空白
  • * → 印字可能な文字
ランキングへ     posted by 遠雷 | Comment(0) | コントロール
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。