שאלה ב-MFC - מחיקת Popup Menu

Peekaboo

New member
שאלה ב-MFC - מחיקת Popup Menu

מישהו יודע איך ניתן למחוק MenuItem מסוג POPUP מתוך Popup Menu? לדוגמא, אם על ה-Desktop מקליקים על המקש הימני, נפתח תפריט שהפריט הלפני אחרון שלו הוא New שהוא בעצמו גם POPUP, וכשמקליקים עליו נפתח עוד תת תפריט. כעת אני רוצה למחוק את ה-New. הבעיה היא שאין לו שם מזהה, אז איך בעצם אפשר לתפוס אותו? ניסיתי לפי מיקום אבל הוא אפילו לא מוגדר כ-MENUITEM, אז לא הלך... אופן הגדרת התפריט בקובץ ה-rc מצורף, כאשר הפריט אותו אני מעוניינת למחוק הוא ה-Custom Action. תודה
 

אלדד27

New member
מה שאת צריכה לעשות זה...

לקבל *CMenu לתפריט הכללי (כלומר, ל - Popup menu שלך), ואז לעשות:
pAnimalMenu = pMenu->GetSubMenu(0); pAnimalMenu->DeleteMenu(5, MF_BYPOSITION);​
(ה - 5 זה בגלל שה - position של ה - Custom Action הוא 5 בתפריט שלך)
 

ברנדל

New member
מה שכן

אם יצרת את התפריט הקופץ באופן הבא
CMenu theMenu; theMenu.CreatePopupMenu( ) ;​
אז אין לך צורך ב GetSubMenu. theMenu זה כבר המצביע
 

Peekaboo

New member
תודה רבה, ושאלה נוספת...

כיצד אוכל לקבל את מיקומו של האובייקט בתוך התפריט? כלומר, במקום לכתוב מפורשות DeleteItem(5,MF_BYPOSITION), קודם לקבל איכשהו את המיקום לתוך משתנה Pos ואז לעשות DeleteItem(Pos,MF_BYPOSITIN)
 

אלדד27

New member
הדרך היחידה שמצאתי היא -

את יכולה לעשות לולאה מ-0 עד ל - GetMenuItemCount, בכל פעם את עושה GetSubMenu לפי ה - pos הנוכחי, אח"כ GetMenuString על התוצאה של GetSubMenu, ואם התוצאה המתקבלת זהה למחרוזת שאת מחפשת (נניח, "Custom Action", ואל תשכחי אמפרסנד - "&" - אם שמת כזה), אז יש לך את ה-pos הנכון.
 
למעלה