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

来源:互联网 发布:js车牌是什么单位 编辑:程序博客网 时间:2024/05/16 02:08
状态栏被自动变高,清楚字体,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)));

搞定。

原创粉丝点击