ウィンドウ オブジェクト

更新 : 2007 年 11 月

MFC には、ウィンドウの HWND ハンドルをカプセル化する CWnd クラスが用意されています。CWnd オブジェクトは C++ ウィンドウ オブジェクトであり、Windows のウィンドウを表す HWND とは区別されます。ただし、HWNDCWnd オブジェクトに含まれます。CWnd を使用して、独自の子ウィンドウ クラスを派生したり、CWnd から派生する多数の MFC クラスの 1 つを使用したりできます。CWnd クラスは、フレーム ウィンドウ、ダイアログ ボックス、子ウィンドウなどのすべてのウィンドウ、コントロール、ツール バーなどのコントロール バーの基本クラスになります。MFC で効果的なプログラミングを行うには、C++ ウィンドウ オブジェクトと HWND の関係を良く理解しておくことが重要です。

MFC では、ウィンドウの既定の機能および管理手段が提供されます。ただし、CWnd から独自のクラスを派生し、そのメンバ関数を使用して、機能をカスタマイズすることもできます。CWnd オブジェクトを作成し、その Create メンバ関数を呼び出すと、子ウィンドウを作成できます。作成した子ウィンドウは、CWnd メンバ関数を使用してカスタマイズできます。フォーム ビューやツリー ビューなど、CView から派生したオブジェクトをフレーム ウィンドウに埋め込むことができます。また、CSplitterWnd クラスに定義されている分割ペインを使用すると、ドキュメントを複数のビューに表示できます。

CWnd クラスから派生した各オブジェクトには、メッセージ マップが格納されています。メッセージ マップを使用すると、Windows メッセージまたはコマンド ID を独自のハンドラに割り当てることができます。

HWND API をカプセル化する CWnd メンバ関数の使用方法については、Windows プログラミング関連の書籍を参照してください。

CWnd で提供される関数

CWnd およびその派生ウィンドウ クラスには、コンストラクタ、デストラクタ、およびメンバ関数が用意されています。これらの機能を使用して、オブジェクトの初期化、基になる Windows 構造体の作成、およびカプセル化された HWND へのアクセスを行います。CWnd には、メッセージの送信、ウィンドウの状態へのアクセス、座標の変換、更新、スクロール、クリップボードへのアクセスなど、多くのタスクを行うための Windows API をカプセル化するメンバ関数も用意されています。HWND を引数として受け取る、ウィンドウ管理用の Windows API のほとんどは、CWnd のメンバ関数としてカプセル化されています。関数およびそのパラメータの名前は、CWnd メンバ関数で保持されます。CWnd によってカプセル化される Windows API の詳細については、「CWnd クラス」を参照してください。

CWnd と Windows メッセージ

CWnd の主な目的の 1 つは、WM_PAINTWM_MOUSEMOVE などの Windows メッセージを処理するインターフェイスを提供することです。CWnd のメンバ関数の多くは、標準のメッセージのハンドラです。このようなハンドラ名の宣言は、識別子 afx_msg で始まり、OnPaintOnMouseMove のように、関数にプリフィックス "On" が付きます。メッセージおよびメッセージ処理の詳細については、「メッセージの処理とマップ」を参照してください。ここで説明されている内容は、フレームワークのウィンドウと、特定の目的のために作成したウィンドウの両方に適用されます。

さらに詳しくは次のトピックをクリックしてください

参照

概念

Windows