Form1->Repaint();
for(int i=0; i<10000000000; i++);
если его запустить и потом открыть поверх приложения любое другое - то наше приложение закрачиться и будет не красиво
если его модифицировать во так
for(int i=0; i<10000000000; i++)
{
Form1->Repaint();
}
То в каждой итерации форма будет перерисовываться
и будет мелькать
А как сделать чтобы форма перерысовывалась только тогда когда нужно?
Ну для начала посмотри для Формы событие OnActivate. Потом можешь попробовать написать обработчик для виндовых сообщений(см. MSDN).
Поповоду сообщений Windows - Это Windows передает сообщение программе о том что ей передан фокус или что то другое и где можно взять все сообщения виндовс
Windows - система управляемая сообщениями, поетому любое событие которое в системе происходит порождает туеву хучу сообщений. В том случае который тебя интересует скорее всего необходимо обрабатывать WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED etc.А читать про ето лучше всего в MSDN(Microsoft Software Developers Network) на дисках продается и отдельно и в составе Visual Studio. Если собираешься более менее серьезно программить под винду то без нее не обойтись.
Application->ProcessMessages(); }
}
Цитата:
Originally posted by Joker
for(int i=0; i<10000000000; i++){
Application->ProcessMessages(); }
}
for(int i=0; i<10000000000; i++){
Application->ProcessMessages(); }
}
Application->ProcessMessages()- будет притормажевать цикл, поэтому срабатывание
ProcessMessages() лучше сделать с каким-нибудь
интервалом.
:)
Объясните пожалуйста на примере
Цитата:
Originally posted by SEDEGOFF
Объясните пожалуйста на примере
Объясните пожалуйста на примере
ProcessMessages() позволяет приложению обрабатывать различный собщения и события.
Если ты к примеру сделал цикл
for(inti=0;i<1000000000;i++){
//что-нибудь
},
запустил, и в момент работы попробовал переместиь форму мышкой, то у тебя ничего не получится. Или раскрыл поверх другое окно, а потом закрыл - твоя форма не прорисуется, пока не закончится цикл.
А если в тело цикла вставить ProcessMessages(), то прога будет реагировать на перетаскивание, изменение размера и т.п.