창 프로시저 디자인

다음 예제에서는 일반적인 창 프로시저의 구조를 보여 줍니다. 창 프로시저에서는 스위치 문의 메시지 인수를 사용 하 여 별도 사례 문을 처리 하는 개별 메시지와 함께. 공지 각각의 경우 각 메시지에 대 한 특정 값을 반환 합니다. 창 프로시저 DefWindowProc 함수를 호출 하는 메시지를 처리 하지 않습니다,.

LRESULT 콜백 MainWndProc (
    HWND hwnd, / / 창 핸들
    UINT uMsg / / 메시지 식별자
    WPARAM wParam / / 처음 메시지 매개 변수
    LPARAM lParam) / 초당 메시지 매개 변수
{스위치 (uMsg) {WM_CREATE 경우: / / 초기화 합니다. 
            0; 반환 
 
        WM_PAINT 사례: / / 윈도우의 클라이언트 영역을 페인트 합니다. 
            0; 반환 
 
        WM_SIZE 사례: / / 크기와 창의 위치를 설정 합니다. 
            0; 반환 
 
        WM_DESTROY 사례: / / 창 관련 데이터 개체를 정리 합니다. 
            0; 반환 
 
        / / / / 다른 메시지를 처리 합니다. 
        / / 기본: DefWindowProc (hwnd, uMsg, wParam, lParam); 반환 
    } 0; 반환 
} 
 

귀하의 창을 만든 후에 그냥 하지만 응용 프로그램 CreateWindowEx 함수 실패 하면 FALSE를 반환 하 여이 메시지에 응답 하는 경우 보낸 WM_NCCREATE messageis. 당신의 창이 이미 만든 후 WM_CREATE 메시지 전송 됩니다.

당신의 창이 소멸 되려고 할 때 WM_DESTROY 메시지 전송 됩니다. 파괴 되 고 창의 모든 자식 창 파괴 DestroyWindow 함수를 다룬다. 창이 소멸 직전 WM_NCDESTROY 메시지가 보내집니다.

아주 최소한 창 프로시저를 처리 해야 합니다 WM_PAINT 메시지를 자체를 그릴. 일반적으로, 그것 뿐만 아니라 마우스 및 키보드 메시지를 처리 해야 합니다. 창 프로시저 그들을 처리 해야 하는지 여부를 확인 하려면 개별 메시지에 대 한 설명은 참조 하십시오.

응용 프로그램의 메시지 처리의 일부로 DefWindowProc 함수를 호출할 수 있습니다. 이러한 경우에, 응용 DefWindowProc, 메시지 전달 하기 전에 메시지 매개 변수를 수정할 수 있습니다. 또는 그것은 기본 자체 작업을 수행한 후 처리를 계속할 수 있습니다.

대화 상자 프로시저 WM_CREATE 메시지 대신 WM_INITDIALOG 메시지를 수신 하 고 DefDlgProc 함수를 처리 되지 않은 메시지를 전달 하지 않습니다. 그렇지 않으면 대화 상자 프로시저는 정확 하 게 창 프로시저와 동일.

 

Index