ウィンドウ オブジェクト

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

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

CWnd クラスから派生した各オブジェクトにはメッセージ マップが含まれており、これを介して Windows メッセージやコマンド ID を独自のハンドラーにマップできます。

Windows のプログラミングに関する一般的な資料は、HWND API をカプセル化する CWnd メンバー関数の使用方法を学習するうえで有益なリソースです。

CWnd で動作する関数

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

CWnd と Windows メッセージ

CWnd の主な目的の 1 つは、WM_PAINT や WM_MOUSEMOVE などの Windows メッセージを処理するためのインターフェイスを提供することです。 CWnd のメンバー関数の多くは、標準メッセージ (識別子 afx_msg で始まるものと、プレフィックス "On" で始まるもの (OnPaintOnMouseMove など)) のハンドラーです。 メッセージとメッセージ処理の詳細については、「メッセージ処理とマッピング」を参照してください。 これらの情報は、フレームワークのウィンドウにも、特別な目的のために独自に作成したウィンドウにも同様に適用されます。

さらに詳しい情報

関連項目

Windows