sanal bool ONIDLE ( uzun lCount );
Dönüş değeri
Sıfır olmayan daha boş işlem zaman almak için; daha fazla boş zaman gerekiyorsa, 0.
Parametreleri
lCount
Uygulamanın ileti sırası boş olduğunda her zaman ONIDLE artan bir sayaç adı verilir. Bu sayı, her zaman yeni bir mesaj işlenir 0 olarak sıfırlanır. Uygulama bir ileti işleme olmadan boşta zaman göreceli uzunluğunu belirlemek için lCount parametresini kullanabilirsiniz.
Açıklamalar
Boşta kalma süresi işlem gerçekleştirmek için bu üye işlevi geçersiz. Uygulamanın ileti sırası boş olduğunda ONIDLE varsayılan ileti döngü denir. Kendi arka plan boş işleyicisi görevleri aramak için geçersiz kılma kullanın.
O&NIDLE boş işlem zaman gerekli olduğunu belirtmek için 0 dönmelidir. LCount parametresi her zaman artırılır ONIDLE zaman denir messagenbsp; sıra boş ve yeni bir ileti işleme her zaman 0 olarak sıfırlar. Sen-ebilmek seslenmek bu sayısına göre farklı, boşta yordamları.
Aşağıda özetlenmektedir boşta döngü işleme:
OnIdle Uygulama nesnesi ve malzemeleri 0 olarak lCount.OnIdlebazı işlemleri yapar ve bunu belirtmek için sıfır dışında bir değer denilen yeniden yapmak için verir daha fazla işleme.OnIdle yine, lCount bağımsız değişkenini arttırım.OnIdle Tüm boşta görevlerinin işlemeyi tamamladıktan ve 0 döndürür. Bu çağrı durdurmak için ileti döngüsü söyler OnIdle Sonraki iletiyi ileti sırasından alınana kadar boşta döngüsü yeniden argümanı ile hangi noktada tonbsp ayarla; 0.ONIDLE dönünceye kadar uygulamanızın kullanıcı girişi işleyemiyor çünkü uzun görevleri sırasında ONIDLE yapmayacak.
&Notnbsp;ONIDLE varsayılan uygulanması menü öğeleri ve araç çubuğu düğmeleri gibi komutu kullanıcı arabirimi nesneleri güncelleştirir ve iç veri yapısı Temizleme gerçekleştirir. ONIDLEgeçersiz kılabilir, bu nedenle, size CWinApp::OnIdle ile lCount geçersiz kılınmış sürümünüzde çağırmalısınız. Öncelikle tüm temel sınıf boşta işlem çağrısı (başka bir deyişle, temel sınıf ONIDLE 0 döndürür kadar). İş Bankası-sınıf işlenmesi tamamlanmadan önce yapmanız, uygun lCount sırasında işinizi yapmak için seçmek için temel sınıf uygulaması inceleyin.
Örnek
Aşağıdaki iki örnek ONIDLEkullanmayı gösterir. İlk örnek, iki boşta görevlerinin görevleri öncelik lCount bağımsız değişkenini kullanarak işler. İlk görevi yüksek önceliğidir ve sen-meli yapmak o zaman mümkün. İkinci görev, daha az önemli olduğunu ve yalnızca kullanıcı girişi uzun bir duraklama olduğunda yapılmalıdır. ONIDLEtemel sınıf sürümü çağrısı unutmayın. İkinci örnek boşta görevlerinin farklı önceliklere sahip bir grup yönetir.
Bool CMyApp::OnIdle(LO&NG lCount)
{
nbsp; bool bMore = CWinApp::OnIdle(lCount);
Eğer (lCount == 0)
{
İZ ("App TIME kısa bir süre için boşta");
bMore = true;
}
else if (lCount == 10)
{
İZ ("App TIME uzun tutar için boşta");
bMore = true;
}
else if (lCount == 100)
{
İZ ("App TIME daha da uzun süre miktarı için boşta");
bMore = true;
}
else if (lCount == 1000)
{
İZ ("App TIME oldukça uzun süre için boşta");
/ / bMore true değerine ayarlı değil, artık boşta gerek
/ / Önemli: bMore ayarlı değil yanlış olarak CWinApp::OnIdle Mayıs beri
/ / tamamlamak için daha fazla boşta görevlerinin olması.
}
return bMore;
/ / var olduğu sürece herhangi bir fazla boşta görevlerinin true döndürür
}
İkinci örnek
// In this example, four idle loop tasks are given various
// opportunities to run:
// Task1 is always given a chance to run during idle time, provided
// that no message has queued up while the framework was processing
// its own idle loop tasks (at lCount levels 0 and 1).
// Task2 is given a chance to run only if Task1 has already run,
// provided that no message has queued up while Task1 was running.
// Task3 and Task4 are given a chance to run only if both Task1 and
// Task2 have already run, and no message has queued up in the mean
// time. If Task3 gets its chance to run, then Task4 always gets
// a chance to run immediately after Task3.
BOOL CMyApp::OnIdle(LONG lCount)
{
// In this example, as in most applications, you should let the
// base class CWinApp::OnIdle complete its processing before you
// attempt any additional idle loop processing.
if (CWinApp::OnIdle(lCount))
return TRUE;
// The base class CWinApp::OnIdle reserves the lCount values 0
// and 1 for the framework's own idle processing. If you wish to
// share idle processing time at a peer level with the framework,
// then replace the above if-statement with a straight call to
// CWinApp::OnIdle; and then add a case statement for lCount value
// 0 and/or 1. Study the base class implementation first to
// understand how your idle loop tasks will compete with the
// framework's idle loop processing.
switch (lCount)
{
case 2:
Task1();
return TRUE; // next time give Task2 a chance
case 3:
Task2();
return TRUE; // next time give Task3 and Task4 a chance
case 4:
Task3();
Task4();
return FALSE; // cycle through the idle loop tasks again
}
return FALSE;
}
CWinApp genel bakış |nbsp; Sınıf üyeleri | Hiyerarşi çizelgesi