工具栏图标显示不全

Arnis1973 2018-07-31 12:11:18
工具栏图标显示不全, 而且是 从第四个开始显示的, 为什么啊?
先看一下代码
if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_EX_TOPMOST | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS) || \
!m_ToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建工具栏\n");
AfxMessageBox(_T("未能创建工具栏\n"));
return FALSE; // 未能创建

}
m_ToolBar.ShowWindow(SW_SHOW);
//控件条定位
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
m_bitmap1.LoadBitmapW(IDB_BITMAP1);
m_bitmap2.LoadBitmapW(IDB_BITMAP2);
m_bitmap3.LoadBitmapW(IDB_BITMAP3);
m_bitmap4.LoadBitmapW(IDB_BITMAP4);
m_bitmap5.LoadBitmapW(IDB_BITMAP5);
m_bitmap6.LoadBitmapW(IDB_BITMAP6);
m_bitmap7.LoadBitmapW(IDB_BITMAP7);
m_bitmap8.LoadBitmapW(IDB_BITMAP8);
m_ImageList.Create(30, 30, ILC_COLOR32 | ILC_MASK, 0, 0);

m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap2, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap3, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap4, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap5, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap6, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap7, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap8, RGB(0, 0, 0));
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);


...全文
411 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
解决了 宽度必须达到 30 因为设置30X30 原理不明
schlafenhamster 2018-07-31
  • 打赏
  • 举报
回复
查 m_bitmap2 !
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
好像尺寸必须是 30X30 30X28都不行
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
下面输出 1 1 2 第二个 ADD没成功 m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0)); int count= m_ImageList.GetImageCount(); afxDump << count << "\n"; m_ImageList.Add(&m_bitmap2, RGB(0, 0, 0)); count= m_ImageList.GetImageCount(); afxDump << count << "\n"; m_ImageList.Add(&m_bitmap3, RGB(0, 0, 0)); count= m_ImageList.GetImageCount(); afxDump << count << "\n";
schlafenhamster 2018-07-31
  • 打赏
  • 举报
回复
CImageList::Add
int Add( CBitmap* pbmImage, CBitmap* pbmMask );

int Add( CBitmap* pbmImage, COLORREF crMask );

int Add( HICON hIcon );

Return Value

Zero-based index of the first new image if successful; otherwise – 1.

所以 看看不出来 。用
m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0));
int count= m_ImageList.GetImageCount( )
afxDump << count << "\n";
来 看看
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
下面几个输出全是0, ADD失败, 不知道原因啊 int idx= m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0)); afxDump << idx << "\n"; idx= m_ImageList.Add(&m_bitmap2, RGB(0, 0, 0)); afxDump << idx << "\n"; idx= m_ImageList.Add(&m_bitmap3, RGB(0, 0, 0)); afxDump << idx << "\n";
schlafenhamster 2018-07-31
  • 打赏
  • 举报
回复
GetImageCount( )
返回是 0
? 不会吧 ,add 失败 ?
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
GetImageCount( ) 返回是 0
schlafenhamster 2018-07-31
  • 打赏
  • 举报
回复
add
完后
CImageList::GetImageCount
int GetImageCount( ) const;

Return Value

The number of images.

看看 有 多少 ?
Arnis1973 2018-07-31
  • 打赏
  • 举报
回复
每个Add 后都加了 afxDump << idx << "\n"; 输出全是0 怎么回事?
schlafenhamster 2018-07-31
  • 打赏
  • 举报
回复
nInitial

Number of images that the image list initially contains.

nGrow

Number of images by which the image list can grow when the system needs to resize the list to make room for new images. This parameter represents the number of new images the resized image list can contain.

试试·
m_ImageList.Create(30, 30, ILC_COLOR32 | ILC_MASK, 8,1);

检查 add 后 位置
int idx= m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0));
afxDump << idx << "\n";

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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