📄 subject_16042.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>//==================================== <BR> CToolBarCtrl &pCtrl = m_wndToolBar.GetToolBarCtrl();<BR> CImageList* pImgList = pCtrl.GetImageList();<BR> if(!pImgList)<BR> return FALSE;<BR> CDC* pDC = GetDC();<BR> if(!pDC)<BR> return FALSE;<BR> <BR> // get bmp info<BR> IMAGEINFO pInfo;<BR> pImgList->GetImageInfo(8,&pInfo);<BR> int cx = pInfo.rcImage.right - pInfo.rcImage.left;<BR> int cy = pInfo.rcImage.bottom - pInfo.rcImage.top;<BR><BR> // create memdc and bmp<BR> CDC memdc;<BR> memdc.CreateCompatibleDC(pDC);<BR> CBitmap bmp;<BR> bmp.CreateCompatibleBitmap(pDC,cx,cy);<BR><BR> // draw to memdc<BR> CBitmap* pOldBmp = memdc.SelectObject(&bmp);<BR> pImgList->Draw(&memdc,8,CPoint(0,0),ILD_NORMAL);<BR><BR> // fill rect<BR> CBrush brBack;<BR> brBack.CreateSolidBrush(crNewColor); <BR> memdc.FillRect(CRect(0,12,cx,cy),&brBack);<BR> memdc.SelectObject(pOldBmp);<BR><BR> // replace old bmp in pImgList<BR> CBitmap tmpBmp;<BR> tmpBmp.Attach(pInfo.hbmMask);<BR> pImgList->Replace(8,&bmp,&tmpBmp);<BR><BR> // release resource<BR> brBack.DeleteObject();<BR> tmpBmp.Detach();<BR> bmp.DeleteObject();<BR> memdc.DeleteDC();<BR> 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> COLORREF from; <BR> 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 + -