|
三、程序代码 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 toolbar"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar"); 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类远比我们想象的强大的多,例如通过图标的掩模操作也能实现包括透明显示的各种效果,只是没有我们这里介绍的方法简单而已。有兴趣的读者朋友可以仔细研究研究,相信一定会获益匪浅。
共2页: 上一页 [1] 2 下一页
| |