为CToolBar工具栏窗口按钮添加ICON图标需要注意的一点 |
您所在的位置:网站首页 › mfc工具栏添加图标 › 为CToolBar工具栏窗口按钮添加ICON图标需要注意的一点 |
VC使用CToolBar类创建工具栏,例如一个SDI应用程序,在MFC应用程序框架自动生成的工具栏IDR_MAINFRAME基础上,可使用资源编辑器创建工具栏资源,步骤如下: (1) 使用资源编辑器编辑工具栏IDR_MAINFRAME,删除所有自动生成的工具栏按钮,如新建、打开等 (2) 添加ID为ID_EXIT_BAR图标。 (3) 资源视图选中工程,右键【添加】->【添加资源】->【ICON】-> 【导入】,选择退出按钮图标exit.ico,其中exit.ico的大小为24X24,添加ICO资源,将ID改为IDI_EXIT。 (4) 为CMainFrame类添加成员变量CImageList m_ImageList; (5) 修改CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数,添加如下代码: m_ImageList.Create(24,24,ILC_COLOR32|ILC_MASK,1,1); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_EXIT)); m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList); m_wndToolBar.SetSizes(CSize(31,31),CSize(24,24)); CRect temp; m_wndToolBar.GetItemRect(0,&temp); m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(temp.Width(),temp.Height())); 这样就为CToolBar工具栏的ID_EXIT_BAR按钮添加了一个大小为24X24的图标。方法不复杂,但需要注意的是设置工具按钮大小的函数SetSizes(),第一个参数CSize(31,31)设置的矩形只要需比第二个参数CSize(24,24)的x都至少要大7,y都至少要大6,否则会运行时会出现异常,原因是CToolBar::SetSizes()的原型如下: // CToolBar void CToolBar::SetSizes(SIZE sizeButton, SIZE sizeImage) { ASSERT_VALID(this); // sizes must be non-zero and positive ASSERT(sizeButton.cx > 0 && sizeButton.cy > 0); ASSERT(sizeImage.cx > 0 && sizeImage.cy > 0); // button must be big enough to hold image // + 7 pixels on x // + 6 pixels on y ASSERT(sizeButton.cx >= sizeImage.cx + 7); ASSERT(sizeButton.cy >= sizeImage.cy + 6); if (::IsWindow(m_hWnd)) { // set the sizes via TB_SETBITMAPSIZE and TB_SETBUTTONSIZE VERIFY(SendMessage(TB_SETBITMAPSIZE, 0, MAKELONG(sizeImage.cx, sizeImage.cy))); VERIFY(SendMessage(TB_SETBUTTONSIZE, 0, MAKELONG(sizeButton.cx, sizeButton.cy))); Invalidate(); // just to be nice if called when toolbar is visible } else { // just set our internal values for later m_sizeButton = sizeButton; m_sizeImage = sizeImage; } } (6) 为ID_EXIT_BAR添加消息相应函数,进行相关处理,这样就完成了工具栏按钮呢图标及其消息响应函数的添加。 ON_COMMAND(ID_EXIT_BAR, &CMainFrame::OnExitProgramme)//退出程序
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |