QQ登录

只需一步,快速开始

18.上位机VC MFC实现outlook导航界面效果

[ 复制链接 ]
outlook导航界面效果
功能展示
如今上位机软件不但具有丰富功能,还有漂亮的界面,这样才能吸引用户。采用导航式功能菜单,不但美观大方,还为用户操作程序提供方便,这例程就实现了导航界面式菜单的功能,效果如图

18.上位机VC MFC实现outlook导航界面效果

18.上位机VC MFC实现outlook导航界面效果

要点提示
为设计OUTLOOK导航界面,需要从CListCtrl派生一个子类,实例 为COutLookList.在此类中显示些导航按钮,当用记单击这些按钮时,会适当调整按钮的位置,并在客户区域,显示另一个CListCtrl控件,实例 为m_ClientList,目的是显示与导航按钮关联的项目,在设计COutlookList类时,得解决三个关键问题
1.如何截获导航按钮的单击事件;
2.如何存储与导航按钮关联的项目;
3.如何向外界提供一个接口,方便处理用户双击视图项目项执行的动作
问题1,可以在COutLookList的OnCmdMsg方法中实现,代码如下
BOOL COutlookList::OnCmdMsg(UINT nID, int nCode, void*pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
  int index =  CommandToIndex(nID);
  if (index != -1)
  {
  OnButtonDown(index,nID);
  }
  m_ClientList.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo);
  returnCListCtrl::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
在OnCmdMsg方法中首先调用 自定义的CommandToIndex方法获取命令对应的按钮索引,因为在追寻导航按钮时,会为按钮指定 ID,并将近包在含有m_pButton数组中,只要遍历按钮,执行自定义的OnButtonDown方法,重新排列按钮,在客户区域显示列表控件。
问题2,可以从Cbutton派生一个子类,例程为CListButton,在该类中定义一个字符串列表,m_ButtonItem,类型为CStringList,存储与导航按钮关联的项目文本
问题3,我们可以定义一个回调函数,实例为ItemDlbFun,代码如下
//定义双击列表视图项的回调函数
typedef void(ItemDlbFun)(const CListCtrl* pListCtrl,intnItemIndex);
然后在COutLookList类中定义一个ItemDlbFun函数指针pItemDLBFun,最后在COutLookListod r PreTranslateMessage方法中判断用户是否双击了视图项,如果是,则调用 pItemDlbFun
实现功能
我们在这里就来看下如何一步步实现导航菜单功能,主要演示如何使用我们集成类COutlookList
1.新建一个对话框程序
2.复制COutlookList类和CListButton类的文件,并在对话框中定义CImageList m_Imagelist;变量和双击处理函数
static  voidOnItemDouble(const CListCtrl* pListCtrl,int nIndex);
3.添加列表控件,关关联变量COutlookList  m_List;
4.在对话框中的OnInitialDlg()对两变量初始化
  初始化主要代码
                 //创建图像列表,向图像列表中添加图标
  m_Imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,0,1);
  for (inti=0;i<6;i++)
  {
  m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1+i));
  }
  //向列表视图控件中添加按钮
  m_List.SetImageLists(&m_Imagelist);
  m_List.AddButton("基础资料管理",500);
  m_List.AddButton("销售组织",501);
  m_List.AddButton("市场管理",502);
  m_List.AddButton("销售业务管理",503);
  m_List.AddButton("销售分析",504);
  //向指定按钮添加关联的视图项
  CString str;
  str = "市场反馈";
  m_List.AddButtonItems(2,str);
  str = "市场跟踪";
  m_List.AddButtonItems(2,str);
  str = "市场走势";
  m_List.AddButtonItems(2,str);
  str = "市场行情";
  m_List.AddButtonItems(2,str);
  m_List.pItemDlbFun= OnItemDouble;//设置回调函数
  初始化主要代码
                 //创建图像列表,向图像列表中添加图标
  m_Imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,0,1);
  for (inti=0;i<6;i++)
  {
  m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1+i));
  }
  //向列表视图控件中添加按钮
  m_List.SetImageLists(&m_Imagelist);
  m_List.AddButton("基础资料管理",500);
  m_List.AddButton("销售组织",501);
  m_List.AddButton("市场管理",502);
  m_List.AddButton("销售业务管理",503);
  m_List.AddButton("销售分析",504);
  //向指定按钮添加关联的视图项
  CString str;
  str = "市场反馈";
  m_List.AddButtonItems(2,str);
  str = "市场跟踪";
  m_List.AddButtonItems(2,str);
  str = "市场走势";
  m_List.AddButtonItems(2,str);
  str = "市场行情";
  m_List.AddButtonItems(2,str);
  m_List.pItemDlbFun= OnItemDouble;//设置回调函数
演示功能实现的整个过程
源码及视频下载
(仅在电脑可见)
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:18.上位机VC MFC实现outlook导航界面效果.rar 
文件大小:136.73 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索