vc图片只支持16位颜色,想做个漂亮点的工具栏,网上搜了下有一个封装好的Ctruecolortoolbar类,用来生成真彩工具栏,但是例子是单文档的,我用在对话框程序中工具栏显示不出来,不知道有没有人用过对话框程序下添加真彩工具栏的啊,请赐教

解决方案 »

  1.   

    我就是在Dialog中用的这个类 
    Dialog头文件中定义 CTrueColorToolBar m_csTB;
    初始化的时候:
    BOOL C**Dlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    m_csTB.SetBorders(1, 1, 1, 1);
    if (!m_csTB.CreateEx(this,TBSTYLE_FLAT,WS_VISIBLE|CBRS_RIGHT|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_GRIPPER|CBRS_SIZE_FIXED,CRect(0,0,0,0)) || !m_csTB.LoadToolBar(IDR_TOOLUSER))
    {
    TRACE0("Failed to create toolbar\n");
    return -1;
    } m_csTB.SetButtonInfo(0,ID_TOOLARRAW,TBBS_CHECKED,0); 
    m_csTB.SetButtonInfo(1,ID_TOOLLINE,TBBS_BUTTON|TBBS_WRAPPED,1);

    m_csTB.SetButtonInfo(2,ID_TOOLPENCIL,TBBS_BUTTON,2); 
    m_csTB.SetButtonInfo(3,ID_TOOLRECT,TBBS_BUTTON|TBBS_WRAPPED,3);

    m_csTB.SetButtonInfo(4,ID_TOOLROUNDRECT,TBBS_BUTTON,4);
    m_csTB.SetButtonInfo(5,ID_TOOLELLIPSE,TBBS_BUTTON|TBBS_WRAPPED,5); //......... m_csTB.ModifyStyle(0, TBSTYLE_FLAT);
    m_csTB.LoadTrueColorToolBar(16,IDB_NUT,IDB_HUT,IDB_DUT);
    ::SetWindowPos(m_csTB.m_hWnd,HWND_TOP,0,0,0,120,SWP_NOACTIVATE| SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);

    //......
    }IDB_NUT,IDB_HUT,IDB_DUT分别是工具栏按钮处于正常 鼠标悬停 禁用状态对应的三个位图资源
    IDR_TOOLUSER是添加的一个ToolBar资源 ID_TOOLRECT等是按照顺序出现的在IDR_TOOLUSER上的按钮。
    WS_VISIBLE|CBRS_RIGHT|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_GRIPPER|CBRS_SIZE_FIXED这些属性要根据你的情况设定 我设定的是靠右竖排