Crearea unui meniu de comenzi rapide atribute Font

Exemplul din această secțiune conține porțiuni de cod dintr-o aplicație care creează și afișează un meniu de comenzi rapide care permite utilizatorului pentru a seta fonturile și atributele fonturilor. Aplicarea afișează meniul în zona clientului său fereastra principală, atunci când utilizatorul face clic pe butonul din stânga al mausului.

Aici este meniul șablon pentru meniul de comenzi rapide care este furnizat în resurse-definiție a aplicației.

PopupMenu meniul începe POPUP "Dummy Popup" începe POPUP "Fonturi" începe MENUITEM "Curier", IDM_FONT_COURIER MENUITEM "Ori Roman", IDM_FONT_TMSRMN MENUITEM "Elvețian", IDM_FONT_SWISS MENUITEM "Helvetica", IDM_FONT_HELV MENUITEM "Romanian vechi", IDM_FONT_OLDENG sfârșitul POPUP "Dimensiuni" începe 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 sfârșitul POPUP "Stiluri" începe MENUITEM "Bold", IDM_STYLE_BOLD MENUITEM "Italic", IDM_STYLE_ITALIC MENUITEM "trebuie", IDM_STYLE_SO MENUITEM "Exponent", IDM_STYLE_SUPER MENUITEM "Indice", IDM_STYLE_SUB sfârșitul sfârșitul sfârșitul 

 

Exemplul următor dă procedura fereastră și sprijinirea Funcții utilizate pentru a crea și afișa meniul de comenzi rapide.

 LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc;    / / client zona punctul pt;   / / Poziția mausului, faceți clic pe Comutare (uMsg) {caz WM_LBUTTONDOWN: / / Get dreptunghiului de încadrare din zona de client. 
 
            GetClientRect (hwnd, (LPRECT) amp rc); 
 
            / / Get client coordonate pentru clic de maus.  
 
            pt.x = GET_X_LPARAM(lParam); 
            pt.y = GET_Y_LPARAM(lParam); 
 
            / / Dacă faceți clic pe mouse-ul a avut loc în interiorul client / / zona, executați funcția de aplicarea-definite / / care afișează meniul de comenzi rapide. 
 
            Dacă (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            pauză; 
        / / Procesul de alte mesaje de fereastra.  
 
        implicit: return DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } Întoarce NULL; 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu;            / / meniul șablon HMENU hmenuTrackPopup;  / / meniul de comenzi rapide / / încărca șablonul meniul care conține meniul de comenzi rapide din / / resurse aplicației. 
 
    hmenu = LoadMenu (hinst, "PopupMenu"); 
    Dacă (hmenu == NULL) reveni; 
 
    / / A lua primul meniul de comenzi rapide din meniul șablon. Acest lucru este / / afișează meniul care TrackPopupMenu. 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup utilizează coordonatelor de ecran, astfel încât conversia / / coordonate de mouse-ul faceți clic pentru a coordonatelor de ecran. 
 
    ClientToScreen (hwnd, (LPPOINT) & pt); 
 
    / / Trage și urmări în meniul de comenzi rapide.  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL); 
 
    / / Distruge meniul. 
 
    DestroyMenu(hmenu); 
} 

 

Index