gpt4 book ai didi

c++ - Ribbon UI动态按钮菜单编辑

转载 作者:行者123 更新时间:2023-11-30 05:33:40 26 4
gpt4 key购买 nike

我有一个带有功能区 UI 的应用程序。在此 UI 中,存在一个带有附加菜单的按钮。我想要做的是从按钮处理程序访问菜单以动态添加和删除菜单项。

void
CMyScrollView::OnMenuButtonHandler ()
{
// TODO: Add your command handler code here
CMFCRibbonBar *pRibbon = ((CMDIFrameWndEx*)GetTopLevelFrame())GetRibbonBar()
// Control ID_BTN_EDIT_MENU
// This where I would like to isolate and vary menu contents
}

最佳答案

在 CMainFRame 窗口中,为 AFX_WM_ON_BEFORE_SHOW_RIBBON_ITEM_MENU 消息 (ON_REGISTERED_MESSAGE) 创建处理程序。

检查按钮的 ID。删除所有以前的项目并添加一个你想要的。

LRESULT CMainFrame::OnBeforeShowRibbonItemMenu(WPARAM,LPARAM lp)
{
CMFCRibbonBaseElement *pElement = reinterpret_cast<CMFCRibbonBaseElement*>(lp);

// Try to get our menu button
switch (pElement->GetID())
{
case ID_RIBBON_DROPDOWN_BUTTON:
{
CMFCRibbonButton *pButton = DYNAMIC_DOWNCAST(CMFCRibbonButton, pElement);
if (pButton)
{
// MY_LIST copntains members with the ID and the text: m_uiCmdId, m_strTitle
const MY_LIST &list = ....;
if (list.size()!=0)
{
pButton->RemoveAllSubItems();

for (it = list.begin(); it!=list.end(); ++it)
pButton->AddSubItem(new CSomeKindOfRibbonButton(it->m_uiCmdId, it->m_strTitle));
}
}
...

关于c++ - Ribbon UI动态按钮菜单编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34628972/

26 4 0