状态栏显示图标

Wang471981125 2012-12-24 08:41:29
基于对话框的程序


CStatusBarCtrl m_wndStatusBar;
m_wndStatusBar.SetIcon(2, AfxGetApp()->LoadIcon(IDI_ICON1));

显示的图标太大

把图标改成16*16或者4*4 显示的效果貌似都是32*32 是不变的

怎样能在状态栏显示小图标呢?

请大家帮忙
...全文
314 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wang471981125 2012-12-25
  • 打赏
  • 举报
回复
引用 13 楼 schlafenhamster 的回复:
这样: // Small Icon 16*16 HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_SDICOMTYPE), IMAGE_ICON, 16, 16,0); m_wndStatusBar.GetStatusBarCtrl().SetIcon(0,hIcon);
非常感谢 确实是可以使用的 在资源修改框修改图标尺寸的方法不可行
Wang471981125 2012-12-25
  • 打赏
  • 举报
回复
引用 13 楼 schlafenhamster 的回复:
这样: // Small Icon 16*16 HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_SDICOMTYPE), IMAGE_ICON, 16, 16,0); m_wndStatusBar.GetStatusBarCtrl().SetIcon(0,hIcon);
谢谢提供方法 可以试试
Wang471981125 2012-12-25
  • 打赏
  • 举报
回复
引用 12 楼 ksq2010 的回复:
引用 11 楼 ksq2010 的回复: 引用 7 楼 Wang471981125 的回复:引用 5 楼 ksq2010 的回复:CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,……
我使用的是CStatusBarCtrl不是CStatusBar
Wang471981125 2012-12-24
  • 打赏
  • 举报
回复
引用 5 楼 ksq2010 的回复:
CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,rc); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); pDC->DrawState(rc.TopLeft(),……
有没有其他的办法呢
傻X 2012-12-24
  • 打赏
  • 举报
回复
看看这个,应该有帮助 这个
ksq2010 2012-12-24
  • 打赏
  • 举报
回复
CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,rc); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); pDC->DrawState(rc.TopLeft(),rc.Size(),&bmp,DST_BITMAP); -------------------------------- 如果将IDB_BITMAP1定义成16*16的,将你的ICON图标复制到这个位图上,可以实现一样的效果。不知合不合你的要求。
Wang471981125 2012-12-24
  • 打赏
  • 举报
回复
引用 2 楼 tiger9991 的回复:
是不是根据整个CStatusBar来判断适配大小的呢?
是图标太大了 和状态栏无关
傻X 2012-12-24
  • 打赏
  • 举报
回复
引用 2 楼 tiger9991 的回复:
是不是根据整个CStatusBar来判断适配大小的呢?
可以尝试CStatusBar根据MoveWindow来配置大小
傻X 2012-12-24
  • 打赏
  • 举报
回复
是不是根据整个CStatusBar来判断适配大小的呢?
Wang471981125 2012-12-24
  • 打赏
  • 举报
回复
请大家帮忙 谢谢
ksq2010 2012-12-24
  • 打赏
  • 举报
回复

	CStatusBarCtrl m_wndStatusBar;
        HICON   hIcon   =   (HICON)::LoadImage(::AfxGetInstanceHandle(),     
        MAKEINTRESOURCE(IDI_ICON1),   IMAGE_ICON,   16,   16,   0);    //16×16 
  	//下面是在状态栏中加入图标
	m_StatusBar.ModifyStyle(0x0,SS_ICON|SS_CENTERIMAGE);
	m_StatusBar.SetIcon(1, hIcon);//为第二个分栏中加的图标
schlafenhamster 2012-12-24
  • 打赏
  • 举报
回复
这样: // Small Icon 16*16 HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_SDICOMTYPE), IMAGE_ICON, 16, 16,0); m_wndStatusBar.GetStatusBarCtrl().SetIcon(0,hIcon);
ksq2010 2012-12-24
  • 打赏
  • 举报
回复
引用 11 楼 ksq2010 的回复:
引用 7 楼 Wang471981125 的回复:引用 5 楼 ksq2010 的回复:CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,rc); CBitmap bmp; bmp.Lo……
第一行的int indexStatusBar=0;//状态栏索引 我忘记初始化了。。。。呵呵
ksq2010 2012-12-24
  • 打赏
  • 举报
回复
引用 7 楼 Wang471981125 的回复:
引用 5 楼 ksq2010 的回复:CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,rc); CBitmap bmp; bmp.LoadBitmap(IDB_BIT……

int indexStatusBar//状态栏索引
CStatusBarCtrl &sc =m_wndStatusBar.GetStatusBarCtrl();
CDC* pDC = m_wndStatusBar.GetDC();
CRect rc;
sc.GetRect(1,rc);
pDC->DrawState(rc.TopLeft(),rc.Size(),&bmp,DST_BITMAP);
indexStatusBar=m_wndStatusBar.CommandToIndex(IDS_ID);         //获得窗格的索引,IDS_ ID替换成你的
m_wndStatusBar.SetPaneInfo(indexStatusBar,IDS_TIMER,SBPS_NORMAL,sz.cx); //改变窗格的宽度
m_wndStatusBar.SetIcon(2, AfxGetApp()->LoadIcon(IDI_ICON1));        
ksq2010 2012-12-24
  • 打赏
  • 举报
回复
引用 7 楼 Wang471981125 的回复:
引用 5 楼 ksq2010 的回复:CStatusBarCtrl &sc = m_wndStatusBar.GetStatusBarCtrl(); CDC* pDC = m_wndStatusBar.GetDC(); CRect rc; sc.GetRect(1,rc); CBitmap bmp; bmp.LoadBitmap(IDB_BIT……
它要适合你的状态栏的窗格的大小的. CStatusBar::SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cxWidth ); 这个函数指定了状态栏的窗格的大小了
Wang471981125 2012-12-24
  • 打赏
  • 举报
回复
引用 8 楼 schlafenhamster 的回复:
试试: m_wndStatusBar.GetStatusBarCtrl()->SetIcon(2,AfxGetApp()->LoadIcon(IDI_ICON1));
我定义的wndStatusBar是CStatusBarCtrl 不是CStatusBar
schlafenhamster 2012-12-24
  • 打赏
  • 举报
回复
试试: m_wndStatusBar.GetStatusBarCtrl()->SetIcon(2,AfxGetApp()->LoadIcon(IDI_ICON1));

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧