ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mesasage Driven 구조
    MFC 2025. 4. 1. 15:44

    윈도우 메시지란? 

    - wm_xxx 형태로 정의된 부호가 없는 정수이다.

    - 모든 윈도우 메시지는 처리 함수로 전달될 떄 메시지 자체와 관련된 매개변수(최대 2개)와 함께 전달된다.

    - 위에서 말한 최대 2개는 WPARAM, LPARAM이다.

    메시지 드라이븐 방식

    - 사용자 입력(키보드, 마우스 등) 이벤트를 OS가 감지한 후 이를 메시지로 변환해 해당 응용 프로그램(응용 프로그램 메시지 큐) 에게 전달한다.  → 예를 들어, A, B, C를 순서대로 입력했으면 큐에 A, B, C가 순서대로 들어간다. 나는 A부터 어떤 메시지가 왔는지 확인하는 느낌이다.

    - 메시지를 수신한 응용 프로그램은 메시지 큐에서 메시지를 하나씩 꺼낸 후 처리(함수 호출)하는 이벤트 루프 구조이다.

    - 응용 프로그램(Process)은 최소 1개 이상의 스레드로 구성되며 GUI를 갖는 응용 프로그램의 스레드(실행 최소 단위) 는 메시지 큐를 갖는다.

    Human Input Device에 의해 이벤트가 발생하면 OS는 이벤트를 수신하여 메시지로 변환한다.

    이 메시지는 큐에 쌓이게 되고, 이벤트 루프를 돌며 어떤 이벤트가 왔는지 확인한 후, 그에 맞는 함수를 콜백하여 이벤트를 처리한다.

     

    윈도우 프로시저 함수가 메시지 큐에서 메시지를 꺼내 1차 처리하는 함수이다.

    - 수백 종의 메시지 중 필요한 것만 식별(switch-case) 후 처리하며 등록하지 않은 경우 시스템 기본처리 규칙을 적용한다.

    ▶ MFC에서는 switch-case를 사용하지않고, Message Map을 사용하여 성능을 높인다.

    - 메시지마다 개별적인 처리 함수를 구현하는 것이 보통이며, 이를 메시지 핸들러(처리기)라 지칭한다.

    - 사용자 메뉴나 버튼 클릭시 발생하는 메시지는 구체적인 메뉴나 버튼 식별을 위해 추가적으로 ID값을 전달한다.

     

    'MFC' 카테고리의 다른 글

    솔루션, 프로젝트, 리소스  (0) 2025.04.04
    CString 클래스와 CFile 안내  (0) 2025.04.04
    MBCS와 유니코드  (0) 2025.04.03
    CPtrList, CMapStringToPtr 클래스  (0) 2025.04.03
    Win32 API 기본 로직  (0) 2025.04.01
Designed by Tistory.