{A}
简介
XTrueColorToolBar允许您使用您的真彩色(每像素24位)工具栏加入只有一行代码的应用程序。彼得李的文章是基于XTrueColorToolBar。彼得介绍非常详细的实施,所以我不想在这里重复它。我所做的是彼得的包裹在一个C类的代码,并添加一个额外的功能:支持Office风格的工具栏的颜色按钮。
在V1.1的新功能
我已经在这个版本中添加下拉按钮,示范项目,要求此功能后,收到几个邮件。您仍然可以下载版本没有下拉按钮()。
Office风格的颜色按钮
许多应用程序都需要改变文字颜色,它们通常允许用户通过工具栏按钮。例如,您可能会看到这样的: {S0}或本
这种颜色的按钮显示当前选定的颜色在信下方的酒吧{S2}。在演示程序,显示格式工具栏上的颜色按钮:
{S3}
此按钮的工作方式是,当你单击向下箭头,将显示颜色选择器:
{S4}的
当你选择一种颜色,颜色的按钮将被更新:
{五}
现在你可以选择一些文本:
{中六}
单击您刚刚采摘到选定的文本应用颜色的彩色按钮的左侧:
{七}
上演示应用程序的注意事项
为了说明如何使用XTrueColorToolBar和颜色的按钮,我用分布在VS6。在演示程序中,我只是使用的标准CColorDialog MFC类,而不是一个更好看的颜色选取器在CodeProject上。在演示应用程序的工具栏是16色的工具栏,我与MS画图转换到24位位图。
载入真彩色工具栏
在演示程序mainfrm.cpp,该代码加载工具栏位图创建的图像列表:
这是所有你需要做的,如果你只是想没有颜色的按钮的工具栏支持真彩色。 // set up true-color image buttons
m_wndFormatBar.AttachToolbarImages(IDB_FORMATBAR,
8, // no. of images in bitmap
0); // 0 = normal, 1 = disabled, 2 = hot
设置"颜色"按钮
在使用颜色按钮的第一步是创建工具栏位图图像。您必须使用以下的信中出现的酒吧,独特的色彩{S2}。这种独特的颜色将被替换为实际的颜色,用户选择。在演示程序中,位图格式"工具栏(formatba.bmp)的样子:
{S9}
根据信中的酒吧{S2}是红色的,这是不使用位图,其他地方。为了确保未来的独特性,酒吧,是使用RGB(255,0,1),我最喜欢的事业,所示:
在工具栏已被加载(见),下面的代码将设置初始颜色栏颜色按钮:{C}每个工具栏到CreateTemplate()的调用是必要的,只有一次。它创建了一个工具栏的图像列表的副本(实际修改工具栏的图像列表每次用户更改颜色)和设置掩码颜色。
每个工具栏到InitColorButton()的调用是必要的,只有一次。 InitColorButton()的参数是颜色按钮的命令ID,和最初的RGB颜色值。
当用户点击向下箭头的颜色按钮演示程序mainfrm.cpp,消息映射项 ON_NOTIFY(TBN_DROPDOWN,ID_VIEW_FORMATBAR,OnColorDropDown)
调用OnColorDropDown()。显示颜色选择器,并设置新的颜色,在颜色按钮:
//================================================ =============================无效的CMainFrame::OnColorDropDown(NMTOOLBAR * pNMTOOLBAR,LRESULT * / * pResult * /)//================================================ ============================={ (pNMTOOLBAR放大器;放大器;(pNMTOOLBAR>的iItem == ID_SET_TEXT_COLOR)) { TRACE(_T("OnColorDropDown - 点击颜色按钮的下拉箭头\ nquot;)); &
#160; / /获取(下字母A栏)颜色的彩色按钮 COLORREF RGB = m_wndFormatBar.GetColorButton(); CColorDialog DLG(RGB); / /显示颜色选择器"对话框
如果(dlg.DoModal()== IDOK) &
#160;{ RGB = dlg.GetColor();
60; / /更新下颜色的彩色按钮(栏字母A) m_wndFormatBar.SetColorButton(ID_SET_TEXT_COLOR,RGB);
}
}}
当用户点击颜色按钮的左侧演示程序
mainfrm.cpp,消息映射项 ON_COMMAND(ID_SET_TEXT_COLOR,OnTextColor)
调用OnTextColor(),它适用于选定的文本的颜色://=============================================================================
void CMainFrame::OnTextColor()
//=============================================================================
{
TRACE(_T("OnTextColor - click on color button left side\n"));
// get color of color button (bar under letter A)
COLORREF rgb = m_wndFormatBar.GetColorButton();
CWordPadView * pView = (CWordPadView *) GetActiveView();
// set new text color in current view
if (pView)
pView->SetColor(rgb);
}
颜色按钮工具提示
如果你想显示颜色按钮的工具提示,看一看OnToolTipText()在演示应用程序mainfrm.cpp。请注意,工具提示代码XNamedColors.cpp和XNamedColors.h。
XTrueColorToolBar实施
类CXTrueColorToolBar是来自,并增加了这些公共职能:
功能说明无效AttachToolbarImages(UINT nBitmapId,INT nNumImages,INT nToolbar)加载工具栏上的图像,并将其附加到工具栏。
BOOL CreateTemplate(COLORREF RGB)创建工具栏的图像列表的副本。COLORREF GetBackgroundColor()检索工具栏位图的背景颜色(透明度)。COLORREF GetColorButton()检索颜色按钮的颜色。无效GetImageDimensions(INT nWidth,INT nHeight)检索位图的宽度和图像的高度。COLORREF GetMaskColor()检索下A.彩条的颜色无效InitColorButton(UINT nCommandId,COLORREF RGB)初始化工具栏下拉颜色的按钮,并设置初始颜色。无效SetBackgroundColor(COLORREF RGB)设置背景颜色(透明度)的工具栏位图。默认为RGB(192,192,192)。无效SetColorButton(UINT nCommandId,COLORREF RGB)设置颜色按钮的颜色。默认为RGB(0,0,0)。无效SetImageDimensions(INT nWidth,INT nHeight)设置位图图像的宽度和高度。默认为16x16。无效SetMaskColor(COLORREF RGB)答:根据颜色栏的颜色必须设置在工具栏上的独特。默认为RGB(0,0,1)。
如何使用
XTrueColorToolBar融入你的应用程序,请按照下列步骤:
步骤1:添加XTrueColorToolBar文件
将下列文件添加到项目中:XTrueColorToolBar.cppXTrueColorToolBar.h
注:对于上述cpp文件,您必须选择在Visual Studio中使用预编译头。