|
|
|
новичок
      
участник
Last Login: 04.04.2003 23:08
Сообщ.: 3,
Visits: 34
|
|
| В С# как можно до api добраться? У меня при перерисовке форма моргает - просто ужаSS. WM_EraseBckgrnd как нибудь можно выдернуть? или в С# где то в другом месте копать нужно??
|
|
|
|
|
Supreme Being
      
участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908,
Visits: 21 011
|
|
WM_EraseBckgrnd можно выдернуть в процедуре WndProc, надо унаследовать нужный контрол, и в нем написать что-то типа:
const int WM_ERASEBKGND = 0x0014; protected override void WndProc(ref System.Windows.Forms.Message m) { if(m.Msg == WM_ERASEBKGND) { //что-то сделать } else { //вызвать обработку по-умолчанию base.WndProc(ref m); } }
А вообще-то проблемы с перерисовкой формы обычно решаются с помощью вызова Application.DoEvents() непосредственно перед долговыполняющейся функции, которая мешает форме сразу же перерисоваться и форма ждет, когда закончится выполнение этой функции, чтобы перерисоваться (обычно это бывает, когда в событии OnLoad прописывается что-то долгое). Если это так (событие OnLoad), то правильнее будет перенести код из этого события в отдельный метод и вызывать его до показа формы, типа:
Form form=new Form(); form.LongMethod(); form.Show();
|
|
|
|