CEdit クラス

更新 : 2007 年 11 月

Windows のエディット コントロールの機能が用意されています。

class CEdit : public CWnd

解説

エディット コントロールは、テキストを入力することのできる四角形の子ウィンドウです。

エディット コントロールは、ダイアログ テンプレートを利用するか、または直接コードに書き込むかのいずれかの方法で作成します。どちらの場合でも、最初に CEdit コンストラクタで CEdit オブジェクトを構築します。その後、Create メンバ関数を呼び出して Windows のエディット コントロールを作り、CEdit オブジェクトを結び付けます。

CEdit クラスからの派生クラスでは、1 ステップで構築できます。派生クラスのコンストラクタを記述し、その中で Create 関数を呼び出します。

CEditCWnd から有用な機能を継承しています。CEdit オブジェクトからテキストを設定または取得するには、CWnd のメンバ関数である SetWindowTextGetWindowText を使います。これらの関数は、複数行のエディット コントロールに対しても、エディット コントロール全体の内容を設定したり、取得したりできます。複数行のエディット コントロールのテキスト行は '\r\n' 文字シーケンスで区切られています。また、複数行のエディット コントロールに対してそのテキストの一部分を設定または取得するには CEdit のメンバ関数である GetLineSetSelGetSelReplaceSel を呼び出します。

エディット コントロールから親 (通常は CDialog からの派生クラス) に送られる Windows の通知メッセージを処理する場合は、親クラスに各メッセージのメッセージ マップのエントリとメッセージ処理メンバ関数を追加します。

各メッセージ マップのエントリは次の形式を持ちます。

ON_Notification(id, memberFxn)

id には、通知を送るコントロールの子ウィンドウ ID を指定します。memberFxn には、通知を処理するために書かれた親メンバ関数名を指定します。

親の関数のプロトタイプは次のようになります。

afx_msg void memberFxn**( );**

以下に、該当するメッセージ マップのエントリを示し、メッセージが親ウィンドウへ送られる場合について説明します。

  • ON_EN_CHANGE   エディット コントロール内のテキストを変更しようとしたときに送られます。EN_UPDATE 通知メッセージとは異なり、この通知メッセージは、Windows の表示を更新した後に送られます。

  • ON_EN_ERRSPACE   エディット コントロールが要求に対して十分なメモリの割り当てができなかったときに送られます。

  • ON_EN_HSCROLL   エディット コントロールの水平スクロール バーをクリックしたときに送られます。表示が更新される前に親ウィンドウに通知されます。

  • ON_EN_KILLFOCUS   エディット コントロールが入力フォーカスを失ったときに送られます。

  • ON_EN_MAXTEXT   エディット コントロールへの現時点での出力文字数が指定文字数を超え、切り捨てられたときに送られます。エディット コントロールに ES_AUTOHSCROLL スタイルが設定されていない場合に、エディット コントロールの幅を超える文字数を出力しようとすると送られます。さらに、エディット コントロールに ES_AUTOVSCROLL スタイルが設定されていない場合に、エディット コントロールの高さを超える行数のテキストを送ろうとしても送られます。

  • ON_EN_SETFOCUS   エディット コントロールが入力フォーカスを受け取ったときに送られます。

  • ON_EN_UPDATE   エディット コントロールが、テキスト表示を変更する直前に送られます。コントロールがテキストを配置し、そのテキストを表示する直前に送られるため、必要に応じてウィンドウのサイズも変更できます。

  • ON_EN_VSCROLL   エディット コントロールの垂直スクロール バーをクリックしたときに送られます。表示が更新される前に親ウィンドウに通知されます。

ダイアログ ボックス内に CEdit オブジェクトを作成すると、ダイアログ ボックスを閉じたときに、CEdit オブジェクトは自動的に破棄されます。

ダイアログ エディタを使ってダイアログ リソースから CEdit オブジェクトを作成すると、ダイアログ ボックスを閉じたときに CEdit オブジェクトが自動的に破棄されます。

ウィンドウ内に CEdit オブジェクトを作成したときは、オブジェクトを破棄する必要があります。CEdit オブジェクトをスタック上に作成したときは、自動的に破棄されます。new 関数を使ってヒープ領域上に CEdit オブジェクトを作成した場合は、Windows のエディット コントロールを終了したときに、オブジェクトの delete を呼び出してオブジェクトを破棄する必要があります。CEdit オブジェクト内にメモリを割り当てたときは、CEdit のデストラクタをオーバーライドしてそのメモリを解放します。

エディット コントロール (ES_READONLY など) のスタイルを変更する場合は、ModifyStyle を使用する代わりに、コントロール固有のメッセージを送ります。Windows SDK の「Edit Control Styles」を参照してください。

CEdit の詳細については、以下のトピックを参照してください。

  • コントロール

  • サポート技術情報の「INFO: SetCaretPos() Is Not Appropriate with CEdit or CRichEditCtrl Controls (Q259949)」

必要条件

ヘッダー : afxwin.h

参照

処理手順

CALCDRIV サンプル : オートメーション クライアント アプリケーションの例

CMNCTRL2 サンプル : MFC のコモン コントロール クラス : 第 2 部

参照

CWnd クラス

階層図

CWnd クラス

CButton クラス

CComboBox クラス

CListBox クラス

CScrollBar クラス

CStatic クラス

CDialog クラス

その他の技術情報

CEdit のメンバ