WM_CONTEXTMENU 메시지 처리

DefWindowProc 함수에 WM_RBUTTONUP 또는 WM_NCRBUTTONUP 메시지를 전달 하는 응용 프로그램의 창 프로시저 WM_CONTEXTMENU 메시지 생성 됩니다. 응용 프로그램의 스크린의 특정 부분에 적절 한 바로 가기 메뉴를 표시 하려면이 메시지를 처리할 수 있습니다. 응용 프로그램 바로 가기 메뉴를 표시 하지 않으면, 그것은 전달 해야 메시지 DefWindowProc 기본 처리에 대 한.

다음은 WM_CONTEXTMENU 메시지 처리 응용 프로그램의 창 프로시저에 표시 될 수 있습니다의 예. LParam 매개 변수의 낮은 순서와 고차 ints 때 마우스 오른쪽 단추를 마우스 화면 좌표 출시 (노트는 이러한 좌표 걸릴 수 있습니다 음수 값 시스템에 다중 모니터)를 지정 합니다. 응용 프로그램 정의 된 OnContextMenu 함수 반환 상황에 맞는 메뉴를 표시 하는 경우 TRUE 또는 FALSE 이면 하지 않습니다.

wM_CONTEXTMENU 사례: if (!OnContextMenu (hwnd, GET_X_LPARAM(lParam),
              GET_Y_LPARAM(lParam))) 반환 DefWindowProc (hwnd, uMsg, wParam, lParam); 
    브레이크 
 

다음 응용 프로그램에 정의 된 OnContextMenu 함수는 창의 클라이언트 영역 내에 지정 된 마우스 위치 경우 바로 가기 메뉴를 표시 합니다. 보다 정교한 기능 영역 지정 된 클라이언트의 부분에 따라 여러 가지 다른 메뉴 중 하나를 표시할 수 있습니다. 실제로 바로 가기 메뉴를 표시 하려면이 예제에서는 Displaycontextmenu를 호출 하는 응용 프로그램 정의 함수를 호출 합니다. 이 함수의 설명에 대 한 바로 가기 메뉴를 표시 을 참조 하십시오.

BOOL WINAPI OnContextMenu(HWND hwnd, int x, int y) {RECT rc;                    / / 클라이언트 영역의 창 포인트 pt = {x, y};        / / 마우스의 위치를 클릭 / / 클라이언트 영역의 경계 사각형을 얻을. 
 
    GetClientRect hwnd, 앰프 (rc); 
 
    / / 마우스 위치를 클라이언트 좌표로 변환 합니다. 
 
    ScreenToClient (hwnd 및 pt); 
 
    / / 클라이언트 영역에 있는 위치 이면 표시는 / / 바로 가기 메뉴. 
 
    경우 (PtInRect (rc, & pt)) {ClientToScreen (hwnd 및 pt); 
        DisplayContextMenu (hwnd, pt); 
        TRUE를 반환 합니다. 
    } / / 메뉴 없음 표시 하는 경우에 FALSE를 반환 합니다. 
 
    FALSE; 반환 
} 
 

 

Index