CWinApp::OnIdle

가상 BOOL OnIdle ( 긴 lCount );

반환 값

Nonzero 받을 더 유휴 처리 시간; 더 이상 유휴 시간이 필요한 경우 0。

매개 변수

lCount

OnIdle 때마다 증가 하는 카운터는 응용 프로그램의 메시지 큐가 비어 있으면 호출 됩니다. 이 개수가 0 새 메시지가 처리 될 때마다 재설정 됩니다. LCount 매개 변수를 사용 하 여 응용 프로그램이 메시지를 처리 하지 않고 유휴 되었습니다 상대 기간 결정。

주의

유휴 시간 처리를 수행 하려면이 멤버 함수를 재정의 합니다. 응용 프로그램의 메시지 큐가 비어 있으면 기본 메시지 루프에서 OnIdle 라고 합니다. 귀하의 재정의 사용 하 여 자신의 배경 유휴 처리기 작업 호출。

OnIdle 유휴 처리 시간이 필요 하다는 나타내는 0을 반환 해야 합니다. LCount 매개 변수는 각 시간 증가 호출 OnIdle messagenbsp; 큐가 비어와 새 메시지가 처리 될 때마다 0으로 다시 설정 합니다. 이 값에 따라 다른 유휴 루틴을 호출할 수 있습니다(&N).

다음 요약 유휴 루프 처리:

  1. 마이크로소프트 파운데이션 클래스 라이브러리에 메시지 루프 메시지 큐를 확인 하 고 보류 중인 메시지 아니 발견 하는 경우 호출 OnIdle application 개체 및 소모품 0 lCount 인수에 대 한。

  2. OnIdle일부 처리를 수행 하 고 반환을 할 그것을 나타내기 위해 0이 아닌 값을 다시 호출 해야 추가 처리。

  3. 메시지 루프는 메시지 큐를 다시 확인합니다. 호출 하는 보류 중인 메시지가 없는 경우 OnIdle lCount 인수를 다시 증가。

  4. 결국, OnIdle 모든 유휴 작업 처리를 종료 하 고 0을 반환 합니다. 이 호출을 중지 메시지 루프를 알려줍니다 OnIdle 메시지 대기열에서 다음 메시지를 받을 때까지 유휴 사이클 인수와 함께 다시 시작 지점 설정 tonbsp; 0(&N)。

응용 프로그램 OnIdle 반환 될 때까지 사용자 입력을 처리할 수 없습니다 때문에 OnIdle 동안 긴 작업을 수행 하지 마십시오。

메모nbsp;??명령 메뉴 항목 및 도구 모음 단추와 같은 사용자 인터페이스 개체를 업데이트 하는 OnIdle 의 기본 구현 하 고 내부 데이터 구조 정리를 수행 합니다. 따라서, OnIdle재정의 하는 경우 호출 해야 합니다 CWinApp::OnIdle lCount 와 함께 재정의 된 버전. 처음 호출 하는 모든 기본 클래스 유휴 처리 (즉, 기본 클래스 OnIdle 반환 될 때까지 0). 기본 클래스 처리를 완료 하기 전에 작업을 수행 해야 하는 경우 귀하의 작업을 수행 하는 동안 적절 한 lCount 선택 하려면 기본 클래스 구현을 검토합니다(&N)。

예제

다음 두 예제 OnIdle사용 하는 방법을 보여 줍니다. 첫 번째 예에서는 두 개의 유휴 작업 lCount 인수를 사용 하 여 작업을 우선 순위를 처리 합니다. 첫 번째 작업은 우선 순위가 높은 하 고 가능 하면 그것을 어떻게 해야 합니다. 두 번째 작업 덜 중요 하 고 거기에 사용자 입력에 긴 일시 중지 하는 경우에 이루어져야 한다. Note OnIdle의 기본 클래스 버전을 호출 합니다. 두 번째 예에서는 다른 우선순위와 유휴 작업 그룹 관리。

BOOL CMyApp::OnIdle(LONG lCount)
{
 nbsp;? BOOL bMore = CWinApp::OnIdle(lCount);

경우 (lCount = = 0)
 ?? {
 ?? 추적 ("응용 프로그램 time\n의 짧은 기간에 대 한 유휴");
 ?? bMore = TRUE;
 ?? }
 ?? else if (lCount = = 10)
 ?? {
 ?? 추적 ("응용 프로그램 time\n의 긴 시간 동안 유휴 상태");
 ?????? bMore = TRUE;
 ?? }
 ?? else if (lCount = 100)
 ?? {
 ?????? 추적 ("응용 프로그램 time\n의 더 긴 금액에 대 한 유휴");
 ?????? bMore = TRUE;
 ?? }
 ?? else if (lCount = 1000)
 ?? {
 ?????? 추적 ("응용 프로그램 time\n 꽤 오랜 기간 동안 유휴");
 ??? / / Bmore을 true로 설정 하지 않으면, 더 이상 필요 없는 유휴
 ??? / / 중요: 이후 CWinApp::OnIdle 수 있습니다 Bmore을 false로 설정 되지 않은
 ??? / / 더 많은 유휴 작업을 완료 합니다.
 ?? }

반환 bMore;
 ??? / / TRUE를 반환 하는 만큼 더 유휴 작업
}(&N)

두 번째 예제

// 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 개요 |nbsp; 클래스 멤버 (ko) | 계층 구조 차트(&N)

Index