BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu* pMenuPopup)
{
if(pMenuPopup)
{
int iIndex = -1
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar()
if (!CMFCToolBar::IsCustomizeMode()&&(NULL != pMenuBar) &&(iIndex=pMenuBar->CommandToIndex(ID_EDIT_PASTE))>=0)
{
pMenuPopup->InsertSeparator(iIndex+1)
pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM_1,NULL,-1,_T("&MyItem 1")),iIndex+2)
pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM_1 + 1,NULL,-1,_T("&MyItem 2")),iIndex+3)
}
}
return TRUE
}
这个是已经过时的控件了,现在基本不用这些控件。你想用的话,需要在工具箱里面添加,在工具箱里面右击,有一个“选择项”,单击,然后在.net框架里面找到该控件,选择,确定。
在CMainFrame中建两个对象CMFCToolBar m_myToolBar //工具条
CComboBox m_comboList //下拉框
创建一个工具栏资源IDR_MYTOOLBAR,其中一个按钮id为ID_BUTTONCOMBO
在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)添加 ,代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
return -1
BOOL bNameValid
// 基于持久值设置视觉管理器和样式
OnApplicationLook(theApp.m_nAppLook)
if (!m_wndMenuBar.Create(this))
{
TRACE0("未能创建菜单栏\n")
return -1 // 未能创建
}
m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY)
// 防止菜单栏在激活时获得焦点
CMFCPopupMenu::SetForceMenuFocus(FALSE)
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n")
return -1 // 未能创建
}
if (!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_myToolBar.LoadToolBar(IDR_MYTOOLBAR ))
{
TRACE0("未能创建工具栏\n")
return -1 // 未能创建
}
CString strToolBarName
bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD)
ASSERT(bNameValid)
m_wndToolBar.SetWindowText(strToolBarName)
CString strCustomize
bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE)
ASSERT(bNameValid)
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize)
// 允许用户定义的工具栏 *** 作:
InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId)
if (!m_wndStatusBar.Create(this))
{
TRACE0("未能创建状态栏\n")
return -1 // 未能创建
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY)
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)
m_myToolBar.EnableDocking(CBRS_ALIGN_ANY)
EnableDocking(CBRS_ALIGN_ANY)
DockPane(&m_wndMenuBar)
DockPane(&m_wndToolBar)
DockPane(&m_myToolBar)
// 启用 Visual Studio 2005 样式停靠窗口行为
CDockingManager::SetDockingMode(DT_SMART)
// 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
EnableAutoHidePanes(CBRS_ALIGN_ANY)
// 启用工具栏和停靠窗口菜单替换
EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR)
// 启用快速(按住 Alt 拖动)工具栏自定义
CMFCToolBar::EnableQuickCustomization()
// if (CMFCToolBar::GetUserImages() == NULL)
// {
// // 加载用户定义的工具栏图像
// if (m_UserImages.Load(_T(".\\UserImages.bmp")))
// {
// m_UserImages.SetImageSize(CSize(16, 16), FALSE)
// CMFCToolBar::SetUserImages(&m_UserImages)
// }
// }
// 启用菜单个性化(最近使用的命令)
// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
CList<UINT, UINT>lstBasicCommands
lstBasicCommands.AddTail(ID_FILE_NEW)
lstBasicCommands.AddTail(ID_FILE_OPEN)
lstBasicCommands.AddTail(ID_FILE_SAVE)
lstBasicCommands.AddTail(ID_FILE_PRINT)
lstBasicCommands.AddTail(ID_APP_EXIT)
lstBasicCommands.AddTail(ID_EDIT_CUT)
lstBasicCommands.AddTail(ID_EDIT_PASTE)
lstBasicCommands.AddTail(ID_EDIT_UNDO)
lstBasicCommands.AddTail(ID_APP_ABOUT)
lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR)
lstBasicCommands.AddTail(ID_VIEW_TOOLBAR)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK)
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA)
CMFCToolBar::SetBasicCommands(lstBasicCommands)
int index = 0
RECT rect
//找到指定的工具项
while(m_myToolBar.GetItemID(index)!=ID_BUTTONCOMBO)
index++
//设置指定工具项的宽度并获取新的区域 80是宽度
m_myToolBar.SetButtonInfo(index, ID_BUTTONCOMBO, TBBS_SEPARATOR, 60)
m_myToolBar.GetItemRect(index, &rect)
//设置位置
// rect.top+=2
// rect.bottom += 200
rect.left = 0
rect.top = 2
rect.right = 60
rect.bottom = 200
// 创建并显示控件
if(!m_comboList.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL| CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect,
&m_myToolBar, ID_BUTTONCOMBO))
{
TRACE0("Failed to create combo-box\n")
return FALSE
}
//填充内容
m_comboList.AddString("25%")
m_comboList.AddString("50%")
m_comboList.AddString("75%")
m_comboList.AddString("100%")
m_comboList.AddString("125%")
m_comboList.AddString("150%")
m_comboList.AddString("175%")
m_comboList.AddString("200%")
//选择默认项
m_comboList.SetCurSel(3)
m_comboList.ShowWindow(SW_SHOW)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)