状态栏被自动变高,清楚字体,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)));
搞定。