Want to create all menus dynamically |
Post Reply |
Author | |
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
Posted: 10 March 2006 at 9:48am |
I want to add a new menu element dynamically and add submenus to it. I cannot use a resource. I am populating from a set of proprietary objects. So..the approach I am taking (maybe wrong - trying to learn from dynamicpopup sample - which is not really my case). Create a CXTPControlPopup derived and add it to command bar. (This part works). Now I am confused...Which ones I have to override..CalcDynamicSize,OnSetPopup or what? I can make my menu popup piece show up. But I cannot add children to it. This is simply because of lack of knowledge. I wish Dynamic Popup sample did not have the Undo bit on the main one already created then I could have just followed that example. HELP!! |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Just add new controls in this popup's commandbar: pPopup->GetCommandBar()->GetControls()->Add(...); |
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
|
void CiListOfPopupMenus::AddMenu(CiMainFrame*pMain, CiPopupMenu* pIPopupMenu,LPCTSTR szTitle) -- UPTO THIS ALL OK CXTPCommandBar *pBar = pControlPopup->GetCommandBar(); BUT NOW I GET pBar AS NULL...WHY? |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Hello, right... sorry.. by default it is NULL, just add CXTPControlPopup* pControlPopup = new CXTPControlPopup(); pControlPopup->SetCommandBar(CXTPPopupBar::CreatePopupBar (pCommandBars); or you can automatically convrert CMenu to CommandBar CMenu* pMenu = ... pControlPopup->SetCommandBar(pMenu); |
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
|
Sorry Still does not work. CXTPMenuBar*pMenuBar = pMain->GetMenuBar(); CXTPControl* pControl = new CXTPControlButton(); I did not know what you meant by pCommandBars (Understood it needs that type of object, so I replaced by pMain->GetCommandBars()) ..Maybe thats the problem? What I get is a disabled popup menu added with NO CHILDREN. However I appreciate all your help. I think we possibly need a sample app for which all the menus (or at least one menu) is constructed dynamically. I think I can usea CMenu object but do not intend to do so. |
|
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
|
Also I wanted to add this. CXTPPopupBar was created with hWnd 0 , what means creation failed? |
|
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
|
Also Tried This..Still it is disabled (Enabled Items here) void CiListOfPopupMenus::AddMenu(CiMainFrame*pMain, CiPopupMenu* pIPopupMenu,LPCTSTR szTitle)
CXTPControl* pControl = new CXTPControlButton(); |
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
You add pControlPopup with Id = 3 it means that you must use Update Handle to enable/disable it. Just use (-1) if you want to enable it. |
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
deepghosh
Groupie Joined: 10 March 2006 Location: United States Status: Offline Points: 14 |
Post Options
Thanks(0)
|
Oleg You are great. (Its fixed) I think we all appreciate your persistent help. Deep |
|
bambha
Newbie Joined: 19 June 2006 Location: United States Status: Offline Points: 9 |
Post Options
Thanks(0)
|
How can disable a menu item? I have File->New, File->Exit. How can disable Exit if my menu is created using
CXTPCommandBars* pCommandBars = GetCommandBars();
pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU);
|
|
Manik Bambha
|
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Hello,
Add update handlers. See how ON_UPDATE_COMMAND_UI work in any sample.
|
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
bambha
Newbie Joined: 19 June 2006 Location: United States Status: Offline Points: 9 |
Post Options
Thanks(0)
|
Thanks Oleg. I am able to change the text and disable it. Do you know how to delete?
|
|
Manik Bambha
|
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Hi, See Notifications sample.
|
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
bambha
Newbie Joined: 19 June 2006 Location: United States Status: Offline Points: 9 |
Post Options
Thanks(0)
|
Thanks Oleg. Its working for me now.
For people here is the code
CXTPCommandBar* pToolBar = (CXTPToolBar*)pCmdUI->m_pOther; if (pToolBar){ CXTPControl* pControl = pToolBar->GetControls()->GetAt(pCmdUI->m_nIndex); pControl->SetVisible(0); pToolBar->DelayLayout(); } |
|
Manik Bambha
|
|
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
Hi,
I'd replace it to:
CXTPControl* pControl = CXTPControl::FromUI(pCmdUI);
if (pControl)
{ pControl->SetVisible(FALSE);
}
(SetVisible already have DelayLayout _if state is really changed_)
|
|
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |