Criando um Menu de atalho atributos de fonte

O exemplo nesta seção contém porções de código de um aplicativo que cria e exibe um menu de atalho que permite ao usuário definir atributos de fonte e tipos de letra. O aplicativo exibe o menu na área de cliente da sua janela principal sempre que o usuário clica no botão esquerdo do mouse.

Aqui está o modelo de menu para o menu de atalho que é fornecido no arquivo de definição de recurso do aplicativo.

PopupMenu MENU começar a POPUP "Dummy Popup" começar a POPUP "Fontes" começar MENUITEM "Courier", IDM_FONT_COURIER MENUITEM "Times Roman", IDM_FONT_TMSRMN MENUITEM "Swiss", IDM_FONT_SWISS MENUITEM "Helvetica", IDM_FONT_HELV MENUITEM "Inglês antigo", IDM_FONT_OLDENG final POPUP "Tamanhos" começar 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 final POPUP "Estilos" começar MENUITEM "negrito", IDM_STYLE_BOLD MENUITEM "Itálico", IDM_STYLE_ITALIC MENUITEM "riscar", IDM_STYLE_SO MENUITEM "Sobrescrito", IDM_STYLE_SUPER MENUITEM "Subscrito", IDM_STYLE_SUB END END END 

 

O exemplo a seguir fornece o procedimento de janela e apoiar funções usadas para criar e exibir o menu de atalho.

 LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc;    / / cliente área ponto pt;   / / local do mouse, clique em Alternar (uMsg) {case WM_LBUTTONDOWN: / / Get o retângulo delimitador da área cliente. 
 
            GetClientRect (hwnd, amp (LPRECT), rc); 
 
            / / Obter o cliente coordenadas para o clique do mouse.  
 
            pt.x = GET_X_LPARAM(lParam); 
            pt.y = GET_Y_LPARAM(lParam); 
 
            / / Se o clique do mouse teve lugar dentro do cliente / / área, execute a função application-defined / / que exibe o menu de atalho. 
 
            se (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            quebra; 
        / / Processo de outras mensagens de janela.  
 
        padrão: retornar DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } retornar NULL; 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu;            / / modelo menu HMENU hmenuTrackPopup;  / / menu de atalho / / carregar o modelo de menu que contém o menu de atalho da / / recursos do aplicativo. 
 
    HMENU = LoadMenu (hinst, "PopupMenu"); 
    se (hmenu = = NULL) return; 
 
    / / Obter o primeiro menu de atalho no modelo de menu. Este é o / / menu exibe essa TrackPopupMenu. 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup usa coordenadas de tela, então converter o / / coordenadas do mouse clique em coordenadas de tela. 
 
    ClientToScreen (hwnd, (LPPOINT) & pt); 
 
    / / Desenhar e controlar o menu de atalho.  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL); 
 
    / / Destrói o menu. 
 
    DestroyMenu(hmenu); 
} 

 

Index