返回首页


{S0}简介
CTrueColorToolBar是一个真正的真彩色工具栏。类的实现是很容易的。此工具栏的特殊性与DIB部分位图工具栏上的第一个像素的面具颜色的自动检测。步骤使用在VC中创建的数字按钮和最后你需要的大小假人16色的工具栏。在您最喜爱的画家,使其他国家基础上的第一个按钮(普通,热,残疾人)的真彩色工具栏位图。在VC中导入您的新的真彩色工具栏。建立正常工具栏的样本实施新CTrueColorToolBar栏。呼叫LoadTrueColorToolBar功能与你的3真彩色工具栏位图和一个按钮的大小。这就是它!示例:/ /在Mainframe.h#定义TOOLBAR_​​DRAW_BUTTON_WIDTH 24#quot; TrueColorToolBar.hquot;类CMainFrame:CFrameWnd的公共 { CTrueColorToolBar m_ToolBarDrawLeft;}/ /在Mainframe.cppINT的CMainFrame::OnCreate中(LPCREATESTRUCT lpCreateStruct){&# 160; (CFrameWnd的:在OnCreate(lpCreateStruct)== -1)   ; 返回-1; (m_ToolBarDrawLeft.Create(这一点,WS_CHILD!| WS_VISIBLE | CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)| | !m_ToolBarDrawLeft.LoadToolBar(IDR_TOOLBAR_​​DRAW)) { TRACE0("无法创建工具栏"\ nquot"); 0; 返回-1; / /创建失败 } &# 160; / /添加位图到工具栏 m_ToolBarDrawLeft.LoadTrueColorToolBar( TOOLBAR_​​DRAW_BUTTON_WIDTH, IDB_TOOLBAR_​​DRAW,  0; IDB_TOOLBAR_​​DRAW_HOT,  0; IDB_TOOLBAR_​​DRAW_DISABLED); / /添加下拉按钮 m_ToolBarDrawLeft.AddDropDownButton(这一点,ID_BUTTON1,IDR_MENU1); 返回0;}结论
注意,在功能LoadTrueColorToolBar,如果你省略了禁用工具栏的最后一个参数,你会得到一个默认浮雕禁用的工具栏。享受!

回答

评论会员:miggedy 时间:2011/11/29
我可以在运行时替换一个按钮图像(集),另一套真彩色图像?如果有的话,可能会有人点到正确的方向我
评论会员:?wanglinhai888 时间:2011/11/29
你好,你做得很好,但唯一的遗憾,那里是没有的ctoolbar按钮改变它的背景颜色,所以按钮让人觉得ugly.do你有什么想法去改变它
评论会员:mensfort 时间:2011/11/29
嗨,

演示是从CFrameWnd派生的。然而,当我用一个简单的CDialog的,有在SetTrueColorToolBar的内存泄漏。如何解决这个

的LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(uToolBar),IMAGE_BITMAP,0,0,
LR_DEFAULTSIZE | LR_CREATEDIBSECTION)
Mensfort

问候: | mensfort
评论会员:游客 时间:2011/11/29
嗨,演示是从CFrameWnd派生的。然而,当我用一个简单的CDialog的,有在SetTrueColorToolBar的内存泄漏。如何解决这个的LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(uToolBar),IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_CREATEDIBSECTION)Mensfort问候:|mensfort
您好,

该演示是从CFrameWnd派生。然而,当我用一个简单的CDialog的,有在SetTrueColorToolBar的内存泄漏。如何解决这个问题?

的LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(uToolBar)
IMAGE_BITMAP,0,0,
LR_DEFAULTSIZE | LR_CREATEDIBSECTION)

Mensfort
的问候
评论会员:会员3650784 时间:2011/11/29
所以太简单的一类。你想知道为什么MS没有已经有设施
评论会员:!matangoldman 时间:2011/11/29
链接...
CVTRES:致命错误CVT1100:重复的资源。类型:舱单,名称:1,语言:0X0409
链接:致命错误LNK1123:转换到COFF期间失败:文件无效或损坏的

我应该怎么办

感谢
评论会员:梅拉诺 时间:2011/11/29
是必须在清单中的一个错误。我不能找到的错误,但你可以编译
如果你去项目配置属性 - >清单工具 - >;输入和输出GT;嵌入清单,并设置"没有。"

see: social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/4724cf11-2942-4fa3-9b74-314afe40a9f5/

评论会员:alex_tver 时间:2011/11/29
谢谢你,伟大工程。但是为什么没有工具提示显示?样式CBRS_TOOLTIPS是集...
评论会员:Romiks 时间:2011/11/29
您好,
我需要在我的应用程序禁用/使按钮,
请告诉我该怎么办。

评论会员:DCUtility 时间:2011/11/29
看API的

L' enfer EST密镶女佣意图! {S1}通往地狱的道路是好心铺成的
评论会员:!PJArends 时间:2011/11/29
SendMessage (hToolbar, TB_ENABLEBUTTON, ctl_id, FALSE);
ctl_id问题按钮的命令标识符。

保罗桑德斯
]。

!您可能是正确的
我可能是疯
- 比利乔 -

的,在你在于良好的动力性,使用它
评论会员:juraitwaluzka 时间:2011/11/29
喜{BR }
我可以更换默认的工具栏?

我在哪里可以找到真彩色图标"打开,保存,复制,...."?{ BR}

评论会员:banbanyy 时间:2011/11/29
非常漂亮的代码。什么是授权?它能否在商业应用中使用呢?
评论会员:akaworks 时间:2011/11/29
也许在ON_NOTIFY_REFLECT不同的东西(TBN_DROPDOWN,OnToolbarDropDown)?
评论会员:extus 时间:2011/11/29
修复它,你需要改变第一OnToolbarDropDown参数,使用一个NMTOOLBAR *.
NMHDR *
TrueColorToolBar.h
AFX_MSG无效OnToolbarDropDown(NMHDR * pnmhdr,LRESULT * plRes);
TrueColorToolBar.cpp
无效CTrueColorToolBar:OnToolbarDropDown(NMHDR *,LRESULT * PLR pnmhdr)
{
NMTOOLBAR * pnmtb =(NMTOOLBAR *)pnmhdr;

... ...其余的代码...
}
评论会员:youfly 时间:2011/11/29
有谁知道如果我可以把背景图像的SDI应用程序中的白色区域。 (YES)
{
你能告诉我怎么做;
  ;}
ELSE
{
  ; 没关系;
}

评论会员:abiendl 时间:2011/11/29
我`马的VC(MFC)初学者
我用我的应用程序资源文件,它在first.But工作时除了有用的文件在调试删除的文件,并遵守,并将其链接,或者,我按下"重建"的很好,它告诉我:

G:\ lyf \ mymfc \为MainFrm.h(41):错误C2146:语法错误:缺少";"在标识符"m_wndToolBar'
G:\ lyf \ mymfc \为MainFrm.h(41):错误C2501:'CTrueColorToolBar":缺少存储类或类型说明符
G:\ lyf \ mymfc \为MainFrm.h(41):错误C2501:'m_wndToolBar":缺少存储类或类型说明符
MyMFCDoc.cpp
MyMFCView.cpp
TrueColorToolBar.cpp
生成代码...
执行cl.exe时出错。

MyMFC.exe - 3个错误(S),0警告(S)

而如果我改变"CTrueColorToolBar m_wndToolBar;"
"CToolBar m_wndToolBar;"然后按F5,无可厚非发生,如果我再改回F5,无可厚非发生过 - 它工作得很好

谁能告诉我发生了什么?
非常感谢您!
评论会员:屈子 时间:2011/11/29
您应包括为MainFrm.h
TrueColorToolBar.h
包括"TrueColorToolBar.h"

评论会员:joxoy 时间:2011/11/29
我喜欢这一类的非常。我现在有问题,我可以不解决。然后当我使用AddDropDownButton的按钮的大小是非常大的的。我水湿图制作出体积更小。
始终是相同的大尺寸。
Thanksing
评论会员:屈子 时间:2011/11/29
!需要你的帮助;)

评论会员:joxoy 时间:2011/11/29
INT btnIdx = m_wndToolBar.CommandToIndex(ID_BUTTON1);
m_wndToolBar.SetButtonText(btnIdx,_T("你的文字"));{ BR}m_wndToolBar.SetButtonStyle(btnIdx,TBSTYLE_AUTOSIZE)

评论会员:Einst 时间:2011/11/29
它似乎代码did't工作... ...