⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_16042.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:16042 发表者:dongfanghong 发表日期:2002-09-25 09:22:13
<br>主题:如何动态改变工具条的颜色
<br>内容:类似WORD中的填充颜色工具按钮,根据不同颜色,工具条显示不同颜色。<BR>颜色有很多种。用有限的IMAGELIST好象不行。<BR>先谢谢了。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:dongfanghong 回复日期:2002-09-25 09:23:38
<br>内容:测试用例在此。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐景周 回复日期:2002-09-25 09:47:54
<br>内容:重载工具条,根据指定颜色重绘背景。<BR>可参看一下下面源码:<BR>http://codetools.com/docking/bitmaptoolbar.asp
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dongfanghong 回复日期:2002-09-25 10:13:53
<br>内容:不好意思,没有说清楚。<BR>需要改变颜色的是按钮[A]下边的一小块。不是工具条的背景。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Aikoc 回复日期:2002-09-25 14:19:04
<br>内容:呵呵,那可是BMP来的哑<BR>可以首先获取Imaglist<BR>CToolBarCtrl::GetImageList<BR>CImageList* GetImageList( ) const;<BR><BR>Return Value<BR><BR>A pointer to a CImageList object, or NULL if no disabled image list is set.<BR><BR>然后自己画,8-)<BR>CImageList::DrawIndirect<BR>BOOL DrawIndirect( IMAGELISTDRAWPARAMS* pimldp );<BR><BR>BOOL DrawIndirect( CDC* pDC, int nImage, POINT pt, SIZE sz, POINT ptOrigin, UINT fStyle = ILD_NORMAL, DWORD dwRop = SRCCOPY, COLORREF rgbBack = CLR_DEFAULT, COLORREF rgbFore = CLR_DEFAULT );<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dongfanghong 回复日期:2002-09-25 15:16:08
<br>内容:DrawIndirect Used to draw an image from an image list.But the ImageList is not suitable for the toolbar because of the color.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Aikoc 回复日期:2002-09-26 17:18:09
<br>内容:哎,没办法,为了这200分.只有自己写了,8-)<BR>将这段code 加入到你的ChangeColor代码中即可<BR>win2k,VC6下通过,希望能帮我加点分,呵呵<BR><BR>//====================================&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CToolBarCtrl &pCtrl = m_wndToolBar.GetToolBarCtrl();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CImageList* pImgList = pCtrl.GetImageList();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!pImgList)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC* pDC = GetDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!pDC)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// get bmp info<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMAGEINFO pInfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pImgList-&gt;GetImageInfo(8,&pInfo);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int cx = pInfo.rcImage.right - pInfo.rcImage.left;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int cy = pInfo.rcImage.bottom - pInfo.rcImage.top;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// create memdc and bmp<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC memdc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;memdc.CreateCompatibleDC(pDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap bmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bmp.CreateCompatibleBitmap(pDC,cx,cy);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// draw to memdc<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap* pOldBmp = memdc.SelectObject(&bmp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pImgList-&gt;Draw(&memdc,8,CPoint(0,0),ILD_NORMAL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// fill rect<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBrush brBack;<BR>&nbsp;&nbsp;&nbsp;&nbsp;brBack.CreateSolidBrush(crNewColor); <BR>&nbsp;&nbsp;&nbsp;&nbsp;memdc.FillRect(CRect(0,12,cx,cy),&brBack);<BR>&nbsp;&nbsp;&nbsp;&nbsp;memdc.SelectObject(pOldBmp);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// replace old bmp in pImgList<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap tmpBmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tmpBmp.Attach(pInfo.hbmMask);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pImgList-&gt;Replace(8,&bmp,&tmpBmp);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// release resource<BR>&nbsp;&nbsp;&nbsp;&nbsp;brBack.DeleteObject();<BR>&nbsp;&nbsp;&nbsp;&nbsp;tmpBmp.Detach();<BR>&nbsp;&nbsp;&nbsp;&nbsp;bmp.DeleteObject();<BR>&nbsp;&nbsp;&nbsp;&nbsp;memdc.DeleteDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<BR>//====================================
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dongfanghong 回复日期:2002-09-27 08:44:34
<br>内容:非常感谢!辛苦你了:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Aikoc 回复日期:2002-09-27 08:56:19
<br>内容:Aikoc看着白花花的400大银,嘴都笑歪了。连声说,东方红<BR>兄弟,谢谢你,谢谢...
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dongfanghong 回复日期:2002-09-27 09:40:00
<br>内容:你的答案物有所值啊。<BR>根据你的思路,我发现问题的关键是改变CBitmap的一部分颜色。用BOOL LoadMappedBitmap( UINT nIDBitmap, UINT nFlags = 0, LPCOLORMAP lpColorMap = NULL, int nMapSize = 0 );<BR>也可以。<BR>它的参数LPCOLORMAP 是:<BR>typedef struct _COLORMAP { <BR>&nbsp;&nbsp;&nbsp;&nbsp;COLORREF from; <BR>&nbsp;&nbsp;&nbsp;&nbsp;COLORREF to; <BR>} COLORMAP, FAR* LPCOLORMAP; <BR> <BR>正好用于变换颜色。<BR><BR>粽子谢谢Aikoc,也谢谢jz_x!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -