根据数据表动态生成菜单 功能展示
•在设计应用程序时,为了增加灵活性,经常根据需要动态生成菜单。当前实例实现了通过数据表内容,动态生成菜单的功能。
效果如图
3.上位机VC MFC根据表中数据动态生成菜单
要点提示
•动态生成菜单的关键问题是如何添加菜单项,与级联菜单 ,在MFC中,提供了Cmenu类用于操作和管理菜单,此类提供了许多方法用于添加菜单和级联菜单;
•其中AppendMenu函数用于在菜单的末尾添加一个新的菜单项;
•CreatePopupMenu函数用于创建一个弹出式菜单
实现功能
•1.新建一个基于对话框的应用程序
•2.在对话框 添加三个成员变量
• CMenu menu;
• HMENU h_menu ;
• HMENU h_submenu;
•3.在对话框中添加以下三个函数
• void LoadMenuFromDatabase();
• void LoadSubMenu(CMenu* m_menu,CString str);
•BOOLIsHaveSubMenu(CString);
•在APP类中添加数据库存处理的变量
•_ConnectionPtrm_pCon;
•_RecordsetPtrm_pRecord;
•及在InitInstance()中初始化
• AfxOleInit();
•
• m_pCon.CreateInstance(__uuidof(Connection));
• m_pRecord.CreateInstance(__uuidof(Recordset));
•
• m_pCon->ConnectionString ="rovider=Microsoft.Jet.OLEDB.4.0; \
• Data Source=./Menu.mdbersist SecurityInfo=False";
• try
• {m_pCon->Open("","","",-1);}
• catch(...)
• {
• AfxMessageBox("数据库连接错误",0,0); exit;
• }
•最后 一点
•在使用ADO技术时,需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“Program Files\CommonFiles\System\ado\”目录下。
•例:如果你的系统盘为C盘,则该文件位于“C:\Program Files\Common Files\System\ado”目录中。所以需要打开工程文件,并展开“FileView”视图中的“Header Files”节点,然后双击“StdAfx.h”文件,将代码中的“d:\Program Files\CommonFiles\System\ado\msado15.dll”改为“c:\Program Files\CommonFiles\System\ado\msado15.dll”。
•
•具体看视频演示
源码及视频下载:(仅电脑可见)
|