{A}
{S0}简介
当我想为我的SDI项目的快速和漂亮的头,我无法找到任何,所以我做了我自己。一些代码,适合初学者。这不是学习,但只是为了节省一些时间。有一些意见上的代码,但几乎所有它应该是清澈见底,甚至适合初学者。头支持不同颜色的文字,文本阴影的背景下,改变字体大小和类型,放置在头文字的变化。它也有一个渐变效果的背景。在新的更新,我已经实现了在背面加入图片的支持文本。我还包含一个MDI项目,其中包括一个CView类与相同的工具栏。请参阅做其他变化的历史。使用代码
CHeaderToolbar是从CToolBar继承其职能,它是作为常规工具栏像默认的"新的,开放的假设,一个默认的创建过程保存"工具栏的SDI / MDI项目。
当你创建一个工具栏调用SetDrawRect(矩形)函数,它是非常重要的。头工具栏是这样的:
矩形的大小是只用来设置上创造的高度。如果创建成功你会得到一个默认颜色的头。要操纵其他设置,你可以使用这些功能:
{C}每次使用不同的功能,改变布局,头刷新。如果你想改变更多的选择和停止重绘使用SetRedraw(假)到工具栏,然后SetRedraw(),以便再次重绘。边境修复和图片支持 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);
在这个版本我已经得到了很好的解决方案摆脱边境围绕每个工具栏。我想说感谢基督教codeguru.com Wieninger你告诉我。由于默认情况下,边界绘制,删除它,你可以使用SetRemoveBorder(TRUE)。下面是它看起来如何的一个例子:
在左侧边界绘制,有权就消失了。在底部有是一个图片。对于添加图片检查出这些功能:
在CView的工具栏 //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.
当我提出的MDI的例子,我有一个如何实现工具栏的要求一个CView窗口。在这个例子中,我添加的MDI的HeaderToolbar意见及的MainFrm。历史 V1.1 - 更新:添加图片的支持,边境修复和优化重绘功能(感谢codeproject.com barto)。所有这些更新取出的已知问题头(nice!) V1.0 - 第一版待办事项 多行 - 有时你可能需要显示更多信息
0; 如果你需要显示多个行文本滚动 - 一个不错的textscroller 进度条 - 这样,你不需要在底部的状态栏。