我想制作一个大工具栏,支持图标,其深度比Visual Studio中的默认值更深 . 我使用的是Visual Studio 2005,工具栏位于CDialog上 .
我使用了Code找到的代码:here但是没有用 .
int CSalariesForm::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME1), IMAGE_BITMAP,
0,0, LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS);
CBitmap bm;
bm.Attach(hBitmap);
CImageList m_imagelist;
m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4);
m_imagelist.Add(&bm, (CBitmap*) NULL);
cToolBar.Create(this);
cToolBar.GetToolBarCtrl().SetImageList(&m_imagelist);
cToolBar.ShowWindow(SW_SHOW);
cToolBar.SetBarStyle(CBRS_TOOLTIPS | CBRS_FLOATING | CBRS_ALIGN_TOP | CBRS_FLYBY);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
return 0;
}
当我调用对话框时,没有显示工具栏 . 什么是代码?
谢谢
1 回答
将图像列表分配给工具栏不会创建任何工具栏按钮 . 您的图像列表也应该是类成员,而不是局部变量 .
IDB_BITMAP1
是一个40x20 24位彩色位图(两个20x20按钮) . 如果您需要更多地控制按钮的创建,则可以使用CToolBarCtrl::SetButtons() . 有关加载图像列表的更多详细信息,请参阅ImageList_LoadImage .