VC++编程:自定义工具栏与图像列表实现

需积分: 3 7 下载量 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环境中创建具有自定义图标的工具栏的基本过程。通过这样的实践,开发者可以为自己的应用程序提供更加美观和用户友好的界面。在实际项目中,可能还需要处理更多的细节,如响应按钮点击事件、动态更新工具栏状态等。