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:第二个问题:我必须从 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 回答