Приміром, у цьому розділі містить фрагменти коду з додатка, який створює та показує контекстне меню, що дозволяє користувачеві встановити шрифти та атрибути шрифту. Програма відображає меню в клієнтської області його головне вікно кожного разу, коли користувач натискає на ліву кнопку миші.
Ось меню шаблон для контекстне меню, яке надається у файл ресурсів визначення програми.
PopupMenu меню ПОЧАТИ СПЛИВАЮЧИХ "Пустишка меню" ПОЧАТИ спливаюче вікно "Шрифти" ПОЧАТИ MENUITEM "Кур'єр", IDM_FONT_COURIER MENUITEM "Рази Роман", IDM_FONT_TMSRMN MENUITEM "Швейцарський", IDM_FONT_SWISS MENUITEM "Гельветики", IDM_FONT_HELV елемент меню "Старий Англійська", IDM_FONT_OLDENG кінці меню "Розмір" ПОЧАТИ 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 кінець меню "Стилі" ПОЧАТИ MENUITEM "Bold", IDM_STYLE_BOLD елемент меню «Курсив», IDM_STYLE_ITALIC елемент меню «викреслити", IDM_STYLE_SO MENUITEM"Надіндекс", IDM_STYLE_SUPER MENUITEM"Підіндекс", IDM_STYLE_SUB кінці кінець кінця
Наступний приклад дає вікно процедури та допоміжні функції використовуються для створення і контекстного меню.
LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc; / / Клієнт області ТОЧКИ pt; / / розташування миші клацніть перемикач (uMsg) {випадку WM_LBUTTONDOWN: / / отримати обмежуючого прямокутника області клієнта.
GetClientRect (hwnd, (LPRECT) amp rc);
/ / Отримати клієнт координати для клацання мишею.
PT.x = GET_X_LPARAM(lParam);
PT.y = GET_Y_LPARAM(lParam);
/ / Якщо кнопки миші відбулася всередині клієнт / / область, виконувати функцію визначений у застосунку / /, який відображає контекстне меню.
Якщо (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt);
перерви;
/ / Процес інші вікна повідомлення.
за замовчуванням: повернення DefWindowProc (hwnd, uMsg, wParam, lParam);
} повернення значення NULL;
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu; / / меню шаблон HMENU hmenuTrackPopup; / / контекстного меню / / завантажити шаблон меню, що містить меню з з / / програми ресурсів.
hmenu = LoadMenu (hinst, "PopupMenu");
Якщо (hmenu = = NULL) повернутися;
/ / Отримати перший контекстного меню в меню шаблон. Це в / / відкриється меню що TrackPopupMenu.
hmenuTrackPopup = GetSubMenu (hmenu, 0);
/ / TrackPopup використовує екранних координатах, так перетворити на / / координатами миша клацніть для екранних координатах.
ClientToScreen (hwnd, (LPPOINT) & pt);
/ / Малювання та відстеження у контекстному меню.
TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
/ / Знищити меню.
DestroyMenu(hmenu);
}