Index
George Orwell Folwark zwierzęcy (17)
w obronie wiary 17.phtml
rok 2027 17 19 (2)
rozdzial 17 (56)
start (17)
36 (17)
03 (17)
301 17 (2)
141 17 (2)
abc.com.pl 4
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • migi.xlx.pl

  • [ Pobierz caÅ‚ość w formacie PDF ]
    .wynika, ¿e MFC bêdzie mia³o doœæ czasu na wykonanie w³asnych zadañ, zanim funkcja zwróci wartoœæ FALSE.Bardzo wa¿ne jest, aby zdawaæ sobie sprawê, ¿e ka¿dy kod wykonywany wewn¹trz ja³owej pêtli wp³ywa na zdolnoœæ aplikacji do rozprowadzania komunikatów.Kod dzia³aj¹cy wewn¹trz tej pêtli powinien dzia³aæ bardzo szybko.Jeœli trzeba, rozbij zadanie na mniejsze, ³atwiejsze do przetworzenia fragmenty i wykonuj je w kolejnych wywo³aniach funkcji Onidle ( ).Poni¿sza funkcja Onidle ( } rozpoczyna dzia³anie, gdy ICount osi¹gnie wartoœæ 2 i kontynuuje je a¿ do momentu, w którym funkcja DoidieWorko zwróci wartoœæ FALSE wskazuj¹c¹, ¿e ju¿ wszystko zosta³o zrobione:BOOL CMyApp: : Onidle ( LONG 1Count )CWinApp: : Onidle ( 1Count) BOOL bContinue = TRUE; if ( 1Count > 2 )bContinue = DoIdleWorl();// Przetwarzanie w czasie ja³owymreturn bContinue;}Program OnldleDemoProgram Onldledemo, którego fragmenty zosta³y przedstawione na listingu 17.2, pokazuje, w jaki sposób przes³oniæ i wykorzystaæ funkcjê Onidle o.Przedstawia wartoœci numeryczne parametru 1Count oraz czas, jaki up³yn¹³ od wyzerowania tego licznika.Wygl¹d programu przedstawiono na rysunku 17.2.Program rysuje tak¿e pasek stanowi¹cy graficzny wskaŸnik iloœci czasu, jak¹ program spêdza w funkcji Onidie ( ).Poruszaj¹c myszk¹ lub wykonuj¹c ró¿ne operacje zwi¹zane z oknem, na przyk³ad zmieniaj¹c jego rozmiary, powodujesz, ¿e pasek siê kurczy.Oznacza to, ¿e komunikaty oczekuj¹ce w kolejce redukuj¹ iloœæ czasu, jaki program mo¿e poœwiêciæ wykonywaniu funkcji omdle ( ).OnldleDemoPo³o¿enie na p³ytce CD-ROM: OnldleDemo Modu³y kodu Ÿród³owego w tekœcie: OnldleDemo.cppListing 17.2.Fragmenty programu OnldleDemo __________________________// OnldleDemo.cpp : Defines the class behaviors // for the application.////////////////////////////////////////////////////// COnIdleDemoApp commandsDWORD dwTotal = O, dwldle = O, dwFirst, dwLast;BOOL COnldleDemoApp: rOnldle (LONG 1Count) {CWinApp: :0nldle (1Count) ;// Jeœli dwTotal == O, to oznacza pierwszy raz // i musimy zarejestrowaæ dwFirst.if( dwTotal == O )dwFirst = GetTickCount () ;// Pobieramy bie¿¹ce tykniêcie zegara.DWORD dwTemp = GetTickCount ();// Obliczamy dwTotal, czyli ca³kowit¹ iloœæ tykniêæ zegara // od pierwszego razu w funkcji Onldle().Dodajemy l, gdy¿ l/ za pierwszym razem dwTotal wynosi zero i spowodowa³oby to // dzielenie przez zero.Ta zmiana nie wp³ynie w wiêkszym // stopniu na wyniki, gdy¿ bêdziemy mieli do czynienia // z doœæ du¿ymi liczbami.dwTotal = dwTemp - dwFirst + 1;// If 1Count != O to oznacza, ¿e nie musieliœmy// pomin¹æ przetwarzania w czasie ja³owym.To znaczy, ¿e// musimy dodaæ do dwldle czas, jaki up³yn¹³ od pierwszego// razu.If 1Count == O, to oznacza, ¿e aplikacja przetworzy³a// jakieœ komunikaty i nie wesz³a do funkcji Onldle().Z tego// powodu w tym przypadku nie dodajemy czasu, gdy¿ zosta³ on// zu¿yty na przetworzenie komunikatu.if( 1Count != O )dwldle += ( dwTemp - dwLast );// Zarejestrowanie w dwLast czasu rozpoczêcia obliczeñ.dwLast = dwTemp;// Potrzebujemy kontekstu urz¹dzenia, wiêc odwo³amy siê do // klasy CMainFrame, a nastêpnie COnIdleDemoView.Korzystaj¹c // z niej, stworzymy obiekt CClientDC do rysowania.CMainFrame *pFrame =(CMainFrame *) AfxGetMainWnd(); COnIdleDemoView *pView =(COnldleDemoView *) pFrame->GetActiveView(}; CClientDC ClientDC( pView );// Obliczenie procentu i zachowanie go w zmiennej// lokalnej, aby nie trzeba go by³o obliczaæ ponownie.int nPercent = dwldle * 100 / dwTotal;// Formatowanie ³añcucha i wyrysowanie go w oknie.CString strlnfo;strlnfo.Format( "Czas ja³owy:%ld Czas ca³kowity:%ld, %%:%d dwldle, dwTotal, nPercent ); ClientDC.TextOut( 10, 10, strlnfo );// Pobranie prostok¹ta obszaru roboczego widoku.// Przeskalujemy graf, tak aby dobrze pasowa³ do okna,// bez wzglêdu na jego rozmiary.RECT Rect;pView->GetClientRect( &Rect );// Zmniejszymy graf z ka¿dej strony, aby nie dochodzi³// do krawêdzi okna i aby znajdowa³ siê tu¿ pod tekstem.// D³ugoœæ grafu obliczamy jako otrzymany procent czasu// ja³owego.Rect.left += 10;Rect.top += 40;int nRight = Rect.right - 10;Rect.bottom = Rect.top + 20;int nWidth = nRight - Rect.left;nWidth = nWidth * nPercent / 100;Rect.right = Rect.left + nWidth;// Rysowanie niebieskiego prostok¹ta wskazuj¹cego // iloœæ czasu spêdzonego w funkcji OnIdleU.CBrush BlueBrush{ RGB( O, O, 255 ) ); ClientDC.FillRect( &Rect, SBlueBrush );// Rysowanie bia³ego prostok¹ta na prawo od// niebieskiego w celu wymazania poprzedniej// wartoœci paska.Rect.left = Rect.right;Rect.right = nRight;CBrush WhiteBrush( RGB( 255, 255, 255 ) ) ;ClientDC.FillRect( &Rect, SWhiteBrush );return( TRUE );}PodsumowaniePoznaliœmy dwa bardzo u¿yteczne mechanizmy Windows: timery oraz przetwarzanie w czasie ja³owym.Z ich pomoc¹ mo¿esz tworzyæ aplikacje ca³y czas reaguj¹ce na polecenia u¿ytkownika, lecz jednoczeœnie wykonuj¹ce w tle swoje zadanie.S¹ one tak popularne, ¿e któregoœ z nich bêdziesz u¿ywa³ w prawie ka¿dej swojej aplikacji.Zarz¹dzanie pamiêci¹ Dokumenty, widoki i SDI Uk³ad aplikacji MDI Wydruk i podgl¹dwydruku MFC i elementyzaawansowanegointerfejsu u¿ytkownika Paski stanu i paskinarzêdzi Kontrolka widoku drzewai kontrolka widoku listy W¹tki [ Pobierz caÅ‚ość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aceton.keep.pl
  • 
    Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl.