能否在设计时为ToolbarWindow32控件添加按钮?VS2022资源编辑器疑问
能否用VS2022对话框资源编辑器为Toolbar添加按钮?
VS2022的对话框资源编辑器不支持直接在设计阶段为你定义的ToolbarWindow32控件添加按钮。这个编辑器仅能将Toolbar作为一个空白窗口控件放置在对话框上,没有集成可视化编辑按钮的功能——Toolbar的按钮集合并非通过.rc文件直接定义,而是需要关联图像列表并通过代码配置。
替代方案
虽然无法完全在设计时完成按钮添加,但可以提前准备资源并简化运行时代码:
提前准备图标资源
在资源视图中添加Icon或Bitmap资源,统一按钮图标的尺寸(如16×16、32×32),后续在代码中直接调用这些资源。运行时关联资源并添加按钮
在对话框类的OnInitDialog函数中,完成Toolbar与图像列表的关联,再添加按钮。示例代码如下:BOOL CYourDialog::OnInitDialog() { CDialogEx::OnInitDialog(); CToolBar* pToolBar = (CToolBar*)GetDlgItem(IDC_CUSTOM1); if (pToolBar) { // 调整Toolbar样式 pToolBar->SetWindowStyle(pToolBar->GetWindowStyle() | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS); // 创建图像列表并加载图标 CImageList imgList; imgList.Create(16, 16, ILC_COLOR32 | ILC_MASK, 4, 0); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); // 关联图像列表到Toolbar pToolBar->SetImageList(&imgList); // 若需手动管理图像列表生命周期,可调用imgList.Detach() // 定义按钮数组 TBBUTTON buttons[] = { {0, IDC_BTN_FIRST, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {1, IDC_BTN_SECOND, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {2, IDC_BTN_THIRD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0}, // 分隔符 {3, IDC_BTN_FOURTH, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} }; pToolBar->AddButtons(_countof(buttons), buttons); // 调整Toolbar尺寸适配按钮 pToolBar->AdjustLayout(); } return TRUE; }使用MFC工具栏资源实现可视化设计
若想要更接近设计时编辑的体验,建议改用MFC的Toolbar Resource:- 在资源视图中添加Toolbar资源(如
IDR_MYTOOLBAR),可直接在资源编辑器里可视化添加按钮、设置图标、分配控件ID。 - 在对话框类中创建并加载该工具栏,示例代码:
// 对话框类成员变量 CToolBar m_toolBar; BOOL CYourDialog::OnInitDialog() { CDialogEx::OnInitDialog(); if (!m_toolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP) || !m_toolBar.LoadToolBar(IDR_MYTOOLBAR)) { TRACE0("创建工具栏失败\n"); return -1; } // 调整工具栏位置 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); return TRUE; }
- 在资源视图中添加Toolbar资源(如
内容的提问来源于stack exchange,提问作者Mihai Oltean
相关产品推荐
相关产品推荐

