Das Beispiel in diesem Abschnitt enthält Teile des Codes in einer Anwendung, die erstellt und zeigt ein Kontextmenü, das dem Benutzer ermöglicht, Schriftarten und Schriftattribute festlegen. Die Anwendung zeigt das Menü im Hauptfenster Clientbereich, wenn der Benutzer die linke Maustaste klickt.
Hier ist die Menüvorlage für das Kontextmenü, das in der Anwendung Ressource-Datei bereitgestellt wird.
PopupMenu Menü beginnen POPUP "Dummy Popup" beginnen POPUP "Schriftarten" BEGIN MENUITEM "Courier", IDM_FONT_COURIER MENUITEM "Times Roman", IDM_FONT_TMSRMN MENUITEM "Swiss", IDM_FONT_SWISS MENUITEM "Helvetica", IDM_FONT_HELV MENUITEM "Old English", IDM_FONT_OLDENG Ende POPUP "Größen" beginnen 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 END POPUP "Styles" BEGIN MENUITEM "Fett", IDM_STYLE_BOLD MENUITEM "Kursiv", IDM_STYLE_ITALIC MENUITEM "Durchgestrichen", IDM_STYLE_SO MENUITEM "Hochgestellt", IDM_STYLE_SUPER MENUITEM "Tiefgestellt", IDM_STYLE_SUB Ende Ende Ende
Das folgende Beispiel gibt die Fensterprozedur und unterstützende Funktionen zum Erstellen und Anzeigen des Kontextmenüs.
LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc; / / Client Bereich POINT pt; / / Position der Maus klicken Sie auf Switch (uMsg) {case WM_LBUTTONDOWN: / / Get das umschließende Rechteck des Clientbereichs.
GetClientRect (Hwnd, (LPRECT) Amp, rc);
/ / Get Client Koordinaten für den Mausklick.
PT.x = GET_X_LPARAM(lParam);
PT.y = GET_Y_LPARAM(lParam);
/ / Wenn der Mausklick innerhalb des Client erfolgte / / Bereich, führen Sie die Anwendung definierte Funktion / / das Kontextmenü anzeigt.
Wenn (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (Hwnd, pt);
brechen;
/ / Andere Fenster-Nachrichten verarbeiten.
Standard: return DefWindowProc (Hwnd, uMsg, wParam, lParam);
} return NULL;
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU Hmenu; / / Menü Vorlage HMENU HmenuTrackPopup; / / Kontextmenü / / laden Sie die Menüvorlage, enthält das Kontextmenü aus dem / / Ressourcen der Anwendung.
HMENU = LoadMenu (Hinst, "PopupMenu");
Wenn (Hmenu == NULL) return;
/ / Get im ersten Kontextmenü in der Menüvorlage. Dies ist das / / Menü, dass TrackPopupMenu zeigt.
HmenuTrackPopup = GetSubMenu (Hmenu, 0);
/ / TrackPopup Bildschirmkoordinaten verwendet, also Konvertieren der / / Koordinaten der Maus zu klicken, um die Bildschirmkoordinaten.
ClientToScreen (Hwnd, (LPPOINT) & pt);
/ / Zeichnen und verfolgen Sie das Kontextmenü.
TrackPopupMenu (HmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, Hwnd, NULL);
/ / Menü zu zerstören.
DestroyMenu(hmenu);
}