返回首页

{A}
{S0}简介
当我想为我的SDI项目的快速和漂亮的头,我无法找到任何,所以我做了我自己。一些代码,适合初学者。这不是学习,但只是为了节省一些时间。有一些意见上的代码,但几乎所有它应该是清澈见底,甚至适合初学者。头支持不同颜色的文字,文本阴影的背景下,改变字体大小和类型,放置在头文字的变化。它也有一个渐变效果的背景。在新的更新,我已经实现了在背面加入图片的支持文本。我还包含一个MDI项目,其中包括一个CView类与相同的工具栏。请参阅做其他变化的历史。使用代码
CHeaderToolbar是从CToolBar继承其职能,它是作为常规工具栏像默认的"新的,开放的假设,一个默认的创建过程保存"工具栏的SDI / MDI项目。
当你创建一个工具栏调用SetDrawRect(矩形)函数,它是非常重要的。头工具栏是这样的:

    CRect Size;



    Size.SetRect(0,0,0,30);



    if (!m_headerdefault.CreateEx(this, TBSTYLE_TRANSPARENT , 

      WS_CHILD | WS_VISIBLE | CBRS_TOP, Size))

    {

        TRACE0("Failed to create header\n");

    }



    //The rect is transparent, until you set the drawrect...

    m_headerdefault.SetDrawRect(Size);
矩形的大小是只用来设置上创造的高度。如果创建成功你会得到一个默认颜色的头。要操纵其他设置,你可以使用这些功能: {C}每次使用不同的功能,改变布局,头刷新。如果你想改变更多的选择和停止重绘使用SetRedraw(假)到工具栏,然后SetRedraw(),以便再次重绘。边境修复和图片支持
在这个版本我已​​经得到了很好的解决方案摆脱边境围绕每个工具栏。我想说感谢基督教codeguru.com Wieninger你告诉我。由于默认情况下,边界绘制,删除它,你可以使用SetRemoveBorder(TRUE)。下面是它看起来如何的一个例子:
在左侧边界绘制,有权就消失了。在底部有是一个图片。对于添加图片检查出这些功能:
    //Picture loading

    void LoadBackgroundPicture(CString Path); 

     //Load the picture from any locations at your harddrive

    void SetStrech(BOOL OnOff); //Stretch to fit on/off

    void SetPicturePlaceMent(int Place); 

     //Placement of the picture (DT_LEFT, DT_CENTER and DT_RIGHT)



    void SetVAlign(BOOL OnOff); 

     //Vertical align picture to always fit on/off

    BOOL GetStrech(); //Returns the status of strech.
在CView的工具栏
当我提出的MDI的例子,我有一个如何实现工具栏的要求一个CView窗口。在这个例子中,我添加的MDI的HeaderToolbar意见及的MainFrm。历史 V1.1 - 更新:添加图片的支持,边境修复和优化重绘功能(感谢codeproject.com barto)。所有这些更新取出的已知问题头(nice!) V1.0 - 第一版待办事项 多行 - 有时你可能需要显示更多信息  0; 如果你需要显示多个行文本滚动 - 一个不错的textscroller 进度条 - 这样,你不需要在底部的状态栏。

回答

评论会员:WREY 时间:2011/11/30
!最新的更新,使所有的差异

干得好!从我的'5'



威廉

等opere真正的特长
评论会员:!维生素E 时间:2011/11/30
,谢谢,很高兴你喜欢它

如果你有这种工具栏的任何其他建议,请让我知道。

====================={ BR}拉斯[大]沃纳
lars@werner.no
http://lars.werner.no
====================={ BR}
评论会员:维生素E 时间:2011/11/30
您好

您的类是有用的,但我有一个问题,当我
在MainFrm.cpp加载一个BMP file.I添加代码,它不
我的图片。的你帮我呢?INT的CMainFrame:在OnCreate(LPCREATESTRUCT lpCreateStruct)
{
... m_header.LoadBitmap(IDB_LOGO);... 感谢您的工作!
评论会员:barto 时间:2011/11/30


我还没有实施任何位图功能的headertoolbar {五}

但如果你想实现它,你应该添加的功能OnEraseBkn。我猜你使用的是工具栏上的一流inherted的LoadBitmap函数,但不会工作,因为它不是在我重写实施{五}

我会在未来添加的功能,但现在我的时间是有限的。



====================={ BR}拉斯[大]沃纳
lars@werner.no
http://lars.werner.no
====================={ BR}