ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [API]Message Loop
    C/C++ 2015. 3. 12. 23:04

    메세지루프

    - 윈도우즈 프로그램에서 메시지를 처리하는 부분


    WinMain함수 끝에 존재하며, 메인윈도우를 만든후 메인함수는 메세지 루프를 실행한다.


    while (GetMessage(&Message, NULL, 0, 0)) {
    		TranslateMessage(&Message);
    		DispatchMessage(&Message);


    해당부분이 메세지루프이다.


    BOOL GetMessage()


    - 해당함수는 메시지 큐에서 메세지를 읽어들인다. 

    메세지큐란 시스템이나 ㅏ용자로부터 발생된 메세지가 잠시 대기하는 메시지 임시 저장영역이다.

    읽어들인 메세지는 GetMessage함수의 인자인 MSG구조체에 저장된다.


    읽어들인 메세지가 WM_QUIT라면 FALSE를 리턴하며 다른메세지일경우 TRUE를 리턴한다.

    QUIT가아니면 루프가 계속돌며, QUIT가 발생할시 종료된다




    BOOL TranlateMessage()


    - 해당함수는 키보드 입력메시지를 해독해 프로그램에서 쉽게 쓸수있도록한다.

    이 함수는 WM_KEYDOWN즉, 메시지가 입력되었을때 문자가입력되었다는 메시지를 만드는역할을 한다.

    Q라는 키를 입력했으면 Q가 입력되었다고 메시지를 만든다.



    BOOL DispatchMessage()


    - 해당함수는 메시지 큐에서 꺼낸 메세지를 WndProc으로 전달한다.

    메세지가 전달되면 윈도우 프로시저에서는 전달된 메세지를 확인하고 다음 동작을 결정하게된다.

    이 함수가 메세지를 전달하게되면 루프처음부분으로 돌아가 계속 반복된다.






    메세지루프에서는 메시지를 꺼내오고, 저장한후, 해독하여 프로그램에 전달하는 역할을한다.

    종료 메세지가 아니면 계속해서 무한루프로 돌게된다.

    실제로 메세지를 처리하는 함수는 WndProc이다


    'C/C++' 카테고리의 다른 글

    [API]WM_PAINT  (0) 2015.03.12
    [API]TextOut  (0) 2015.03.12
    [API]WndProc  (0) 2015.03.12
    API 기초(2)  (0) 2015.03.12
    API 기초  (0) 2015.03.12

    댓글

Designed by Tistory.