2012-10-15 43 views
3

我遇到了一些问题,有些电脑(很少)在使用我们的应用程序时开始闪烁。我发现了一些奇怪的代码,在我们的应用程序的主要形式有:屏幕闪烁问题

protected override CreateParams CreateParams 
    { 
     get 
     {     
      var cp = base.CreateParams; 
      cp.ExStyle |= 0x02000000;//composite window. Composite windows do not render/flickr when controls are born. This speeds up loading. 
      return cp; 
     } 
    } 

的代码似乎是从网上source,他们警告来源:

你应该知道的事实,但是,这只适用于 环境,其中WM_PAINT中的所有控件绘制(层次结构内)都是 。使用其他/异步方式将 渲染到层次结构中的控件中的应用程序可能会存在导致不需要的行为的问题。

WM_PAINT究竟是什么?他们的意思是所有的控件都需要通过win32 API调用来绘制,或者这是在Load事件中正常发生的事情吗?

有一个说法说,代码被添加到减少有关闪烁的错误报告......我只是想知道他们是否把这个婴儿洗出来的洗澡水。

+4

参见[这个答案] TRY(http://stackoverflow.com/a/2613272/719186)。 – LarsTech

+0

WM_PAINT是Win32 Paint消息...在WinForms中表现为Control.Paint。 –

+0

在构造函数中使用this解决了在我的情况下闪烁:SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint,true); – aliassce

回答