﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / .NET / C#  / WinApi в C# или как избавиться от мерцания формы при перерисовке / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Thu, 08 Jan 2009 15:25:29 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: WinApi в C# или как избавиться от мерцания формы при перерисовке</title><link>http://relib.com/forums/Topic778170-26-1.aspx</link><description>WM_EraseBckgrnd можно выдернуть в процедуре WndProc, надо унаследовать нужный контрол, и в нем написать что-то типа:&lt;BR&gt;[code]&lt;BR&gt;const int WM_ERASEBKGND = 0x0014;&lt;BR&gt;protected override void WndProc(ref System.Windows.Forms.Message m)&lt;BR&gt;		{&lt;BR&gt;			if(m.Msg == WM_ERASEBKGND)&lt;BR&gt;			{&lt;BR&gt;				//что-то сделать&lt;BR&gt;			} else {&lt;BR&gt;                             //вызвать обработку по-умолчанию&lt;BR&gt;			    base.WndProc(ref m);&lt;BR&gt;                         }&lt;BR&gt;		}&lt;BR&gt;[/code]&lt;BR&gt;А вообще-то проблемы с перерисовкой формы обычно решаются с помощью вызова Application.DoEvents() непосредственно перед долговыполняющейся функции, которая мешает форме сразу же перерисоваться и форма ждет, когда закончится выполнение этой функции, чтобы перерисоваться (обычно это бывает, когда в событии OnLoad прописывается что-то долгое). Если это так (событие OnLoad), то правильнее будет перенести код из этого события в отдельный метод и вызывать его до показа формы, типа:&lt;BR&gt;[code]&lt;BR&gt;Form form=new Form();&lt;BR&gt;form.LongMethod();&lt;BR&gt;form.Show();&lt;BR&gt;[/code]</description><pubDate>Mon, 31 Mar 2003 13:57:00 GMT</pubDate><dc:creator>Sergik</dc:creator></item><item><title>WinApi в C# или как избавиться от мерцания формы при перерисовке</title><link>http://relib.com/forums/Topic778170-26-1.aspx</link><description>В С# как можно до api добраться? У меня при перерисовке форма моргает - просто ужаSS. WM_EraseBckgrnd как нибудь можно выдернуть? или в С# где то в другом месте копать нужно??</description><pubDate>Sun, 30 Mar 2003 22:41:00 GMT</pubDate><dc:creator>McSimm</dc:creator></item></channel></rss>