메시지 큐에서 창 메시지의 우선 순위를 프로그래밍 방식으로 확인하는 방법이 있습니까?창 메시지의 우선 순위 결정
예 : 일부 창 메시지, WM_PAINT
및 WM_TIMER
이 가장 낮은 우선 순위를 가지며 우선 순위가 가장 높은 메시지 뒤에 배치됩니다.
두 메시지 중 어느 메시지가 가장 낮은 우선 순위 또는 가장 높은 우선 순위를 갖거나 어떤 메시지가 처음 또는 마지막으로 보내지는지 확인할 수있는 무언가를 찾고 있습니까?
메시지 큐에서 창 메시지의 우선 순위를 프로그래밍 방식으로 확인하는 방법이 있습니까?창 메시지의 우선 순위 결정
예 : 일부 창 메시지, WM_PAINT
및 WM_TIMER
이 가장 낮은 우선 순위를 가지며 우선 순위가 가장 높은 메시지 뒤에 배치됩니다.
두 메시지 중 어느 메시지가 가장 낮은 우선 순위 또는 가장 높은 우선 순위를 갖거나 어떤 메시지가 처음 또는 마지막으로 보내지는지 확인할 수있는 무언가를 찾고 있습니까?
그것은 작동 방식이 아닙니다. Windows 메시지에는 우선 순위가 붙어 있지 않습니다. 대부분 메시지가 생성되는 방식에 따라 결정됩니다. 메시지 루프는 순서로 메시지를 전달합니다
'창 상태에서 합성 됨'절은 WM_PAINT 및 WM_TIMER의 우선 순위가 낮게 표시되는 것입니다. 그리고 마우스를 빠르게 움직여도 메시지 대기열에 마우스 메시지가 넘치지 않는 이유는 무엇입니까? 그러나 배타적이지는 않습니다. 예를 들어 UpdateWindow()를 호출하여 WM_PAINT 메시지를 보내 강제로 '높은 우선 순위'로 전달할 수 있습니다.
합성 된 메시지의 개념을 알지 못했습니다. 내가 더 많이 알 수있는 곳을 아십니까? 나는 Petzold를 읽었으나 나는 그러한 뉘앙스에 대해 언급하지 않았다. –
@David - 죄송합니다. 이것은 10 년 반 전에 읽은 자료입니다. 나는이 잡지가 출판 된 것을 기억하지 못한다. 그들은 오래 전에 사라져 버렸다. –
@David : WM_TIMER, MSDN docs http://msdn.microsoft.com/en-us/library/ms644902(v=vs.85).aspx - "메시지가 GetMessage 또는 PeekMessage 함수에 의해 게시됩니다."는 의미입니다. 실제 타이머가 만료되어 대기열에 직접 게시되는 것이 아니라 필요할 때마다 생성됩니다. 비슷한 문구가 WM_PAINT와 함께 존재하는 것처럼 보입니다. 또한 http://support.microsoft.com/kb/96006은 "WM_TIMER 및 WM_PAINT 메시지는 부울 토글로 생각할 수 있습니다."라고 설명합니다. 나는 그것이 Petzold에 있다고 생각하지 않지만 Raymond Chen의 블로그에 한 번 등장합니다. – BrendanMcK
가능한지 여부에 관계없이 메시지의 순서에 따라 API 계약의 적용을받지 않는 항목을 사용하고 있습니다. 이로 인해 프로그램이 차기 버전의 Windows (또는 WINE과 같은 다른 구현)에서 손상 될 위험이 있습니다. 하지 마. –