2011-12-01 3 views
1

아시다시피 OnIdle은 MFC UI 스레드에서 지정할 수 있습니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/1sa2f19f.aspx을 참조하십시오. 그러나 실제로 어떻게 사용할 수 있을지는 잘 모르겠습니다.CWinThread :: OnIdle은 어떻게 사용됩니까?

"ONIDLE이 스레드의 메시지 큐가 비어있을 때 기본 메시지 루프라고합니다. 자신의 배경 유휴 핸들러 작업을 호출 할 재정의 (override)를 사용합니다."위의 기준에 따르면

,

UI 스레드가 사용 중이 지 않으면 메서드가 호출됨을 알 수 있습니다. 위의 설명서에 따르면

"OnIdle이 반환 될 때까지 응용 프로그램에서 메시지를 처리 ​​할 수 ​​없기 때문에이 함수에서 긴 작업을 수행하지 마십시오."

유휴 이벤트에서 수행 할 수있는 작업은 무엇입니까? 한 가지 예이면 충분합니다. 감사합니다.

업데이트 : 한 가지 실망스러운 사실은 this old (1996) article이 CWinThread를 이해하는 데 매우 유용하다는 것입니다.

답변

1

MFC는 CWinApp::OnIdle에 대한 설명서에서 볼 수 있듯이 기본 OnIdle 처리를 사용하여 메뉴 항목과 도구 모음 단추를 사용하거나 사용하지 않도록 설정합니다. 조건 변경에 따라 이러한 항목을 활성화하거나 비활성화하는 데 명시적인 코드가 필요하지 않으며, 다른 작업이 없을 때 자동으로 발생합니다.

Windows 자체는 비슷한 전략을 사용하여 WM_PAINT 메시지를 시작합니다. 메시지 큐에 다른 메시지가 없을 때만 생성됩니다.

우선 순위가 낮은 작업을 수행 할 때이 방법을 사용합니다.

+0

OK CWinThread의 경우 CWinApp의 카운터 부분과 같이 OnIdle에서 스레드 관련 백그라운드 작업을 수행 할 수 있습니다. 감사합니다 –

+0

@ Paul, CWinApp :: OnIdle 실제로 재정의 할 수 있도록 CWinApp CWinThread에서 파생됩니다. 추신 MFC 문서화 시대에 대해 걱정하지 마십시오. 오랜 시간이 걸렸습니다. –

+0

MSDN에 대한 참조가 도움이되었습니다. 문제없이 사용할 수 있다고 생각합니다. 귀하의 답변에 감사드립니다. –

관련 문제