对话框手工添加工具栏
功能展示
有时我们需要在对话框中添加工具栏,实现特定的功能。但对话框程序默认并无工具栏,如何 实现在对话框 中添加工具栏呢?当前实现实现了这一功能,
12.上位机VC MFC对话框应用程序手工添加工具栏
要点提示 当前我们是通过从CToolBarCtrl派生的类CcustomToolBar实现,当然直接定义CToolBar变量来实现也是可以的,我们这里通过CcustomToolBar类也实现;在MFC绘制工具栏时要处理NM_CUSTOMDRAW通知消息,我们在派生类实现这一消息的映射
实现功能
•1.新建一个对话框应用程序 •2.将CcustomToolBar类的头文件,源文件加入工程,并在对话框类中添加两变量 • CCustomToolBarm_ToolBar; • CImageListm_ImageList; •3.在对话框类的OnInitDialog()中实现这两变量的初始化 •m_ImageList.Create(24,24,ILC_COLOR24|ILC_MASK,1,1); • m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); • m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); • m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); • m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4)); • m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5)); • m_ToolBar.Create(WS_CHILD|TBSTYLE_FLAT|WS_VISIBLE|CBRS_NOALIGN,CRect(0,0,0,0),this,111); • m_ToolBar.SetImageList(&m_ImageList); • TBBUTTON buttons[5]; • for(int i = 0; i<5; i++) • {if(i==2){ • buttons.idCommand= ID_SEPARATOR; • buttons.fsStyle = TBSTYLE_SEP; • buttons.fsState = TBSTATE_ENABLED; • buttons.dwData=NULL;buttons.iString=NULL;} • else{ • buttons.idCommand= 100+i; • buttons.iBitmap = i; • buttons.fsStyle = TBSTYLE_FLAT; • buttons.fsState = TBSTATE_ENABLED; • buttons.dwData=NULL;buttons.iString=NULL; • } • } • m_ToolBar.AddButtons(4,buttons); • TBBUTTONINFObInfo; • bInfo.cbSize = sizeof(TBBUTTONINFO); • bInfo.dwMask= TBIF_TEXT; • bInfo.pszText= "操作员"; • BOOLret = m_ToolBar.SetButtonInfo(100,&bInfo); • bInfo.pszText= "工程师"; • m_ToolBar.SetButtonInfo(101,&bInfo); • bInfo.pszText= "退出"; • m_ToolBar.SetButtonInfo(103,&bInfo); • bInfo.pszText= "工控编程吧"; • m_ToolBar.SetButtonInfo(104,&bInfo); • m_ToolBar.SetButtonWidth(50,80); • m_ToolBar.MoveWindow(0,0,100,50);
•我们结合编程软件来演示整个功能实现的过程
|