MFC下 SDI 单文档 对话框 工具栏编程总结 新手值得一看,

创建工具栏 分2种情况 对话框的工具栏 和 SDI 单文档工具栏编程


用到的函数

RecalcLayout 当窗体布局发生改变的时候 调用这个函数会调用 RePositionBar重新摆放工具条
ShowControlBar 显示隐藏 工具栏的函数 CControlBar是CToolBar的基类
IsWindowVisible CWnd的函数返回BOOL 检测从CWnd派生的 窗体是否可见
CCmdUI OnUpdateCmdUI消息 用于菜单的维护的一些函数如SetCheck等等

1. 工具栏 菜单都是镶嵌在框架类上的对与 一个单文档应用程序来说 首先 定义一个 CToolBar 的对象


if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT //创建一个工具栏
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || //加载一个工具栏 资源
!m_newToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); //设置工具栏可以停靠
this->EnableDocking(CBRS_ALIGN_ANY); //设置框架窗体可以被停靠 缺一不可
this->DockControlBar(&m_newToolBar); //停靠工具栏

以上是 SDI中MFC框架 OnCreate函数中 代码

2.对话框的工具栏添加 特色工具栏


1. ///特色工具栏的添加
CToolBar *m_wndToolBar=new CToolBar; //工具条对象堆中创建
m_wndToolBar->CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
CRect(10,10,0,0)); //创建工具栏
m_wndToolBar->LoadToolBar(IDR_TOOLBAR1) ; //加载工具栏资源
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //停靠工具栏


AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST
指的是空间ID的范围,在MFC中
AFX_IDW_CONTROLBAR_FIRST 的值为 0xE800
AFX_IDW_CONTROLBAR_LAST 的值为 oxE8FF

意思是这个ID范围内的ControlBar都将被Reposition


2.经过上面步骤 已经在对话框上创建了我们家在的菜单资源 然后我们设置每个按钮的位图 通过 CImageList 类 GetToolBarCtrl 函数获得 CToolBarCtrl的一个引用

步骤是 CImageList * p=new CImageList; //定义 CImageList对象
p->Create(30,30,ILC_COLOR32, 0, 13); //创建图像列表
pp->Add(AfxGetApp()->LoadIcon(IDI_ICON13)); //向CImageList对象增加新的图标 pp->Add(AfxGetApp()->LoadIcon(IDI_ICON9));//add 图标
(m_wndToolBar->GetToolBarCtrl()).SetImageList(pp); //设置图像列表 工具栏的 通过工具控件 CToolBarCtrl 控件

3.设置 CToolTipCtrl 就是工具栏上面的浮动提示

CToolTipCtrl *t=new CToolTipCtrl; //在堆中创建一个 CToolTipCtrl控件
t->Create(this); //在本窗体中创建
t->SetMaxTipWidth(100); //设置最大宽度
t->SetTipBkColor(RGB(233,222,232)); //设置背景颜色
t->SetTipTextColor(RGB(22,122,122)); //设置提示的文本颜色
t->AddTool(m_wndToolBar,"导出当前员工在线信息到磁盘",CRect(0,0,20,20),ID_OUTPUT); //每次增加的tip都对一个这一个工具栏按钮的ID
t->AddTool(m_wndToolBar,"清空系统运行时候产生的缓存文件",CRect(0,0,20,20),IDM_CLEAR); //ID就是工具栏按钮ID
t->Activate(true);
(m_wndToolBar->GetToolBarCtrl()).SetToolTips(t); //将TIP增加到 工具栏



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值