我在 visual C ++ 环境中定义了 MfC 项目,并为此项目编写了switch case语句。然后我包含了一个由OnPaint()
句柄消息组成的类,可以刷一些东西。
之后,我通过使用对象在主项目的Switch案例中调用了此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));
}
}
更新
我认为使用Invalidate控件无法解决问题。这个类被定义为绘制一个Picture控件,因为我为这个图片控件定义了一个变量,如CPictureCtr m_Pc;
,它位于一个对话框(在Visual C ++中),然后一个类被驱动只绘制这个控件(命名为CPictureCtr )。在驱动类中定义了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))
,当另一个案例发生时,它会改变相同图片控件的颜色。
答案 0 :(得分:1)
通常,您可以将switch
语句提取到方法中,然后调用该方法。或者在您的特定情况下,您可能希望使用case1
变量的setter,然后使用CWnd::Invalidate()
使视图无效。这将调用OnPaint
方法。