2012-05-23 3 views
0

MFC와 Windows 메시징의 개념이 생소합니다. Windows 메시지와 이벤트의 차이점이나 유사점은 무엇입니까? 사용자가 키 또는 컨트롤의 닫기 버튼을 누르면 메시지 또는 이벤트가 될지 여부를 말합니다.Windows 메시지 vs 이벤트

감사

사용자가 키를 누르면, 입력 또는 임의의 다른 형태를 수행
+0

winapi는 C 프로그래밍 언어로 지정됩니다. C는 이벤트에 대한 개념이 없습니다. 따라서 winapi는 비슷한 메시지를 구현하기 위해 메시지를 사용합니다. 그런 다음 종종 클래스 라이브러리와 같은 이벤트로 변환됩니다. 메시지 매핑 매크로를 사용할 때 MFC의 메서드 호출. 먼저 책을 읽지 않고 MFC를 사용하지 마십시오. MFC가 없으면 멀리 가지 않습니다. –

+0

"event"라는 단어가 Windows에서 많이 오버로드되었습니다. 어떤 종류의 이벤트를 언급하는지 자세히 알려주십시오. 맥락이 없다면 사람들은 대개'CreateEvent'에 의해 생성 된 "커널 이벤트"를 의미하지만 아마도 다른 것을 언급하고있을 것입니다. –

+0

.Net (이벤트)에있는 것과 동일한 개념 – ali

답변

2

, 시스템은 메시지가 큐에 메시지를 놓는다. 그런 다음 앱은 메시지 루프에서 해당 메시지를 제거하고 처리해야합니다.

많은 UI 프레임 워크가 이러한 메시지를 처리하여 이벤트로 변환합니다. 여러분이 이야기하는 이벤트는 Windows가 정의한 어떤 의미의 이벤트도 아닙니다. 이러한 이벤트의 사용은 사용중인 프로그래밍 언어/프레임 워크에 정의 된 개념을 나타냅니다. Windows events은 스레드 동기화에 사용됩니다.

최상위 메시지 루프는 다음과 같이 보일 수 있습니다 : 창 프로 시저에서

MSG msg; 
while(GetMessage(&msg, NULL, 0, 0) > 0) 
{ 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
} 

호출 DispatchMessage에 결과가 호출된다. GUI 프레임 워크는 일반적으로 해당 윈도우 프로 시저를 구현하고 메시지를 이벤트로 변환합니다.

  1. 입력 이벤트 메시지로 이어질 :

    그래서, 집행 요약이다.

  2. GUI 프레임 워크는 메시지를 이벤트로 변환합니다.
  3. 이러한 이벤트에 응답하기 위해 이벤트 처리기를 구현합니다.
+0

답장을 보내 주셔서 감사합니다.하지만 "GUI 프레임 워크가 메시지를 이벤트로 변환"한다는 것은 무엇을 의미합니까? 모든 메시지가 메시지 맵을 기반으로 자신의 처리기로 발송 될 것으로 생각했습니다. 그렇다면이 전환이 어느 부분에 들어 맞습니까? – ali

+0

일부 레퍼런스에 대한 링크와 함께 이벤트라는 용어의 의미를 정확하게 설명 할 수 있습니까? 그런 식으로 우리는 우리가 똑같은 것을 말하고 있는지 확신 할 수 있습니다. –

+0

다음 URL "메시지 처리 및 매핑"에서는 이러한 문제를 실제로 설명합니다. http://msdn.microsoft.com/de-de/library/6d1asasd(v=vs.80).aspx – mox