was successfully added to your cart.

peekmessage 예제

Por 02/08/2019 Sem categoria Sem comentários

경우에 따라 응용 프로그램은 스레드의 메시지 루프 외부에서 스레드 의 메시지 큐의 내용을 검사해야 합니다. 예를 들어 응용 프로그램의 창 프로시저가 긴 그리기 작업을 수행하는 경우 사용자가 작업을 중단할 수 있도록 할 수 있습니다. 응용 프로그램이 마우스 및 키보드 메시지에 대한 작업 중에 주기적으로 메시지 큐를 검사하지 않는 한 작업이 완료될 때까지 사용자 입력에 응답하지 않습니다. 그 이유는 창 프로시저가 메시지 처리를 완료할 때까지 스레드의 메시지 루프에 있는 DispatchMessage 함수가 반환되지 않기 때문입니다. 대화 상자의 컨트롤에 여러 메시지를 보낼 수 있습니다. 이러한 제어 메시지는 컨트롤의 모양, 동작 및 콘텐츠를 설정하거나 컨트롤에 대한 정보를 검색합니다. 예를 들어 CB_ADDSTRING 메시지는 콤보 상자에 문자열을 추가할 수 있으며 BM_SETCHECK 메시지는 확인란 또는 라디오 단추의 확인 상태를 설정할 수 있습니다. MSDN 설명서와 위의 예제에서 명확 하 게, Windows 내부적으로 PeekMessage 호출 하는 동안 응용 프로그램 절전 모드 못하게 하지 않습니다. 이 연구의 유효성을 검사하기 위해, 몇 가지 실제 메트릭은 결과를 지원하기 위해 얻어졌다. 이러한 호출의 가능한 영향을 시뮬레이션하기 위해 작은 응용 프로그램이 개발되었습니다. 이 응용 프로그램은 PeekMessage 또는 GetMessage 입력 창을 모니터링 하는 시간 된 기간에 대 한 호출을 사용 합니다. 샘플 응용 프로그램의 다른 버전이 빌드되어 서로 다른 호출을 하고 서로 다른 시간 동안 실행됩니다. 이 프로그램이 시스템의 전력 사용에 미치는 영향을 모니터링하기 위해 전원 평가 도구는 인텔의 모빌리티 지원 그룹에 의해 내부적으로 개발되었습니다.

이 도구는 다른 빌드를 실행하고 다른 테스트에 대한 배터리 사용량을 결정하는 데 사용됩니다. 한 빌드에서 PeekMessage 호출만 수행하고 다른 빌드는 GetMessage 호출만 수행하는 모순된 테스트입니다. 실제 응용 프로그램에서는 이러한 경우가 일부 혼합되어 있습니다. 테스트 사례의 극단적인 특성은 메시지 호출의 차이점을 강조하는 데 도움이 됩니다. 아래에 제시된 결과를 더 잘 이해하려면 전력 평가 도구에 대해 조금 알아야 합니다. 아래 표의 모드 설정은 전원 평가 도구에서 지원하는 두 가지 모드를 나타냅니다. 모드 1은 자체 종료될 때까지만 응용 프로그램을 실행합니다(응용 프로그램에는 타이밍 모양이 포함됩니다). 모드 2는 응용 프로그램을 실행한 다음 일치하는 기간 동안 배경을 모니터링하여 백그라운드 사용량과 배경 사용량을 비교하고 응용 프로그램 사용량을 결합합니다. 따라서 모드 2 테스트는 전력 사용에 대한 몇 가지 추가 통찰력을 제공할 수 있습니다. 이러한 테스트는 새 배터리가 있는 IBM T41*에서 실행되었습니다. 각 테스트는 96-98 %로 충전 된 배터리로 시작되었습니다. T41에는 인텔 IT 빌드가 설치되어 있습니다.

모니터링 소프트웨어, 지원 도구, 바이러스 스캐너 등을 포함하는 IT 빌드에 대한 자세한 내용은 부록을 참조하십시오. 다음 예제에서는 가속기를 사용하고 모덜리스 대화 상자를 표시하는 스레드에 대한 메시지 루프를 보여 주며 있습니다. TranslateAccelerator 또는 IsDialogMessage가 TRUE를 반환하면(메시지가 처리되었음을 나타내는) TranslateMessage 및 DispatchMessage가 호출되지 않습니다. 그 이유는 TranslateAccelerator 및 IsDialogMessage가 필요한 모든 메시지 번역 및 디스패치를 수행하기 때문입니다. PeekMessage 호출이 대체 코드 샘플과 Windows*에서 기대할 수 있는 개선 사항 등을 보여 주는 예제와 함께 이 백서의 배터리 수명에 영향을 미치는지 알아봅니다. 배터리 전원 이전원 장치에서 실행되는 응용 프로그램에 대한 최적화 기술을 논의할 때 일부 응용 프로그램 개발자는 이 문제에 대해 염려해야 할 필요성을 의심하거나 이해하지 못합니다.