Vytvorenie kontextovej ponuke atribúty písma

Príklad v tomto oddiele obsahuje časti kódu z aplikácií, ktoré vytvorí a zobrazí sa kontextová ponuka, ktorá umožní používateľovi nastaviť písma a atribúty písma. Aplikácia zobrazí menu do klientskej oblasti jej hlavné okno vždy, keď používateľ klikne na ľavé tlačidlo myši.

Tu je ponuka šablóny pre kontextovú ponuku, ktorá je uvedená v žiadosti zdrojov definičný súbor.

PopupMenu MENU začať POPUP „figurína Popup"začať POPUP"Písmo"začať MENUITEM"Kuriér"IDM_FONT_COURIER MENUITEM"Times Roman", IDM_FONT_TMSRMN MENUITEM"Švajčiarsko", IDM_FONT_SWISS MENUITEM"Helvetica"IDM_FONT_HELV MENUITEM"Stará anglický"IDM_FONT_OLDENG konca POPUP"Veľkosti"začať 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 koniec POPUP "Styles" začať MENUITEM "Tučné" IDM_STYLE_BOLD MENUITEM "Kurzíva", IDM_STYLE_ITALIC MENUITEM "prečiarknuté", IDM_STYLE_SO MENUITEM "Horný" IDM_STYLE_SUPER MENUITEM "Dolný index", IDM_STYLE_SUB koniec koniec koniec 
 

V nasledujúcom príklade dáva okno postup a podporných funkcií, ktoré sa používa na vytváranie a zobraziť kontextovú ponuku.

 LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc;    / / pt bod klienta oblasti;   / / umiestnenie myši kliknite na položku Prepnúť (uMsg) {prípad WM_LBUTTONDOWN: / / získať ohraničovacieho rámčeka do klientskej oblasti. 
 
            GetClientRect (hwnd, amp (LPRECT), rc); 
 
            / / Získať klient súradnice pre kliknutím myši.  
 
            PT.x = GET_X_LPARAM(lParam); 
            PT.y = GET_Y_LPARAM(lParam); 
 
            / / Ak kliknutím myši sa uskutočnilo vo vnútri klienta / / plochu, spustiť funkciu definovanom aplikáciou / / ktorý zobrazuje v kontextovej ponuke. 
 
            Ak (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            prerušiť; 
        / Procesu iné okno správy.  
 
        predvolené: návrat DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } Vráti hodnotu NULL; 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu;            / / ponuku šablónu HMENU hmenuTrackPopup;  / / kontextovej ponuke / / načítať šablónu ponuku kontextová ponuka z / / aplikácie zdroje. 
 
    hmenu = LoadMenu (hinst, "PopupMenu"); 
    Ak (hmenu == NULL) návratu; 
 
    / / Získať prvý kontextovej ponuke v ponuke šablóne. Je to / / zobrazí ponuka tohto TrackPopupMenu. 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup používa obrazovkových súradniciach, takže konverzia / / súradnice myši kliknite na obrazovke súradnice. 
 
    ClientToScreen (hwnd (LPPOINT) & pt); 
 
    / / Kreslenie a sledovať v kontextovej ponuke.  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL); 
 
    / / Zničiť menu. 
 
    DestroyMenu(hmenu); 
} 
 

Index