我正在为C ++中的directx开发GUI。 我的控件有一个类:
class cControl;
我的窗户的课程:
class cWindow : public cControl
我想要做的是为一种特殊的窗口(颜色选择器)编写一个类。
class cColorPicker : public cWindow
colorpicker类的构造函数只调用cControl函数。 要在每个窗口的gui例程中进行设置,我使用以下代码:
for each( cWindow* pWindow in m_vWindows )
// stuff
我注意到调试的是位置,宽度,高度以及我在colorpicker构造函数中设置的所有内容都为null。
编辑: 我想要做的是有一个特殊的窗口,其中包含一个构造函数,用于设置(例如)窗口的宽度,高度等。 这会起作用吗?
cColorPicker::cColorPicker( int x, int y )
{
cWindow::cWIndow( x, y, ... )
}
EDIT2: 第二个问题: 我必须从cWindow类(一个向窗口添加控件的函数)中调用一个函数,但它似乎也给出了问题,我想我必须在cColorPicker的构造函数中完成它。
答案 0 :(得分:1)
您应该使用member initializer list使用参数
初始化基础对象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)
{
}