비트교육/API

API(6) -WinMain함수 알아보기

ballde 2020. 9. 5. 11:20

이제 WinMain을 알아보겠습니다. 

HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_EX200903));    //리소스 파일 로딩

    MSG msg;



    // 기본 메시지 루프입니다:
    while (GetMessage(&msg, nullptr, 0, 0)) //이벤트가 일어나면 큐에 하나씩 쌓이고 GetMessage로 큐에 있는것을 빠져나오게한다.
    {
       

        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))        //단축키 적용하려는 함수 
        {
            TranslateMessage(&msg);                         //키보드를 누르거나 때면 WM_CHAR 메세지를 발생시킨다. 
            DispatchMessage(&msg);                          //WinProc에 던져준다. 
        }
    }

    return (int) msg.wParam;
    
}

Message는 이벤트가 일어나면 큐에 하나씩 쌓인다. 

(큐: 자료구조의 하나로 먼저 들어간것이 먼저 빠져나온다. (first in first out => FIFO)

 

TranslateMessage는 단축키 처리함수이다. 즉 키보드를 누르거나 떼면 WM_CHAR 메세지를 발생시킨다.  

그리고 if함수에서 적용시킨다. 

DispatchMessage는 들어온 메세지를 WinProc 에 던져주는 역할을 한다. 

 

이번에는 이렇게 도움말을 눌렀을 때 나타내 주는 것과 이것을 ctrl+A로 단추키 설정 해보겠습니다.

 

 

여기에 들어가서 

정보를 더블클릭하면 메뉴편집기가 나온다. 여기서 Caption을 바꿔주면 된다. 

단축키 설정도 바꾸고자 하는 ID와 보조키 + 키를 설정해 주면 된다.