版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工具栏、形状栏和组合栏工具栏、形状栏和组合栏参考书参考书第12章1.1 创建和初始化工具栏创建和初始化工具栏由于工具栏是运用程序的主框架窗口的子窗口,通常随框架窗口的创建而创建,所以普通在框架窗口类中添加一个CToolBar成员,并在框架窗口的OnCreate函数中调用CToolBar:Create。如:m_wndToolBar.Create (this, WS_CHILD WS_VISIBLE CBRS_BOTTOM); 或m_wndToolBar.Create (this); m_wndToolBar.SetBarStyle (m_wndToolBar.GetBarStyle () &am
2、p; CBRS_TOP) CBRS_BOTTOM);1.2 为工具栏添加文字为工具栏添加文字在资源中双击工具栏的图标,修正图标大小为40,19在创建工具栏的代码下参与如下代码m_wndToolBar.SetButtonText(0,_T(New);m_wndToolBar.SetButtonText(1,_T(Open);m_wndToolBar.SetButtonText(2,_T(Save);m_wndToolBar.SetButtonText(4,_T(Cut);m_wndToolBar.SetButtonText(5,_T(Copy);m_wndToolBar.SetButtonTex
3、t(6,_T(Paste);m_wndToolBar.SetButtonText(8,_T(Print);m_wndToolBar.SetButtonText(10,_T(Help);m_wndToolBar.SetSizes(CSize(48,42),CSize(40,19);/第一个size是BUTTON的大小,第二个size是图标的大小。在添加文本后再调用SetSizes()1.3 修正工具栏的款式修正工具栏的款式CToolBar:SetButtonStyle创建复选按纽,使之不断处于下陷的形状直到再一次单击之。m_wndToolBar.SetButtonStyle(1,TBBS_CHE
4、CKBOX);注:当程序处置了ON_UPDATE_COMMAND_UI音讯,并调用CCmdUI:SetCheck,那么规范按纽会转换为复选按纽。1.3 修正工具栏的款式修正工具栏的款式CToolBar:SetButtonStyle创建单项选择按纽,它们不断处于下陷形状,直到该组中的其它单按纽被按下。m_wndToolBar.SetButtonStyle(5,TBBS_CHECKGROUP);m_wndToolBar.SetButtonStyle(5,TBBS_CHECKGROUP);m_wndToolBar.SetButtonStyle(5,TBBS_CHECKGROUP);此时5、6、7为一
5、组单项选择按纽,它们之中只需一个被选中。1.3 修正工具栏的款式修正工具栏的款式CToolBar:GetState(), CToolBar: SetState()给工具栏添加单项选择按纽时,应在每组中选中一个成员作为默许按纽,如下代码所示。int nState = m_wndToolBar.GetToolBarCtrl().GetState(ID_BUTTON_A);/得到按纽的形状,能否可用,能否被按下,能否被选中等等m_wndToolBar.GetToolBarCtrl().SetState(ID_BUTTON_A,nState|TBSTATE_CHECKED);/假设该按纽没有被选中,那
6、么设置为选中形状。1.4 固定式和浮动式工具栏固定式和浮动式工具栏CControlBar:EnableDocking(.)m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)EnableDocking(CBRS_ALING_ANY)DockControlBar(&m_wndToolBar):停靠在默许位置,顶部DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_RIGHT):右端位标志位标志说明说明CBRS_ALIGN_LEFT允许停放在框架窗口的左侧CBRS_ALIGN_RIGHT允许停放在框架窗口的右侧C
7、BRS_ALIGN_TOP允许停放在框架窗口的顶部CBRS_ALIGN_BOTTOM允许停放在框架窗口的底部CBRS_ALIGN_ANY允许停放在框架窗口的任意位置固定式和浮动式工具栏续固定式和浮动式工具栏续FloatControlBar(&m_wndToolBar,CPoint(x,y);FloatControlBar可以有第三个参数,假设参数为CBRS_ALIGN_TOP,那么工具栏为程度放置。假设为CBRS_ALIGN_LEFT,那么垂直放置。假设以0调用EnableDocking,然后再调用FloatControlBar,那么能得到一个浮动的工具栏,但它无法停放到框架窗口的一侧
8、。CControlBar:IsFloating,判别能否为浮动形状。SetWindowText为浮开工具栏添加标题。经过设置款式:CBRS_SIZE_DYNAMIC标志,可以运用户调整浮开工具栏的大小。而标志CBRS_SIZE_FIXED,那么保证工具栏的大小与外形不变。假设创建多行包含多行按钮的静态工具栏,那么适用款式TBBS_WRAPPED通知CToolBar换行符的位置,见下页例如代码1.5 代码例如:代码例如:m_wndToolBar.SetWindowText(MYTOOLBAR);/m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle(
9、)|CBRS_SIZE_DYNAMIC);m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_SIZE_FIXED);m_wndToolBar.SetButtonStyle(2,m_wndToolBar.GetButtonStyle(0)|TBBS_WRAPPED);m_wndToolBar.SetButtonStyle(5,m_wndToolBar.GetButtonStyle(0)|TBBS_WRAPPED);1.6 控制工具栏的可见性控制工具栏的可见性菜单项的ID为:ID_VIEW_TOOLBAR、ID_VIEW_STATUS
10、_BAR。缘由为在CFrameWnd的音讯映射表中已有该音讯映射。void ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay );(pBar-GetStyle() & WS_VISIBLE) != 0判别pBar是不是处于显示形状。设置bar的style能否为WS_VISIBLE是无法实现显示和隐藏工具栏的。1.7 坚持工具栏按钮和运用程序同坚持工具栏按钮和运用程序同步步CCmdUI:SetCheck()CCmdUI:Enable()1.8 添加工具提示和形状栏工具阐添加工具提示和形状栏工具阐明明在资源的属性中,添加P
11、rompt内容,格式为 string1nstring2其中string1为在形状栏中显示的内容string2为鼠标划过工具栏的该按纽时显示的提示内容工具栏的款式中必需包含CBRS_FLYBY1.9 在工具栏中添加非按纽控件在工具栏中添加非按纽控件1、在工具栏中添加一个按纽,并设置其ID。2、在CMainFrame中添加非按纽控件的对象定义,如CComboBoxm_ComboShape;假设此处添加一个ComboBox3、在创建工具栏函数的后面,创建该控件:CRect rect; m_wndToolBar.GetItemRect(12, &rect);rect.right = rect.
12、left+80;rect.bottom += 200;m_wndToolBar.SetButtonInfo(12, ID_SHAPE, TBBS_SEPARATOR, 80);if (!m_ComboShape.Create(WS_CHILD|WS_VISIBLE | CBS_AUTOHSCROLL|CBS_DROPDOWNLIST | CBS_HASSTRINGS ,rect, &m_wndToolBar, ID_SHAPE) return FALSE;m_ComboShape.AddString(直线);m_ComboShape.AddString(三角形);m_ComboShap
13、e.AddString(矩形);m_ComboShape.AddString(圆形);m_ComboShape.SetCurSel(0);对于函数SetButtonInfo,参数1为按纽的索引项,参数2 为按纽的ID,参数3为按纽的款式,假设为TBBS_SEPARATOR, 那么参数4为设置该按纽的宽度。1.9 在工具栏中添加非按纽控件在工具栏中添加非按纽控件4、手工添加该控件的呼应函数.hafx_msg void OnSelchangeShape();.cppON_CBN_SELCHANGE(ID_SHAPE, OnSelchangeShape)void CMainFrame:OnSelch
14、angeShape()CShapesView* pview = (CShapesView*)GetActiveView();pview-DrawShape(m_ComboShape.GetCurSel();1.10 使工具栏设置永久化使工具栏设置永久化在OnCreate()函数中调用LoadBarState(“.)调用LoadBarState将保管的设置信息读出,并将每个工具栏及形状栏恢复到以前的形状。在OnClose()函数中调用SaveBarState(“.)SaveBarState将每个工具栏的停放或浮动形状、位置、方向和或见性写到注册表或私有INI文件中。假设运用程序包括形状栏,Sav
15、eBarState也会记录有关形状栏的信息。留意,假设添加了自已的工具栏,假设想要正确的保管与恢复配置信息,那么创建自已的工具栏时,应该将工具栏的ID传给创建函数,而不是默许的创建方式。如m_ToolBarColor.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | ,CRect(0,0,0,0),IDR_TOOLBAR_COLOR);而不是m_ToolBarColor.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | );2.1 形状栏形状栏形状栏可以显示与上下文有关的工具栏按钮和菜单项的协助信息。在Windows中曾经变的非常普遍
16、。MFC提供了方便的方法来开发形状栏,当CStatusBar被衔接到框架窗口时,假设有菜单项被加亮显示,CStatusBar那么自动显示协助文本。假设工具栏的款式包含CBRS_FLYBY标志,那么形状栏也显示工具栏按钮的协助文本。2.2 创建和初始化形状栏创建和初始化形状栏CStatusBar m_wndStatusBar;static UINT indicators =ID_SEPARATOR, / status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;m_wndStatusBar.Create(
17、this);m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT);2.3 创建一个简单的创建一个简单的“二进制窗格二进制窗格添加一个字符串变量,如ID_DEMO在String Tab中添加其对应的字符串,如“DEMO,该字符串即为要在形状栏中显示的字符串。修正indicators,在后面加上一项ID_DEMO,在CMainFrame中添加一个呼应函数:afx_msg void onUpdateDemo(CCmdUI* pCmdUI);在CMainFrame的音讯映射表中添加 ON_UPDATE_COMMA
18、ND_UI(ID_DEMO, onUpdateDemo)添加呼应函数:void CMainFrame:onUpdateDemo(CCmdUI* pCmdUI)pCmdUI-Enable(m_bShow);/可以在外面修正m_bShow来决议DEMO能否显示2.4 默许的窗格常量默许的窗格常量 ID_INDICATOR_CAPSID_INDICATOR_NUMID_INDICATOR_SCRL.在CFrameWnd类中曾经定义了其更新函数:见winfrm.cppON_UPDATE_COMMAND_UI(ID_INDICATOR_CAPS, OnUpdateKeyIndicator)ON_UPDATE_COMMAND_UI(ID_INDICATOR_NUM, OnUpdateKeyIndicator)ON_UPDATE_COMMAND_UI(ID_INDICATOR_SCRL, OnUpdateKeyIndicator)2.5 为菜单项提供上下文相关协助为菜单项提供上下文相关协助假设第一个窗格左端的赋
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 110千伏变电站项目可行性研究报告
- 脚手架搭设安全技术要求
- 聚融反假货币试题库及答案
- 青少年桨板技巧赛事筹备方案
- 改编教案优化思路
- 搅拌站安全生产培训试题及答案
- 匠心服务系列培训考试题及答案
- 加油站计量员考核试题及答案
- 机车规章测试题及答案
- 会展活动项目管理中的多语言沟通策略应用考核试卷及答案
- PVP与PKP术后护理指南
- 化学器材知识培训课件
- 临床医学专业概述
- 三节三爱主题教育班会
- 《教育系统重大事故隐患判定指南》知识培训
- 装配式建筑行业报告:技术与成本造价
- 儿童特应性皮炎护理
- 2023年国家林业和草原局直属事业单位招聘笔试真题
- JBT 11270-2024 立体仓库组合式钢结构货架技术规范(正式版)
- 《元器件焊接》课件
- 船舶柴油机课件
评论
0/150
提交评论