c++ - 如何更改 CMFCToolBar 运行时

标签 c++ visual-studio mfc cmfctoolbar

在某些情况下,我需要使用相同的 CMFCToolBar 对象(CMainFrame 的成员)在 SDI 应用程序中切换工具栏。我正在尝试这样做:

void CMainFrame::ChangeTlbr(const int tlbIdx)
{
    m_wndToolBar.ResetImages();
    switch (tlbIdx)
    {
        case 0 :

            m_wndToolBar.LoadToolBar(IDR_TLBR1);

            break;
        case 1:

            m_wndToolBar.LoadToolBar(IDR_TLBR2);

            break;
    }

    m_wndToolBar.Invalidate();
    m_wndToolBar.UpdateWindow();
}

但是下一个工具栏的位图未加载。

在这种情况下我做错了什么,是否有更好的方法来做到这一点?

最佳答案

下面的函数展示了如何用另一个工具栏替换当前的工具栏,定义为IDR_MAINFRAME1:

void CMainFrame::OnChangeToolbar()
{    
    m_wndToolBar.ResetAllImages();
    m_wndToolBar.LoadToolBar(IDR_MAINFRAME1);
    m_wndToolBar.LoadBitmap(IDR_MAINFRAME1);
    m_wndToolBar.AdjustSizeImmediate();        
}

关于c++ - 如何更改 CMFCToolBar 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38588238/

相关文章:

c++ - 部分模板模板特化

C++ 异常处理未按预期工作

visual-studio - 在 Visual Studio 2010 中删除 .pdb 文件

c# - 从解决方案中的所有文件中删除注释

c++ - 如何加载另一个进程的窗口作为子窗口?

c++ - 从 CString 中提取 float

C++:不区分大小写的 "Boost:unordered_map"不起作用?

while 循环中的 C++ 浮点精度

c# - Visual Studio 中的正常设置

visual-c++ - 无法在 32 位计算机上注册使用 VS2012/VC++ 构建的 COM DLL