2012-09-26 16 views
7

में मेनू को निकालना एमएफसी में पीओपीयूपी प्रकार के मेनू-आइटम को कैसे निकालें। RemoveMenu() या तो आईडी या स्थिति ले लो। चूंकि, पीओपीयूपी मेनू के लिए कोई आईडी नहीं है, स्थिति का उपयोग करके बाएं विकल्प है।एमएफसी

लेकिन मुझे यह नहीं मिल रहा है कि मैं RemoveMenu() को कैसे और कहां कॉल कर सकता हूं।

 
File Edit Test 
      Test_submenu_1 
      Test_submenu_2 
      Test_submenu_3 > submenu_3_item_1 
      Test_submenu_4 
      Test_submenu_5 

मैं Test_submenu_3 को हटाना चाहता हूं? मैं टेस्ट के लिए सीएमएनयू ऑब्जेक्ट को कैसे प्राप्त नहीं कर रहा हूं ताकि मैं submenu_3_item_1 के लिए स्थिति "2" पास करके RemoveMenu() को कॉल कर सकूं।

ऐसा करने के लिए कोई सुझाव बहुत सराहना की जाएगी।

धन्यवाद!

उत्तर

7

आप लोडमेनू का उपयोग नहीं कर सकते, क्योंकि यह फ़ंक्शन बस यही करता है।

लोड किए गए मेनू को संशोधित करने के बाद यह तब होता है जब मेनू ऑब्जेक्ट लोड करने के लिए उपयोग किया जाता है, यह दायरे से बाहर हो जाता है। आपको वर्तमान में उपयोग किए जाने वाले मेनू को संशोधित करना होगा।

आपका मेनू मुख्य मेनू का एक पॉपअप हिस्सा है, स्थिति में दूसरा। इसमें 5 आइटम हैं और दूसरा एक और पॉपअप है। मेरी समझ के लिए, आप इस आइटम और इस आइटम के पॉपअप को हटाना चाहते हैं।

CMenu* pMenu = GetMenu(); // get the main menu 
CMenu* pPopupMenu = pMenu->GetSubMenu(2);//(Test menu with item....) 
pPopupMenu->RemoveMenu(2, MF_BYPOSITION); 
बेशक

, इस कोड को मुख्य फ्रेम से है: यह काम आप वर्तमान मेनू के लिए मुख्य विंडो पूछने के लिए होगा बनाने के लिए। यदि आप इसे कहीं और उपयोग करना चाहते हैं, तो आपको मुख्य फ्रेम पर पॉइंटर का उपयोग करके सभी तक पहुंच प्राप्त करनी होगी।

0

'टेस्ट' शीर्ष स्तर मेनू पर तीसरा मेनू आइटम (स्थिति द्वारा) है। इसे लंबवत रूप से क्षैतिज रूप से प्रस्तुत किया गया है। मान लें कि आपके पास शीर्ष स्तर मेनू पर एक हैंडल है, उसी कोड का उपयोग करें जिसका उपयोग आप उप मेनू प्राप्त करने के लिए करेंगे, क्योंकि आपको 'टेस्ट' मेनू प्राप्त करना होगा।

0

नीचे आज़माएं। आपको टेस्ट सब-मेन्यू पहले (इंडेक्स 2) मिलता है, फिर एक बार जब आप इसे अपने test_submenu_3 सबमेनू को स्थिति (2) द्वारा निकालने के लिए कहते हैं।

CMenu topMenu; 
topMenu.LoadMenu(IDR_YOUR_MENU); 
CMenu& testSubMenu = *topMenu.GetSubMenu(2); 
testSubMenu.RemoveMenu(2,MF_BYPOSITION); 
संबंधित मुद्दे