Oppretter en hurtigmeny skriftattributter

Eksemplet i dette kapitlet inneholder deler av koden fra et program som oppretter og viser en hurtigmeny som gjør det muliggjør for brukeren å angi skrifter og skriftattributter. Programmet viser menyen i klientområdet for sin hovedvinduet når brukeren klikker venstre museknapp.

Her er den menyen mal for hurtigmenyen som er angitt i programmets ressurs-definisjonsfil.

PopupMenu menyen begynner POPUP "Dummy Popup" BEGYNNE POPUP "Skrifter" BEGYNNE MENUITEM "Courier", IDM_FONT_COURIER MENUITEM "Times Roman", IDM_FONT_TMSRMN MENUITEM "Sveitsisk", IDM_FONT_SWISS MENUITEM "Helvetica," IDM_FONT_HELV MENUITEM "Gammelengelsk", IDM_FONT_OLDENG END POPUP-tommers størrelse"BEGYNNE 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 "12", IDM_SIZE_12 MENUITEM "14" IDM_SIZE_14 slutten POPUP "Stiler" BEGYNNE MENUITEM "fet", IDM_STYLE_BOLD MENUITEM "Kursiv", IDM_STYLE_ITALIC MENUITEM "finne", IDM_STYLE_SO MENUITEM "Hevet skrift", IDM_STYLE_SUPER MENUITEM "Senket skrift", IDM_STYLE_SUB END slutten slutten 

 

Eksemplet nedenfor gir vindusprosedyre og støtter funksjoner som brukes til å opprette og vise hurtigmenyen.

 Ikke hente LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc;    / / klient området punkt pt;   / / plasseringen av musen klikker du Bytt (uMsg) {case WM_LBUTTONDOWN: / / få markeringsrammen rektanglet av klientområdet. 
 
            GetClientRect (hwnd, (LPRECT)-amp; rc); 
 
            / / Få klienten koordinater for klikket.  
 
            pt.x = GET_X_LPARAM(lParam); 
            pt.y = GET_Y_LPARAM(lParam); 
 
            / / Hvis museklikk fant sted inne klienten / / område, kjøre funksjonen programdefinert / / som viser hurtigmenyen. 
 
            Hvis (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            Break; 
        / / Behandle andre vindusmeldinger.  
 
        standard: gå tilbake til DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } return NULL; 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu;            / / menyen mal HMENU hmenuTrackPopup;  / / hurtigmenyen / / Load menyen mal som inneholder hurtigmenyen fra den / / applikasjonsressursene. 
 
    hmenu = LoadMenu (hinst, "PopupMenu"); 
    Hvis (hmenu == NULL) return; 
 
    / / Få den første hurtigmenyen i malen menyen. Dette er den / / menyen at TrackPopupMenu viser. 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup bruker skjermkoordinater, og så konvertere den / / koordinatene til musen Klikk til skjermkoordinater. 
 
    ClientToScreen (hwnd, (LPPOINT) & pt); 
 
    / / Tegne og spore hurtigmenyen.  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, (NULL); 
 
    / / Ødelegge på menyen. 
 
    DestroyMenu(hmenu); 
} 

 

Index