📄 csdn_文档中心_在状态栏中加入bitmap.htm
字号:
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD width=500> 在状态栏中加入BitMap</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>
<OL>
<LI><FONT
color=#000000>在一个AppWizard应用的状态条中加入一个新的方块,在Mainfrm.cpp中加入下列语句</FONT>
</LI></OL>
<BLOCKQUOTE>
<P><FONT color=#000080 size=2>//Mainfrm.cpp</FONT></P>
<P><FONT color=#000080 size=2>static UINT indicators[]
=<BR>{<BR> ID_SEPARATOR, // status line
indicator<BR>
ID_INDICATOR_BITMAP, //
BITMAP状态条<BR>
ID_INDICATOR_CAPS,<BR>
ID_INDICATOR_NUM,<BR>
ID_INDICATOR_SCRL,<BR>};</FONT></P></BLOCKQUOTE>
<OL start=2>
<LI><FONT color=#000000
size=3>从CStatusBar派生一个新类(例如CBitmapStatusBar),并且用这个新类取代CMainFrame中的CStatusBar(Mainfrm.h)</FONT>
</LI></OL>
<BLOCKQUOTE>
<P><FONT color=#000080 size=2>//Mainfrm.h</FONT></P>
<P><FONT color=#000080 size=2>//CStatusBar
m_wndStatusBar;<BR>CBitmapStatusBar
m_wndStatusBar;</FONT></P></BLOCKQUOTE>
<OL start=3>
<LI><FONT color=#000000>在新类的.h和.cpp中加入下面两个函数的声明和定义</FONT> </LI></OL>
<BLOCKQUOTE>
<P><FONT color=#000080 size=2>//BitmapStatusBar.h</FONT></P>
<P><FONT color=#000080 size=2>class CMyStatusBar : public
CStatusBar {...<BR> #if _MFC_VER <
0x400<BR> virtual void
DoPaint(CDC* pDC);<BR>
#else<BR> virtual void
DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);<BR>
#endif<BR> ...}</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE>
<P><FONT color=#000080
size=2>//BitmapStatusBar.cpp</FONT></P></BLOCKQUOTE>
<BLOCKQUOTE>
<P><FONT color=#000080 size=2>#if _MFC_VER <
0x400<BR> void CBitmapStatusBar::DoPaint(CDC*
pDC)<BR>
{<BR> CRect
rect;<BR> GetItemRect(1,
&rect);
//得到pane的大小<BR>
pDC->ExcludeClipRect(&rect);
//创建新的裁剪区域<BR>
CStatusBar::DoPaint(pDC); //描绘状态条(status
bar)的其余部分<BR><BR> CRgn
paneRgn;<BR>
paneRgn.CreateRectRgnIndirect(rect);<BR>
pDC->SelectClipRgn(&paneRgn);
//选择裁剪区域<BR><BR> CBitmap
pBitmap;<BR>
//加载位图,使用Import从文件加载资源,可以不受调色板限制<BR>
pBitmap.LoadBitmap(IDB_BITMAP1);<BR><BR>
//将当前位图放入兼容CDC<BR> CDC
SourceDC;<BR>
SourceDC.CreateCompatibleDC(NULL);//生成兼容的CDC<BR>
CBitmap* pOldBitmap =
SourceDC.SelectObject(&pBitmap);//选择位图<BR>
pDC->BitBlt(rect.left, rect.top, rect.Width(),
rect.Height(),<BR>
&SourceDC, 0, 0,
SRCCOPY);//BitBlt<BR>
SourceDC.SelectObject(pOldBitmap);//删除CDC中所选择的位图<BR>
pBitmap.DeleteObject();//删除位图<BR>
}<BR>#else<BR> void
CBitmapStatusBar::DrawItem(LPDRAWITEMSTRUCT
lpDrawItemStruct)<BR>
{<BR>
switch(lpDrawItemStruct->itemID)<BR>
{<BR> case
1:<BR>
//从资源中选择位图<BR>
CBitmap
pBitmap;<BR>
//加载位图,使用Import从文件加载资源,可以不受调色板限制<BR>
pBitmap.LoadBitmap(IDB_BITMAP1);<BR><BR>
//将状态条(StatusBar)附加到一个CDC对象<BR>
CDC
dc,SourceDC;<BR>
dc.Attach(lpDrawItemStruct->hDC);<BR><BR>
//得到pane的大小和坐标<BR>
CRect
rect(&lpDrawItemStruct->rcItem);<BR><BR>
//将当前位图放入兼容CDC<BR>
SourceDC.CreateCompatibleDC(NULL);//生成兼容的CDC<BR>
CBitmap* pOldBitmap =
SourceDC.SelectObject(&pBitmap);//选择位图<BR>
dc.BitBlt(rect<A name=4>]</A>.left, rect.top, rect.Width(),
rect.Height(),<BR>
&SourceDC, 0, 0,
SRCCOPY);//BitBlt<BR>
SourceDC.SelectObject(pOldBitmap);//删除CDC中所选择的位图<BR>
pBitmap.DeleteObject();//删除位图<BR><BR>
//将状态条(StatusBar)与CDC对象分离,否则hDC将会在CDC废弃时被删除<BR>
dc.Detach();<BR><BR>
return;<BR>
}<BR>
CStatusBar::DrawItem(lpDrawItemStruct);<BR>
}<BR>#endif</FONT></P></BLOCKQUOTE>
<OL>
<LI value=4><FONT color=#000000>在Mainfrm.cpp</FONT><FONT
color=#000000 size=2>的</FONT><FONT color=#000000
size=3>CMainFrame::OnCreate()</FONT><FONT
color=#000000>中加入下面的代码</FONT> </LI></OL>
<BLOCKQUOTE>
<P><FONT color=#000080 size=2>//Mainfrm.cpp</FONT></P>
<P><FONT color=#000080 size=2>int
CMainFrame::OnCreate(LPCREATESTRUCT
lpCreateStruct){...<BR> if
(!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT))){<BR>
TRACE0("Failed to create status bar\n");<BR>
return -1; // fail to
create<BR> }<BR>
//加入下列代码<BR> #if _MFC_VER >=
0x400<BR> UINT nID,
nStyle;<BR> int
cxWidth;<BR><BR>
m_wndStatusBar.GetPaneInfo(1, nID, nStyle,
cxWidth);<BR>
m_wndStatusBar.SetPaneInfo(1, nID, nStyle | SBT_OWNERDRAW,
cxWidth);<BR>
#endif<BR>...}</FONT></P></BLOCKQUOTE><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文档中心_在状态栏中加入BitMap.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=1990">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文档中心_在状态栏中加入BitMap.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -