VC++编程:自定义工具栏与图像列表实现
需积分: 3 89 浏览量
更新于2025-01-04
收藏 33KB TXT 举报
"VC论坛的部分笔记知识,涵盖了创建和自定义工具栏的步骤及使用CImageList加载图标的技巧"
这篇笔记主要讲述了在Visual C++(VC)环境中创建和定制工具栏的过程,以及如何利用CImageList类来加载和管理图标资源。在Windows应用程序开发中,工具栏是一个重要的组件,它提供了快捷方式按钮,使得用户可以方便地访问常用功能。
首先,创建一个工具栏是通过调用`CreateEx`函数实现的。在`CMainFrame`类的`OnCreate`方法中,我们看到如下代码:
```cpp
if (!m_wndNewToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndNewToolBar.LoadToolBar(IDR_TOOLBARMY))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
```
这里,`m_wndNewToolBar`是一个`CToolBar`对象,`CreateEx`函数用于设置工具栏的样式和属性。`TBSTYLE_FLAT`表示平坦风格的工具栏,其他参数如`WS_CHILD`、`WS_VISIBLE`等决定了工具栏的窗口样式。`LoadToolBar`函数则加载了资源ID为`IDR_TOOLBARMY`的资源,这通常包含了工具栏的按钮布局信息。
接着,为了让工具栏能够停靠在主窗口的任意位置,我们需要调用`EnableDocking`函数,并传入`CBRS_ALIGN_ANY`参数,表示可以任意方向停靠。然后,使用`DockControlBar`将工具栏与主框架窗口关联:
```cpp
m_wndNewToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndNewToolBar);
```
为了给工具栏按钮添加图标,笔记提到了`CImageList`类。`CImageList`是一个用来管理图标列表的类,它支持多种大小和颜色深度的图标。创建一个`CImageList`实例并加载图标:
```cpp
CImageList m_ilTB;
m_ilTB.Create(32, 32, TRUE | ILC_COLOR8, 4, 0);
```
`Create`函数设置了图像列表的大小、颜色深度和备用图像数量。接着,使用`LoadImage`函数从资源中加载图标,并将其添加到图像列表中:
```cpp
HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_MAIN), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
// 重复以上过程,加载更多图标
```
`IDI_ICON_MAIN`是图标资源的ID,`IMAGE_ICON`指定类型为图标,`LoadImage`函数返回的`HICON`句柄被添加到`CImageList`中。
这些步骤展示了在VC环境中创建具有自定义图标的工具栏的基本过程。通过这样的实践,开发者可以为自己的应用程序提供更加美观和用户友好的界面。在实际项目中,可能还需要处理更多的细节,如响应按钮点击事件、动态更新工具栏状态等。
2009-11-01 上传
139 浏览量
118 浏览量
2007-09-15 上传
2012-03-14 上传
2011-09-08 上传
104 浏览量
128 浏览量
2009-04-08 上传
hbb502
- 粉丝: 0
- 资源: 3
最新资源
- 串行生产线生产率的最优控制
- 串行生产线的性能指标与扰动分析
- jsp教材(适合初学者)
- Java Web Services
- 《计算机网络教程》第五版 谢希仁编 课件和课后答案
- An Introduction to Programming in Emacs Lisp
- Flex 3 beta2+XFire开发实例.pdf
- ServeRAID 8i_8k_8k-l SAS控制器安装指南
- AS3.0的权威指南,学习FLEX的必经之路
- 名称和目录服务(DNS、NIS 和 LDAP).pdf
- Web Services Book Collection\Pro XML Development with Java Technology
- C语言图书管理系统下载
- thx202开关电源电路
- Sniffer 网络分析案例及方法集
- 北京工业大学人工神经网络课件
- Windows.Forms.in.Action.(2006)