MFC状态栏设置图标自动变高

13 篇文章 0 订阅
状态栏被自动变高,清楚字体,ico等可恢复到原始状态。给mdi状态栏添加图标,以显示实时网络连接状态
void SetPaneIcon(
   int nIndex,
   HICON hIcon,
   BOOL bUpdate=TRUE 
);

这是MFC提供的设置图标的函数,ico文件支持透明所以就用了,但使用后发现无论你ico 是啥分辨率,都会被设置成32x32图片,而且透明支持的也不是很好,还有黑边。最重要的是状态栏被撑高了,原来就二十几的像素现在有38像素左右了,很难看。先不说CStatusBar没有设置高度的接口,还要重载才能实现高度重绘,即使设置高度成功了,图片还是32x32的哪怕你用16x16的也会被放大,然后显示一半。暂且就当是微软留下的一个bug吧。

解决办法:用这个函数的重载函数即

void SetPaneIcon(
   int nIndex,
   HBITMAP hBmp,
   COLORREF clrTransparent=RGB(255,0,255),
   BOOL bUpdate=TRUE 
);
该函数是使用bmp格式图片的,透明色默认是这个粉色(可能是因为这个颜色难看吧),当然可以自己更改。

m_wndStatusBar.SetPaneIcon(nIndex, LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_XXX)));

搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值