0

C++ で directx の GUI を開発しています。コントロール用のクラスがあります:

class cControl;

私のウィンドウのクラス:

class cWindow : public cControl

私がやりたいのは、特別な種類のウィンドウ (カラー ピッカー) のクラスを作成することです。

class cColorPicker : public cWindow

colorpicker クラスのコンストラクターは、cControl 関数のみを呼び出します。すべてのウィンドウの gui ルーチンで設定するには、次のコードを使用します。

for each( cWindow* pWindow in m_vWindows )
    // stuff

デバッグで気付いたのは、位置、幅、高さ、およびカラーピッカー コンストラクターで設定したすべての結果が null であることです。

編集:私がやりたいのは、ウィンドウの幅、高さなどを設定するコンストラクターを持つ特別なウィンドウを持つことです。これでうまくいきますか?

cColorPicker::cColorPicker( int x, int y )
{
    cWindow::cWIndow( x, y, ... )
}

EDIT2: 2 番目の問題: cWindow クラス (ウィンドウにコントロールを追加する関数) から関数を呼び出す必要がありますが、問題も発生するようで、cColorPicker のコンストラクター内で実行する必要があると思います。

4

1 に答える 1

1

パラメータでベースオブジェクトを初期化するには、メンバー初期化子リストを使用する必要があります

cColorPicker::cColorPicker(int x, int y)
: cWIndow( x, y, ... ), width(42),height(42) 
{
}

編集:基本コンストラクターに追加のパラメーターを追加する場合は、cColorPick コンストラクターからその基本に渡す必要があります。

cColorPicker::cColorPicker(int x, int y, cControl* pControl)
: cWIndow( x, y, pControl, ...), width(42),height(42) 
{
}

// edit or create a new cWindow constructor to accept CControl* parameter
cWIndow::cWIndow(int x, int y, cControl* pControl)
:width(x), height(y), m_vControls(pControl)
{
}
于 2013-08-17T23:00:38.983 に答える