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);
}