מעבד את ההודעה WM_CONTEXTMENU

ההודעה WM_CONTEXTMENU נוצר כאשר הליך חלון של יישום העברת ההודעה WM_RBUTTONUP או WM_NCRBUTTONUP אל הפונקציה DefWindowProc . היישום אפשרות לעבד הודעה זו כדי להציג תפריט קיצור המתאים לחלק מסוים של המסך שלו. אם היישום אינו מציג תפריט קיצור, הוא צריך להעביר את ההודעה DefWindowProc לטיפול בברירת המחדל.

להלן דוגמה של עיבוד הודעה WM_CONTEXTMENU כפי שנראה כאילו בהליך חלון של יישום. S נמוכה-לפי הזמנה וסדר גבוהה intהפרמטר lParam לציין הקואורדינטות מסך של העכבר כאשר הלחצן הימני של העכבר שיצא (שים לב קואורדינטות אלה ייכנסו ערכים שליליים במערכות צגים). המוגדר על-ידי היישום OnContextMenu הפונקציה מחזירה אמת אם היא מציגה תפריט תלוי-הקשר, או שקר אם לא.

מקרה WM_CONTEXTMENU: אם (!OnContextMenu (hwnd, GET_X_LPARAM(lParam),
              GET_Y_LPARAM(lParam))) לחזור DefWindowProc (hwnd, uMsg, wParam, lParam); 
    מעבר 

 

מוגדר על-ידי יישום OnContextMenu הפונקציה הבאה מציגה תפריט קיצור אם המיקום שצוין העכבר נמצא בתוך אזור הלקוח של החלון. פונקציה מתוחכמות יותר עשוי להציג לאחד מספר תפריטים שונים, בהתאם לחלק של הלקוח צוין אזור. כדי להציג את תפריט הקיצור למעשה, דוגמה זו קורא של פונקציה מוגדרת על-ידי יישום הנקרא DisplayContextMenu. לקבלת תיאור של פונקציה זו, ראה הצגת תפריט קיצור.

BOOL WINAPI OnContextMenu(HWND hwnd, int x, int y) {RECT rc;                    / / אזור הלקוח של חלון נקודת pt = {x, y};        / / לחץ על המיקום של העכבר / / לקבל המלבן התוחם של אזור הלקוח. 
 
    GetClientRect (hwnd, כח; rc); 
 
    / / להמיר את מיקום העכבר קואורדינטות הלקוח. 
 
    ScreenToClient (hwnd, & נק'); 
 
    / / אם המיקום הוא באזור הלקוח, להציג / / בתפריט הקיצור. 
 
    אם (PtInRect (& rc, pt)) {ClientToScreen (hwnd, & נק'); 
        DisplayContextMenu (hwnd, pt); 
        החזרת TRUE; 
    } / / מחזירה FALSE אם אין תפריט מוצג. 
 
    להחזיר שקר; 
} 

 

Index