工具栏编程
来源:互联网 发布:适合程序员的笔记本 编辑:程序博客网 时间:2024/05/29 08:32
用API创建工具栏,简单例子
之前定义了一个由3个16*16组成的位图,准备创建一个具有三个按钮的工具栏
TBBUTTON tbButtons[]={
{0,100,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0},
{1,200,TBSTATE_ENABLED,TBSTYLE_BUTTON|TBSTATE_WRAP|TBSTATE_ENABLED ,0,0},
{2,300,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0}
};
CreateToolbarEx(hWnd,WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT,.....,16,16,16,16,sizeof(TBBUTTON));
这样即可:
其中:TBBUTTON结构中的第一元素为:按钮索引,接下来为:按钮的ID,按钮的初始风格等
2、用MFC的CToolBarCtrl类创建
CRect rt;
GetClientRect(&rt);
rt.bottom = rt.top + 24;
m_ctlTB.Create(WS_CHILD|WS_VISIBLET|BSTYLE_FLAT,rt,this,ID_TOOLBAR);
m_ctlTB.AddBitmap(3,IDB_BITMAP1);
m_ctlTB.AddButtons(3,tbButtons);
CToolBarCtrl只是API的简单包装,并没增加功能
3、用MFC的CToolBar类创建
可参考的例子很多,MSDN的例子:MFCIE介绍了如何创建类似IE的具有文字标签和下拉菜单风格的按钮
方法1:
构造CToolBar对象
CToolBar::Create或CToolBar::CreateEx创建工具栏
CToolBar::LoadToolBar加载位图
方法2:
构造CToolBar对象
CToolBar::Create或CToolBar::CreateEx创建工具栏
CToolBar::LoadBitmap加载位图
CToolBar::SetButtons设置按钮ID
两种方法区别在于是否利用toolbar资源
4、为什么工具栏用256以上就会失真
工具栏内部应该以ImageList管理位图,而默认是采用16色。为了使用256以有更高色必须以ILC_COLOR8(256)或相应的值创建ImageList。
然后TB_SETIMAGELIST消息给工具栏设置新的ImageList ,以同样的方法还可以设置工具栏的热点位图。
建议参考MSDN sample的<MfcIe>
5、工具栏的风格:
在MSDN中按《Toolbar Control and Button Styles》索引即可得到所有风格。有些风格对版本有要求,更详细请看MSDN。
TBSTYLE_FLAT: 使工具栏上的按钮表面平坦,按钮边界不会被绘出来,除非鼠标指针在上面
TBSTYLE_LIST: 按钮文本显示在按钮的左边
TBSTYLE_TOOLTIPS:如果用户将鼠标指针停留在按钮上较长时间就使按钮产生TTN_NEEDTEXT通知消息。
程序员负责为这个工具提示提供文本
TBSTYLE_WRAPABLE:使控件将其按钮排成多行以适应当前的控件大小
TBSTYLE_ALTDRAG:允许用户按住ALT来拖动按钮的位置
TBSTYLE_CUSTOMERASE:使控件处理WM_ERASEBKGND 消息时会产生NM_CUSTOMDRAW通知消息
TBSTYLE_TRANSPARENT:除按钮以外工具栏是透明的,文本显示在按钮下面
扩展风格:
TBSTYLE_EX_DRAWDDARROWS :使工具栏能创建具有下拉菜单的按钮
还可以使用以CBRS开头的控制条风格:
CBRS_TOP 控制条在框架窗口的顶部
CBRS_BOTTOM
CBRS_NOALIGN 当框架窗口改变大小时控制条不重置
CBRS_TOOLTIPS 控制条显示TOOPTIP信息
CBRS_SIZE_DYNAMIC
CBRS_SIZE_FIXED
CBRS_FLOATING
CBRS_FLYBY
CBRS_HIDE_INPLACE
还有以CCS开头的通用控件风格:
CCS_NORESIZE: 被创建的控制条的大小由CreateWindow API调用指定。该风格忽略以下4种风格
CCS_TOP: 控制条沿其父窗口框架顶部/底部/左/右对齐并且其宽度设置为系统标准
CCS_BOTTOM:
CCS_LEFT:
CCS_RIGHT:
CCS_NODIVIDER: 控制条自动沿其顶部绘制一条直线:通常用来将工具栏和菜单分隔开
CCS_ADJUSTABLE: 允许用户动态配置工具栏
CCS_NOMOVEY: 下面风格没有明显效果或是重复上面的风格
CCS_NOMOVEEX:
CCS_NOPARENTALIGN:
除此之处还有工具栏按钮的风格和按钮的状态。
2.
| 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); //允许工具栏在工具栏区域中移动
DockControlBar(&m_newToolBar); //允许此工具栏在整个window窗口中拖役
{
if (m_newToolBar.IsWindowVisible()) //如果工具栏是显示着,那么就隐藏,否则就显示。
{
m_newToolBar.ShowWindow(SW_HIDE);
}
else
{
m_newToolBar.ShowWindow(SW_SHOW);
}
RecalcLayout(); //注意如果不写这行,会出现工具栏隐藏,但工具条仍然存在的现象,需要重新计算
}
{
pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());
}
- 工具栏编程
- 工具栏编程
- 工具栏编程
- 工具栏编程
- 工具栏编程
- 工具栏的基本编程
- MFC工具栏编程
- 工具栏编程小结
- MFC工具栏编程
- VC++6.0 工具栏编程
- VC工具栏编程
- 工具栏编程实例
- RCP菜单工具栏编程详细
- 工具栏
- 工具栏
- 工具栏
- 工具栏
- 工具栏
- SQL Server全文索引的个人总结(下)-关于中文分词
- 【随笔】java 虚拟按键
- Http方法 GET/POST
- RedHat Linux 5 SUN JDK的安装
- 制作U盘启动盘
- 工具栏编程
- 删除多系统的引导方法
- 获取Android源码
- C/C++头文件一览
- Excel万年历的制作
- linux常用c头文件
- Silverlight 4中XAML解析的变化
- linux下禁止修改DNS服务器地址(DNS被自动修改问题)
- 别了,xiaoxiong!