C++ 是否可以从类中的主项目调用switch case语句,该类已包含在主项目中?
我在visualc++环境中定义了一个MfC项目,并为此项目编写了switch-case语句。然后,我包含了一个类,它由一个C++ 是否可以从类中的主项目调用switch case语句,该类已包含在主项目中?,c++,class,visual-c++,switch-statement,C++,Class,Visual C++,Switch Statement,我在visualc++环境中定义了一个MfC项目,并为此项目编写了switch-case语句。然后,我包含了一个类,它由一个OnPaint()handle消息组成,可能会刷一些东西 之后,在主项目的切换案例中,我使用一个对象调用了这个OnPaint()函数。现在,我将为onPaint()函数设置一个条件,如果发生这种情况,请使用具有此类的笔刷,否则使用其他颜色。 因此,我想知道是否有可能从主项目的一个类中调用switch case语句 void Myclass::OnPaint() {
OnPaint()
handle消息组成,可能会刷一些东西
之后,在主项目的切换案例中,我使用一个对象调用了这个OnPaint()
函数。现在,我将为onPaint()
函数设置一个条件,如果发生这种情况,请使用具有此类的笔刷,否则使用其他颜色。
因此,我想知道是否有可能从主项目的一个类中调用switch case语句
void Myclass::OnPaint()
{
CPaintDC dc(this); // device context for painting
//@TG
//#3073
// TODO: Add your message handler code here
// Do not call CStatic::OnPaint() for painting messages
CRect rect;
GetClientRect(&rect);
switch(StatusFunction)
{
case 1:
dc.FillSolidRect(&rect, RGB(255, 0, 0));
}
case 2:
{
dc.FillSolidRect(&rect, RGB(0, 255, 0));
}
}
更新:
我认为控制失效并不能解决问题。这个类被定义为绘制一个图片控件,因为我为这个图片控件定义了一个变量,比如cpicutrectrm\u Pc
位于对话框(在Visual C++中)上,然后驱动一个类来绘制该控件(名为cpicutrectr)。在驱动类中,定义了OnPaint()句柄消息。在switch case语句的一种情况下,我调用了OnPaint(),如下所示:
m_Pc.EnableWindow(TRUE);
m_Pc.Invalidate();
然而问题是,在一种情况下,当这些代码行启用时,驱动类中的OnPaint()函数使用这一行:
dc.FillSolidRect(&rect,RGB(255,0,0))代码>。我只是尝试在相同的OnPaint()函数中设置一个条件来读取dc.FillSolidRect(&rect,RGB(0,255,0))
,当另一种情况发生时,它会更改同一图片控件的颜色。一般来说,您可以将switch
语句提取到一个方法中,并调用该方法。或者在特定情况下,您可能希望为case1
变量设置一个setter,然后使用CWnd::invalidate()
使视图无效。这将调用OnPaint
方法。非常不清楚您在问什么。。。不能“调用开关语句”。也许发布一些相关的代码可以澄清您想知道的内容。为什么您希望在if语句中添加一个开关?我包括了OnPaint()
Function@drescherjm因为在这些情况下,这个OnPaint()调用函数来绘制某些控制器。包含OnPaint函数的类需要有一个成员变量,如“StatusFunction”变量。设置该变量以控制绘制的颜色。是的,可以在同一类中提取switch语句,但是现在我尝试从属于该类的子类的类中调用此switch语句,它有错误并且需要switch参数(在这种情况下,switch参数是主类中定义的函数)。问题已更新。我正试图从一个类调用此开关语句,该类是该类的子类。难道你不能直接失效以强制绘制吗?@Braian just callthis->Invalidate()就像我说的,来自你的子类。这将导致调用OnPaint
。@Braian您需要在控件上设置一个布尔变量,它将构成OnPaint
内部开关的基础。