MFC は、ウィンドウの ハンドルをカプセル化するHWND
を提供します。 CWnd
オブジェクトは C++ ウィンドウ オブジェクトであり、Windows ウィンドウを表すが、それを含むHWND
とは異なります。 CWnd
を使用して独自の子ウィンドウ クラスを派生させるか、CWnd
から派生した多くの MFC クラスのいずれかを使用します。 クラス CWnd
は、フレーム ウィンドウ、ダイアログ ボックス、子ウィンドウ、コントロール、およびツールバーなどのコントロール バーを含むすべてのウィンドウの基本クラスです。 MFC を使用した効果的なプログラミングでは、C++ ウィンドウ オブジェクトと HWND の関係をよく理解することが重要です。
MFC には、ウィンドウの既定の機能と管理がいくつか用意されていますが、 CWnd
から独自のクラスを派生させ、そのメンバー関数を使用して提供される機能をカスタマイズできます。 子ウィンドウを作成するには、 CWnd
オブジェクトを作成し、その Create メンバー関数を呼び出してから、 CWnd
メンバー関数を使用して子ウィンドウをカスタマイズします。 CView から派生したオブジェクト (フォーム ビューやツリー ビューなど) をフレーム ウィンドウに埋め込むことができます。 また、 CSplitterWnd クラスによって提供される分割ウィンドウを使用して、ドキュメントの複数のビューをサポートできます。
クラス CWnd
から派生した各オブジェクトにはメッセージ マップが含まれています。これにより、Windows メッセージまたはコマンド ID を独自のハンドラーにマップできます。
Windows のプログラミングに関する一般的な資料は、CWnd
API をカプセル化する HWND
メンバー関数の使用方法を学習するための優れたリソースです。
CWnd で動作するための関数
CWnd
その 派生ウィンドウ クラス には、オブジェクトの初期化、基になる Windows 構造体の作成、カプセル化された 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
など) で始まる標準メッセージのハンドラーです。 メッセージの処理とマッピングでは、 メッセージとメッセージの処理について詳しく説明します。 この情報は、フレームワークのウィンドウと、特別な目的のために自分で作成したウィンドウにも同様に適用されます。
詳しく知りたいこと
デバイス コンテキスト: Windows 描画デバイスを独立させるオブジェクト
グラフィック オブジェクト: ペン、ブラシ、フォント、ビットマップ、パレット、領域