基本ウィンドウクラス

HomeC++ Class Library[LIB-BASE]

 ダウンロード : BaseWindow.zip (2006/03/25) 

Programming Tips で人気の基本ウィンドウクラスを別配布としました。
今後、VALGUS 製 Win32SDK レベルコントロールクラスでウィンドウが必要な場合は、本クラスを使用します。
そのため、BaseWindow.h, BaseWindow.cpp が被った場合は、いずれか一つを使用すれば問題ありません。

リファレンス

  1. CBaseWindow を使用する前提条件

    VC++ と VC++ 以外で一部ソースを変更する必要があります。

    ■Visual C++

    BaseWindow.h

    #pragma once
    #include
     "stdafx.h"     // VC++以外は不要
    //#include "windows.h"  // VC++以外で必要


    BaseWindow.cpp

    #include "stdafx.h"     // VC++以外は不要
    #include "BaseWindow.h"



    ■Visual C++ 以外

    BaseWindow.h

    //#pragma once
    //#include "stdafx.h"   // VC++以外は不要
    #include "windows.h"    // VC++以外で必要


    BaseWindow.cpp

    //#include "stdafx.h"   // VC++以外は不要
    #include "BaseWindow.h"



    ■ 派生前提

    本クラスは派生されることを前提に設計されています。
    派生クラスでは必ずインスタンス別ウィンドウプロシージャをオーバーライドしてください。

    最も単純な派生例を示します。


    class CDerivedWindow : public CBaseWindow {
    private:
        LRESULT WndProcLocal(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
    };

    ※ 必要に応じてコンストラクタ、デストラクタ、各種メンバを追加します。


  2. 実体化

    コンストラクタには全てデフォルトが設定されていますが、通常は各自で適切な値を指定してください。


        // コンストラクタ
        CBaseWindow(
            HWND    hParent   // 親のウィンドウハンドル
            TCHAR*  strClass  // クラス名
            DWORD   dwStyle   // ウィンドウスタイル
            DWORD   dwExStyle // 拡張ウィンドウスタイル
            DWORD   dwIcon    // アイコン
        );

    • 親のウィンドウハンドル
      デフォルトは NULL。必要なら設定してください。
      なお、WS_CHILDWINDOW は自動で付加されません。 必要に応じて別途ウィンドウスタイルを設定してください。

    • クラス名
      デフォルトは CBaseWindow。変更が必要なら指定してください。
      なお、複数インスタンスに対応するため、クラス名に自動的に固有識別コードが付加されます。

    • ウィンドウスタイル
      デフォルトは WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_BORDER。
      変更が必要なら指定してください。

    • 拡張ウィンドウスタイル
      デフォルトは NULL。必要なら設定してください。

    • アイコン
      デフォルトは NULL。必要なら設定してください。
      なお、アイコンはリソース番号を記述してください。
      ※ クラス内部で LoadIcon() しています。


  3. ウィンドウプロシージャ処理

    派生クラス内の WndProcLocal() にて各種メッセージ処理を行ってください。
    処理が必要ないメッセージは return CBaseWindow::WndProcLocal(...); としてください。
    ※ ...には正しく変数を記述してください ^-^;

  4. ウィンドウハンドルの取得

    MFC の同機能メソッドと同じ名称 GetSafeHwnd() で取得できます。
    取得した HWND を利用して DestroyWindow() 等のウィンドウを破棄するような処理を行わないでください。


  5. 消滅

    CBaseWindow のデストラクタは virtual 指定されていますので、必要に応じてオーバーライドしてください。
    ウィンドウの削除そのものに関しては CBaseWindow が自動的に処理します。


 Copyright 2005 VALGUS. All Rights Reserved.