글꼴 특성 바로 가기 메뉴 만들기

이 섹션의 예제에서는 만들고 사용자가 글꼴 및 글꼴 특성을 설정할 수 있도록 하는 바로 가기 메뉴를 표시 하는 응용 프로그램에서 코드의 부분을 포함 합니다. 마우스 왼쪽된 단추를 클릭할 때마다 응용 프로그램의 주 창의 클라이언트 영역에 있는 메뉴를 표시.

여기는 응용 프로그램의 리소스 정의 파일에서 제공 되는 바로 가기 메뉴의 메뉴 서식 파일.

PopupMenu 메뉴 시작 팝업 "더미 팝업" 시작 팝업 "글꼴" 시작 MENUITEM "택배" IDM_FONT_COURIER MENUITEM "시간 로마", IDM_FONT_TMSRMN MENUITEM "스위스" IDM_FONT_SWISS MENUITEM "Helvetica" IDM_FONT_HELV MENUITEM "영어" IDM_FONT_OLDENG 끝 "크기" 팝업 시작 MENUITEM "7", IDM_SIZE_7 MENUITEM "8", IDM_SIZE_8 MENUITEM "9", IDM_SIZE_9 MENUITEM "10", IDM_SIZE_10 MENUITEM "11"IDM_SIZE_11 MENUITEM IDM_SIZE_12 "12" MENUITEM "14", IDM_SIZE_14 끝 팝업 "스타일" 시작 MENUITEM "굵게", IDM_STYLE_BOLD MENUITEM "기울임꼴" IDM_STYLE_ITALIC 밖으로 MENUITEM "파업", IDM_STYLE_SO MENUITEM "첨자" IDM_STYLE_SUPER MENUITEM "첨자" IDM_STYLE_SUB 끝 끝 끝 
 

다음 예제에서는 창 프로시저를 생성 하 고 바로 가기 메뉴를 표시 하는 데 사용 하는 기능을 지원.

 LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc;    / / 클라이언트 영역 포인트 pt;   / / 마우스의 위치 클릭 스위치 (uMsg) {WM_LBUTTONDOWN 경우: / / 클라이언트 영역의 경계 사각형을 얻을. 
 
            GetClientRect hwnd, (LPRECT) 앰프 (rc); 
 
            / / 마우스 클릭에 대 한 클라이언트 좌표를 얻을.  
 
            pt.x = GET_X_LPARAM(lParam); 
            pt.y = GET_Y_LPARAM(lParam); 
 
            / / 클라이언트 안에 일어나는 마우스 클릭 하는 경우 / / 영역, 응용 프로그램 정의 함수를 실행 / / 바로 가기 메뉴를 표시 하는. 
 
            경우 (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            휴식 시간; 
        / / 다른 창 메시지를 처리 합니다.  
 
        기본값: DefWindowProc (hwnd, uMsg, wParam, lParam); 반환 
    } NULL; 반환 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu;            / / 메뉴 템플릿 HMENU hmenuTrackPopup;  / / 바로 가기 메뉴 / / 서식 파일 로드 합니다 메뉴에서 바로 가기 메뉴를 포함 하는 / / 응용 프로그램의 리소스. 
 
    hmenu = LoadMenu (hinst, "PopupMenu"); 
    경우 (hmenu = = NULL) 반환; 
 
    / / 메뉴 서식 파일의 첫 번째 바로 가기 메뉴를 얻을. 이것은 / / 메뉴는 TrackPopupMenu 표시 됩니다. 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup 화면 좌표를 사용 하 여, 그래서 변환 합니다 / / 마우스의 좌표를 화면 좌표로 클릭 합니다. 
 
    ClientToScreen (hwnd (LPPOINT) 및 pt); 
 
    / / 그리고 바로 가기 메뉴를 추적 합니다.  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN (ko) | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd NULL); 
 
    / / 메뉴를 파괴 합니다. 
 
    DestroyMenu(hmenu); 
} 
 

 

Index