ウィンドウ オブジェクト
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" で始まるもの (OnPaint
や OnMouseMove
など)) のハンドラーです。 メッセージとメッセージ処理の詳細については、「メッセージ処理とマッピング」を参照してください。 これらの情報は、フレームワークのウィンドウにも、特別な目的のために独自に作成したウィンドウにも同様に適用されます。
さらに詳しい情報
デバイス コンテキスト: ウィンドウの描画をデバイス非依存にするオブジェクト
グラフィック オブジェクト: ペン、ブラシ、フォント、ビットマップ、パレット、領域