工控编程吧
标题:
18.上位机VC MFC实现outlook导航界面效果
[打印本页]
作者:
qq263946146
时间:
2015-11-12 21:28
标题:
18.上位机VC MFC实现outlook导航界面效果
outlook导航界面效果
功能展示
如今上位机软件不但具有丰富功能,还有漂亮的界面,这样才能吸引用户。采用导航式功能菜单,不但美观大方,还为用户操作程序提供方便,这例程就实现了导航界面式菜单的功能,效果如图
(, 下载次数: 2)
上传
点击文件名下载附件
要点提示
为设计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;//设置回调函数
演示功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/5be64ec8a1b06beb11b03e3f92e168a3/0/0/w_19rt8v9ntt.swf-albumId=4882720909-tvId=4882720909-isPurchase=0-cnId=12[/iqiyi]
源码及视频下载
(仅在电脑可见)
(, 下载次数: 4)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4