
IDR_MAINFRAME,
RUNTIME_CLASS(CMyScrollViewDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CMyScrollViewView))这个函数将文档类视类和框架类结合在一起,这个是单文档的组织形式,所以在单文档中框架类始终没有改变,所以可以动态加载菜单;
pDocTemplate = new CMultiDocTemplate(IDR_questionTYPE,
RUNTIME_CLASS(CquestionDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CquestionView))而这个是多文档的组织形式,可以看到第三个参数变成了CChildFrame,而不是CMainFrame,第一个参数也有所改变看,所以每新建一个多文档就会对应一个CChildFrame,所以动态添加的菜单不会显示在CMainFrame上,多文档不共用框架类
动态控件的创建过程:1.建立控件ID号:
ID号是控件的标识,创建控件前必须先为它设置一个ID号。
打开资源中的“String Table”,在空白行上双击鼠标,这时会d出一个ID属性对话框,在其中的ID编辑框中输入ID,如:IDC_MYBUTTON,在Caption中输入控件标题或注解(注:Caption框不能为空,为空会导致创建失败),这里我输入的是按钮上要显示的文字--动态按钮。
2.建立控件对象:
不同种类的控件应创建不同的类对象:
·按钮控件 CButton (包括普通按钮、单选按钮和复选按钮)
·编辑控件 CEdit
·静态文本控件 CStatic
·标签控件 CTabCtrl
·旋转控件 CSpinButtonCtrl
·滑标控件 CSliderCtrl
·多信息编辑控件 CRichEditCtrl
·进度条控件 CProgressCtrl
·滚动条控件 CSrcollBar
·组合框控件 CComboBox
·列表框控件 CListBox
·图像列表控件 CImageCtrl
·树状控件 CTreeCtrl
·动画控件 CAnimateCtrl
本文分步介绍了如何在应用程序中添加BCGControlBar的Ribbon控件,并且附源码。1、打开MainFrme.h,移除CBCGPMenuBar、 m_wndMenuBar、CBCGPToolBar、 m_wndToolBar。
2、对Ribbon Bar和主要的 Ribbon Button添加自定义。
1
2
CBCGPRibbonBar m_wndRibbonBar
CBCGPRibbonMainButton m_MainButton
3、添加定义面板图像列表。
1
CBCGPToolBarImages m_PanelIcons
4、打开MainFrm.cpp,移除m_wndMenuBar 和m_wndToolBar有关的东西。
5、对源添加一个Ribbon Main Button(IDB_MAIN)26X26像素的位图,小图标(16像素高度)的位图列表以及大图标(32像素高度)位图列表,并将他们命名为IDB_SMALL_ICONS和IDB_LARGE_ICONS respectively。
6、在CMainFrame::OnCreate中创建Ribbon Bar:
1
m_wndRibbonBar.Create (this)
7、初始化和设置主要的Ribbon Button:
1
2
3
4
m_MainButton.SetMenu (IDR_FILE_MENU)
m_MainButton.SetImage (IDB_MAIN)
m_MainButton.SetToolTipText (_T("File"))
m_wndRibbonBar.SetMainButton (&m_MainButton, CSize (45, 45))
8、初始化和加载面板图标的图像列表。
1
2
m_PanelIcons.SetImageSize (CSize (16, 16))
m_PanelIcons.Load (IDB_PANEL_ICONS)
9、添加第一类:
1
2
3
4
CBCGPRibbonCategory* pCategory = m_wndRibbonBar.AddCategory
(_T("&Write"), // Category name
IDB_WRITE, // Category small images (16 x 16)
IDB_WRITE_LARGE) // Category large images (32 x 32)
10、添加第一个面板到这个类别:
1
2
3
CBCGPRibbonPanel* pPanel = pCategory->AddPanel (
_T("Clipboard"), // Panel name
m_PanelIcons.ExtractIcon (0)) // Panel icon
11、添加ribbon元素到面板:
1
2
3
4
5
6
7
8
9
10
11
12
// Create the first button to Panel ("Paste"):
CBCGPRibbonButton* pPasteButton = new CBCGPRibbonButton (ID_EDIT_PASTE, _T("Paste"), -1, 0)
// The third parameter (-1) tells that this button does not have a small icon.
// Therefore the "Paste" button will be always displayed with large icon.
// Associate a popup menu with the "Paste" button:
pPasteButton->SetMenu (IDR_CONTEXT_MENU)
// Add other buttons to the panel. These buttons have small icons only:
pPanel->Add (new CBCGPRibbonButton (ID_EDIT_CUT, _T("Cut"), 1))
pPanel->Add (new CBCGPRibbonButton (ID_EDIT_COPY, _T("Copy"), 2))
pPanel->Add (new CBCGPRibbonButton (ID_EDIT_PAINT, _T("Paint"), 9))
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)