VC++实现显示透明的256色以上的图标
2010-05-27 20:37:18 来源:WEB开发网三、程序代码
//////////////////////////////////////////////////////////////////////////////////////
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |
CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbarn");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status barn");
return -1; // fail to create
}
//设置ToolBar的图标列表
m_ilTB.Create(32, 32, TRUE | ILC_COLOR8, 4, 0);
HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON2), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON4), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilTB);
// TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
四、小结
本实例通过灵活的使用CImageList类的Create()函数实现了透明的256色位图的显示,其实Visual C++中的CImageList类远比我们想象的强大的多,例如通过图标的掩模操作也能实现包括透明显示的各种效果,只是没有我们这里介绍的方法简单而已。有兴趣的读者朋友可以仔细研究研究,相信一定会获益匪浅。
更多精彩
赞助商链接