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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/evil_119/article/details/77865883
状态栏被自动变高,清楚字体,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)));

搞定。

猜你喜欢

转载自blog.csdn.net/evil_119/article/details/77865883
今日推荐