版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-1- 会议视频管理系统 学 院 专 业 班 级 学 号 姓 名 指导教师 教师职称 年月日 吉林省明日科技有限公司监制 2 目录 会议视频管理系统 目录 摘要 0 引言 1 系统需求分析 1 系统需求分析 2 开发工具的选择 2 总体设计 1 项目规划 2 系统功能结构 3 设计目标 3 系统设计 1 开发及运行环境 2 数据库设计 1 构建应用程序框架 2 封装数据库 3 主窗口设计 4 系统登录管理 5 视频采集 6 视频录像 7 会议记录 附录 A 参考文献 附录 B 数据表 摘要 【摘要】 为了适应全球经济一体化的迅速发展,各大企业纷纷在世界各地建立企业的分支机构,以 扩大企业在经济
2、领域中的影响力。企业规模的不断扩大,给企业管理出现了新的管理要求,为 了让各地分支机构能够及时的对企业决策作出迅速的反应,各企业都积极采用高科技技术 视频会议,对各分支机构进行统一的通知、调整等,使各地的分支机构能够同一时间,同时按 照企业的整体规化和按排开始行动。 具有关研究表明,人脑所接受的信息中 55%来自于面对面的视觉效果,38%依赖于说话者的 语音,而只有 7%依赖于内容。随着计算机网络通信技术发展和电信基础运营成本的降低,新一 代视频会议系统在各企业中得到广泛的应用。2004 年和 2005 年,中国视频会议市场增长率将保 持在 32以上,在年度 IT 业界热点技术中,视频会议技术
3、位居前列,显示了这一市场的潜力确 实值得期待。 【关键词】会议视频管理系统 吉林省明日科技有限公司监制 0 引言 视频会议管理系统通过录像对会议的全程跟踪和记录,把会议记录的图像信息存储到数据 库中,通过管理系统对数据库中记录进行管理,实现了通过管理系统对会议的全程图像信息进 行管理。 本系统为单机版视频管理系统,通过摄像头进行图像的摄录,以记录形式保存在数据库中。 通过对数据库中的记录的管理实现对会议信息的管理。 1 系统需求分析 1.1 系统需求分析 根据市场的需求,要求系统具有以下功能: 记录会议信息。 具有数据备份及数据恢复的功能,确保系统的安全性。 视频录像。 视频控制。 会议信息查
4、询。 1.2 开发工具的选择 会议视频管理系统采用 Microsoft 公司的 Visual C+6.0 进行开发。相信大家都听说过这样一 句话, “聪明的程序员使用 Delphi,真正的程序员使用 VC” ,与其他工具相比,Visual C+具有 以下特点: 1Visual C+工具以 C+语言为基础,因此生成的可执行文件小,执行效率高。 2Visual C+具有强大的调试功能,可以设置和跟踪断点,查看栈和变量信息,能够自动 检测内存泄露。 3Visual C+具有强大的硬件控制功能,与 VB、Delphi 的 RAD 开发工具不同,Visual C+拥有很强的底层控制能力,现今的许多驱动程
5、序都采用 Visual C+进行开发。 4Visual C+具有丰富的帮助文档,即 MSDN。MSDN 包含了几 GB 的文档和源代码,通 过它,可以解决各种技术难题。 5Visual C+出自 Micorosoft 公司,因此,对 Windows 系统的新技术具有很好的支持,而 其他公司的产品似乎总慢上半拍。 2 总体设计 2.1 项目规划 根据需求分析,设计系统框架。会议视频管理系统由视频管理、综合设置、会议管理、系 统维护、系统帮助等 5 部分组成。设计各部分具体功能如下: 视频管理模块 吉林省明日科技有限公司监制 2 视频管理模块包括视频采集和结束视频采集两部分。 综合设置模块 综合设
6、置模块由视频格式设定、综合设定、载取图像到剪贴板、视频压缩、录像 5 部分组 成。 会议管理模块 会议管理模块主要由会议记录和会议查询两部分组成。 系统维护模块 系统维护模块包括数据备份、数据还原、系统初始化、开机自动运行 4 个部分。 系统帮助模块 系统帮助模块由关于视频系统和帮助内容两部分构成。 2.2 系统功能结构 会议视频系统的功能结构如图 1 所示。 图 1 会议视频系统功能结构图 2.3 设计目标 本系统是根据中小企业的实际需求而开发的,完全能够实现企业的会议视频管理,通过本 系统可以达到以下目标: 系统运行稳定,安全可靠。 界面设计美观,人机交互界面友好。 信息查询灵活、方便、快
7、捷、准确,数据存储安全可靠。 满足键盘和鼠标的双重操作,完全支持回车键。 信息安全保密。 3 系统设计 3.1 开发及运行环境 1硬件要求 CPU:300MHz 以上的处理器。 吉林省明日科技有限公司监制 3 内存:128MB,推荐 256MB。 硬盘:150MB 以上剩余空间。 显示像素:最低 800*600,最佳效果 1024*768。 摄像头:百脑通摄像头。 2软件要求 操作系统:Windows2000/NT/XP/CE。 数据库:SQL Server2000。 驱动程序:百脑通驱动程序。 3.2 数据库设计 1数据库概要说明 数据库的选择应根据实际情况确定,首先应考虑用户的数据量大小,
8、如果数据量不大,可 以采用本地数据库,例如 Access、Paradox 等,如果数量大,应采用大型数据库,例如 SQL Server、Oracle、Sybase 等。其次应考虑经费问题,因此一套大型数据库需要几万、甚至几十万 的价格,所以在选择数据库时,还需要充分考虑用户的实际条件。 2主要数据表的结构 数据库中的数据表请参见附录 B。 4 功能模块设计 4.1 构建应用程序框架 会议视频管理系统采用单文档/视图结构。框架设计步骤如下: (1)在 Visual C+集成开发环境中单击“File/New”菜单项,打开 New 窗口,选择 Projects 选项卡,如图 2 所示。 吉林省明日科
9、技有限公司监制 4 图 2 New 窗口 (2)在 New 窗口中选择“MFC AppWizard(exe) ”选项,在“Project name”编辑框中输 入工程名称,这里为“Capture” ,单击“OK”按钮进入 MFC 应用程序向导步骤 1 窗口,如图 3 所示。 图 3 MFC 应用程序向导步骤 1 窗口 (3)选择“Single document”选项,表示创建单文档/视图结构应用程序,单击“Finish” 按钮创建应用程序框架。 4.2 主窗口设计 会议视频管理系统主窗口由菜单、工具栏、客户区和状态栏组成,其中状态栏采用系统默 吉林省明日科技有限公司监制 5 认创建的状态栏,其
10、他部分需要额外设计。主窗口运行效果如图 4 所示。 图 4 主窗口效果图 1菜单设计 1设计菜单资源 菜单是应用程序经常使用的界面元素,它对应着应用程序的一项功能,单击菜单项将会执 行欲定义的操作。下面笔者详细介绍菜单的设计过程。 (1)在工作区窗口中选中“ResourceView”标签页,如图 5 所示。 吉林省明日科技有限公司监制 6 图 5 资源视图窗口 (2)展开“Menu”节点,默认情况下,在文档视图结构中,MFC 向导会创建一个菜单资 源“IDR_MAINFRAME” ,双击该资源节点,打开菜单资源编辑窗口,修改菜单资源如下: BEGIN POPUP 视频管理 BEGIN MENU
11、ITEM 视频采集, ID_Set_disPlay MENUITEM 结束视频采集, ID_MENUITEMEnd END POPUP 综合设置 BEGIN MENUITEM 视频格式设定, ID_Set_disFormat MENUITEM 综合设定, ID_Set_dissorce MENUITEM 载取图像到剪贴板, IDC_PICPIC MENUITEM 视频压缩, ID_VideoCompress MENUITEM 录像, IDCAPTURE END POPUP 会议管理 BEGIN MENUITEM 会议记录, ID_MENUITEMRECORD MENUITEM 会议查询, ID
12、_MENUITEMQUERY END 吉林省明日科技有限公司监制 7 POPUP 系统维护 BEGIN MENUITEM 数据备份, ID_MENUITEMBACK MENUITEM 数据还原, ID_MENUITEMRESTORE MENUITEM 系统初始化, ID_MENUITEMSYSINI MENUITEM 开机自动运行, ID_MENUIAUTORUN END POPUP 帮助 BEGIN MENUITEM 关于视频系统., ID_APP_ABOUT MENUITEM 帮助内容, ID_MENUITEMHELP END END 2自定义菜单类 默认情况下,Visual C+中的菜单
13、并不能显示图标。如果需要在菜单项中显示图标,需要自 己重新封装菜单类 CMenu。在本系统中,笔者自定义一个菜单类 CMyMenu,该类能够在菜项项 中显示图标,并且实现了菜单项的重绘,效果如图 6 所示。 图 6 菜单设计效果图 CMyMenu 类设计步骤如下: (1)新建一个 CMyMenu 类,该类派生于 CMenu。 (2)定义一个 CMenuItemInfo 类,该类用于记录菜单项的信息,包括菜单项的图标索引、 菜单项文本、菜单项 ID,代码如下: /* 定义菜单项信息 */ class CMenuItemInfo public: CMenuItemInfo()m_MenuID =
14、0; CMenuItemInfo(); UINT m_Iconindex;/菜单项图标索引 CString m_Text;/菜单项文本 int m_MenuID;/菜单标识,-2顶层菜单,-1弹出式菜单,0分隔条,命令ID普通菜单 吉林省明日科技有限公司监制 8 ; (3)为 CMyMenu 类添加 3 个成员变量,如下: UINT m_index; UINT m_imageindex; CMenuItemInfo Menus100;/记录菜单项信息 (4)添加 ResetMenuStyle 方法,该方法用于修改菜单项的风格,使菜单项具有重绘功能, 设置菜单项信息。在 ResetMenuSty
15、le 方法中利用递归的方式遍历菜单资源中的每个菜单项,代 码如下: void CMyMenu:ResetMenuStyle(HMENU m_hmenu,BOOL IsTop) CMenu* m_pMenu;/菜单指针 m_pMenu = CMenu:FromHandle(m_hmenu);/根据句柄获取菜单指针 if (m_pMenu!= NULL) for (UINT i = 0;i GetMenuItemCount();i+) int m = m_pMenu-GetMenuItemID(i);/获取菜单项ID Menusm_index.m_MenuID = m;/ m_pMenu-GetM
16、enuItemID(i); /如果为弹出式菜单,返回- 1, /分隔条返回0,普通菜单,返回ID if ( (Menusm_index.m_MenuIDGetMenuString(i,Menusm_index.m_Text,MF_BYPOSITION);/获取菜单项文本 m_pMenu-ModifyMenu(i,MF_OWNERDRAW|MF_BYPOSITION |MF_STRING, Menusm_index.m_MenuID,(LPCTSTR)(/修改菜单信息 if (Menusm_index.m_MenuID0) Menusm_index.m_Iconindex = m_imagein
17、dex;/设置菜单项图标索引 m_imageindex += 1; m_index+=1; CMenu* m_pSubmenu = m_pMenu-GetSubMenu(i);/获取子菜单 if (m_pSubmenu )/如果存在子菜单,利用递归修改其风格 ResetMenuStyle(m_pSubmenu-GetSafeHmenu(); 吉林省明日科技有限公司监制 9 (5)添加 AttachMenu 方法,该方法将菜单与指定的句柄关联,并调用 ResetMenuStyle 方 法修改菜单风格。代码如下: /* 函 数 名: AttachMenu 作 用: 将菜单资源与菜单类关联,改变菜单
18、风格 参 数: m_hmenu是菜单资源句柄 返 回 值: 执行成功返回值为true,否则出错 */ bool CMyMenu:AttachMenu(HMENU m_hmenu) Attach(m_hmenu); ResetMenuStyle(m_hmenu,true); return true; (6)改写菜单项的 MeasureItem 方法,设置顶层菜单、弹出示菜单、分隔条、普通菜单的 大小。代码如下: /根据菜单的风格确定菜单项的大小 void CMyMenu:MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct ) lpMeasur
19、eItemStruct-itemHeight = 26; lpMeasureItemStruct-itemWidth = 130; UINT m_type; m_type = (CMenuItemInfo*)(lpMeasureItemStruct-itemData)-m_MenuID; switch(m_type) case -2: /顶层菜单 lpMeasureItemStruct-itemWidth = (CMenuItemInfo*) (lpMeasureItemStruct-itemData)-m_Text.GetLength()*10; break; case -1: /弹出式菜单
20、 lpMeasureItemStruct-itemWidth = (CMenuItemInfo*) (lpMeasureItemStruct-itemData)-m_Text.GetLength()*10; break; case 0: /分隔条 lpMeasureItemStruct-itemHeight = 10; break; 吉林省明日科技有限公司监制 10 default: /普通菜单项 break; (7)改写菜单项的 DrawItem 方法,修改绘制菜单。在该方法中调用了多个自定义的方法, 这些方法用户绘制菜单的图标、文本、背景颜色等,由于篇幅关系,具体代码请参考光盘。 /重新绘
21、制菜单项 void CMyMenu:DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) if (lpDrawItemStruct-CtlType = ODT_MENU) if(lpDrawItemStruct-itemData = NULL)return; CDC* pdc = CDC:FromHandle(lpDrawItemStruct-hDC); pdc-SetBkMode(TRANSPARENT); CRect m_rect (lpDrawItemStruct-rcItem); CString m_text = (CMenuItemInfo*)(
22、lpDrawItemStruct-itemData)-m_Text; UINT m_MenuID,m_State,m_imageid; m_imageid = (CMenuItemInfo*)(lpDrawItemStruct-itemData)-m_Iconindex; m_State = lpDrawItemStruct-itemState; m_MenuID = (CMenuItemInfo*)(lpDrawItemStruct-itemData)-m_MenuID; switch(m_MenuID) case -2: DrawTopMenu(pdc,m_rect,m_State Dra
23、wText(pdc,m_rect,m_text); break; case -1: if (m_State else DrawTopMenu(pdc,m_rect,false); DrawText(pdc,m_rect,m_text); break; case 0: 吉林省明日科技有限公司监制 11 CRect rect1(m_rect); rect1.DeflateRect(2,10,2,5); pdc-Draw3dRect( break; default: CRect c_rect (m_rect); DrawBKColor(pdc,c_rect,m_State DrawText(pdc,
24、m_rect,m_text); DrawMenuIcon(pdc, m_imageid,m_rect,true); break; (8)在框架类中定义一个 CMyMenu 变量 m_menu,处理框架的 WM_DRAWITEM、WM_MEASUREITEM 消息,代码如下: void CMainFrame:OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) m_menu.MeasureItem(lpMeasureItemStruct); void CMainFrame:OnDrawItem(int nIDCtl,
25、 LPDRAWITEMSTRUCT lpDrawItemStruct) m_menu.DrawItem(lpDrawItemStruct); 2工具栏设计 默认情况下,在文档视图结构中 MFC 应用程序向导会创建一个工具栏。该工具栏是一个普 通的工具栏,背景不能够显示图像,为此,笔者修改了该工具栏,使其背景透明,效果如图 7 所示。 图 7 工具栏效果图 MFC 提供的工具栏类 CToolBar,背景不能显示图像,因此笔者又添加了一个 CReBar 对象 m_rebar,CReBar 能够作为工具栏的容器,并且可以设置背景图像,如果将工具栏放置在 CReBar 控件中,并将工具栏设置为透明效果
26、,这样,工具栏不就可以显示图像背景了吗? 工具栏除了显示背景图像外,还应显示工具栏按钮图标。可以在程序中定义一个 吉林省明日科技有限公司监制 12 CImageList 控件,通过该控件添加一组图标,调用工具栏的“GetToolBarCtrl(). SetHotImageList() ”方法设置图像列表。 工具栏创建过程代码如下: if (!m_wndToolBar.CreateEx(this,WS_CHILD| CBRS_TOOLTIPS|CBRS_FLOATING| WS_VISIBLE | CBRS_ALIGN_TOP|TBSTYLE_FLAT) TRACE0(Failed to cre
27、ate toolbarn); return -1; m_wndToolBar.SetButtons(NULL,13); int record = 0; CString menutext; CCHAR* c_temp; for (int m = 0;mLoadIcon(IDI_ICON2);/向图像列表中添加图标 m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON3); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON4); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_I
28、CON5); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON6); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON7); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON8); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON9); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON10); 吉林省明日科技有限公司监制 13 m_wndToolBar.GetToolBarCt
29、rl().SetHotImageList(/设置工具栏的热点图标 m_toolimages.Detach(); /创建工具栏图像列表 m_toolimages.Create(32,32,ILC_COLOR32|ILC_MASK,1,1); /加载图像列表 m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON2); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON3); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON4); m_toolimages.Add(AfxGe
30、tApp()-LoadIcon(IDI_ICON5); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON6); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON7); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON8); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON9); m_toolimages.Add(AfxGetApp()-LoadIcon(IDI_ICON10); m_wndToolBar.GetToolB
31、arCtrl().SetImageList(/设置工具栏按钮的图标 m_toolimages.Detach(); m_rebar.Create(this); m_rebar.AddBar( REBARBANDINFO barinfo; barinfo.cbSize = sizeof(barinfo); barinfo.fMask = RBBIM_BACKGROUND; m_wndToolBar.ModifyStyle( 0,TBSTYLE_TRANSPARENT);/将工具栏设置为透明效果 barinfo.hbmBack = :LoadBitmap(AfxGetInstanceHandle()
32、,MAKEINTRESOURCE(IDB_BITMAP4); m_rebar.GetReBarCtrl().SetBandInfo(0, 3客户区设计 会议视频管理系统的客户区域由树视图和普通视图两部分组成。在树视图中列出了系统中 的常用功能,用户可以双击节点打开各功能模块。为实现该功能,笔者自定义了一个树视图类 CCustomTree,该类派生于 CTreeView。 CCustomTree 类设计步骤如下: (1)通过工作区创建一个类,名称为 CCustomTree,父类为 CTreeView。 (2)在 CCustomTree 类中定义 3 个成员变量,如下: CStringArray
33、m_Treenodes;/记录节点文本 CImageList m_imagelist; /图像列表 CFont m_font; /控件字体 (3)在 OnInitialUpdate 方法中创建图像列表,添加图标,创建和设置字体,修改树视图风 格,添加节点。代码如下: void CCustomTree:OnInitialUpdate() CTreeView:OnInitialUpdate(); m_imagelist.Create(16,16,ILC_COLOR24|ILC_MASK,5,5); 吉林省明日科技有限公司监制 14 m_imagelist.Add(AfxGetApp()-LoadI
34、con(IDI_ICON1); m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_ICON2); m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_ICON3); m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_ICON4); this-GetTreeCtrl().SetImageList( this-GetTreeCtrl().DeleteAllItems(); this-ModifyStyle(0,TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS ); /
35、添加树节点 HTREEITEM h_root; CString tempstr; h_root = this-GetTreeCtrl().InsertItem(功能列表,0,0); for(int i = 0;iGetTreeCtrl().InsertItem(tempstr,1,2,h_root); this-GetTreeCtrl().Expand(h_root,TVE_EXPAND); this-GetTreeCtrl().SetBkColor(RGB(232,254,255); this-GetTreeCtrl().SetTextColor(RGB(0,0,255); m_font.C
36、reateFont(0,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_STRING_PRECIS ,CLIP_TT_ALWAYS,DEFAULT_QUALITY,DEFAULT_PITCH,宋体); this-SetFont( 注意:树视图的双击事件并没有在 CCustomTree 类中实现,而是在主框架中实现的。 客户区域由树视图和普通视图两部分组成,因此需要分隔框架窗口。具体步骤如下: (1)在框架类中定义一个 CSplitterWnd 对象 m_splitter。 (2)改写框架类的虚拟方法 OnCreateClient,划分客户区域,代码如下: BOO
37、L CMainFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) m_splitter.CreateStatic(this,1,2); m_splitter.CreateView(0,1,RUNTIME_CLASS(CCaptureView),CSize(200,100),pContext); m_splitter.CreateView(0,0,RUNTIME_CLASS(CCustomTree),CSize(200,100),pContext); m_temptree = (CCustomTree*)m_sp
38、litter.GetPane(0,0); m_treehandle = m_temptree-m_hWnd; return TRUE;/CFrameWnd:OnCreateClient(lpcs, pContext); 4.3 系统登录管理 1实现目标 为了防止非法用户进入系统,笔者设计了系统登录窗口。在程序启动时,首先显示登录窗 吉林省明日科技有限公司监制 15 口,要求用户输入登录信息,如果用户输入不合法,将禁止进入系统。系统登录窗口运行结果 如图 8 所示。 图 8 系统登录 2设计步骤 (1)在工作区中选择“Class View”选项卡,鼠标右键单击根节点,在弹出的快捷菜单中 选择“N
39、ew Form”菜单项,打开 New Form 窗口,如图 9 所示。 图 9 New Form 窗口 (2)在“Name”编辑框中输入窗口类名,例如“CLogin” ,在“Base class”组合框中选择 一个基类,这里为“CDialog” ,单击“OK”按钮创建窗口。 (3)在工作区的资源视图中选择新创建的窗口,向窗口中添加图片、静态文本、群组框、 列表视图、标签、编辑框、按钮等资源。设置主要资源属性如表 1 所示。 表 1 主要资源属性设置 资源名称资源 ID属性值 吉林省明日科技有限公司监制 16 EditIDC_EDIT2StylesPassword Caption登录 Butto
40、nIDC_CONFIRM StylesFlat EditIDC_EDIT3GeneralDisabled 3代码分析 改写对话框的 PreTranslateMessage 方法,按键控制焦点移动。 BOOL CLogin:PreTranslateMessage(MSG* pMsg) if (pMsg-message=WM_KEYDOWN) if (pMsg-wParam = 13) if (pMsg-hwnd = m_password.m_hWnd) pMsg-wParam = 9; return CDialog:PreTranslateMessage(pMsg); 处理对话框初始化时的消息,
41、创建图像列表,向图像列表中添加图标,加载操作员信息, 将其显示在列表视图中。 BOOL CLogin:OnInitDialog() CDialog:OnInitDialog(); m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,0,0);/创建图像列表 m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_LOGIN1);/加载图标 m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_LOGIN2); m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_ICON1
42、1); m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_ICON12); m_list.SetImageList(/设置列表视图的图像列表 LoadOperators();/向列表视图中加载操作员信息 h_prohandle = :LoadLibrary(user32);/加载动态库 AnimateWindow = (CFun*):GetProcAddress(h_prohandle,AnimateWindow);/获取函数地址 AnimateWindow(m_hWnd,1500,AW_CENTER);/调用动态库中的函数,使窗口特殊效果显示 return T
43、RUE; 自定义函数 LoadOperators 用于加载操作员信息,并将操作员信息显示在列表视图中。 void CLogin:LoadOperators() _RecordsetPtr m_pRecord; CString sql = select * from tb_Login; CString m_operator; int imageindex = 0; int imagecount = m_imagelist.GetImageCount(); 吉林省明日科技有限公司监制 17 m_pRecord = dataManage.p_Con-Execute(_bstr_t)sql,NULL,
44、adCmdText); while (! m_pRecord-ADOEOF) m_operator = (TCHAR*)(_bstr_t)m_pRecord-GetCollect(m_name); m_list.InsertItem(100,m_operator,imageindex); if (imageindexMoveNext(); 处理“登录”按钮的单击事件,程序首先检查用户名和密码是否为空,如果为空,进行提 示,并退出操作。否则以用户名和密码为条件从数据表中查询数据,有数据返回,证明用户名 和密码正确,否则认为用户名和密码不正确。 void CLogin:OnConfirm() CS
45、tring c_password; m_password.GetWindowText(c_password); if (m_username.IsEmpty()|c_password.IsEmpty() MessageBox(用户名或密码不能为空,提示,64); return; CString sql = select * from tb_login where m_name = ? and m_password = ?; dataManage.p_Com-ActiveConnection = dataManage.p_Con.GetInterfacePtr(); dataManage.p_C
46、om-CommandText =(_bstr_t) sql; _ParameterPtr m_param1,m_param2; m_param1 = dataManage.p_Com-CreateParameter(a,adVarChar,adParamInput,30); m_param1-Value = (_bstr_t)m_username; dataManage.p_Com-Parameters-Append(m_param1); m_param2 = dataManage.p_Com-CreateParameter(b,adVarChar,adParamInput,30); m_pa
47、ram2-Value = (_bstr_t)c_password; dataManage.p_Com-Parameters-Append(m_param2); try dataManage.p_Record = dataManage.p_Com-Execute(0,NULL,adCmdText); if (dataManage.p_Record-BOF else 吉林省明日科技有限公司监制 18 AnimateWindow(m_hWnd,2500,AW_SLIDE|AW_HIDE|AW_BLEND); :FreeLibrary(h_prohandle); EndDialog(0); catch
48、(_com_error dataManage.p_Com-Parameters-Delete(a); dataManage.p_Com-Parameters-Delete(b); 4.4 视频采集 1实现目标 视频采集用于在程序中显示摄像头捕捉的信息。本系统采用 Microsoft 提供的 VFW 数字视 频软件包。VFW 提供了 VBX 和 AVICap 窗口类的高级编程工具,使程序员能够通过发送消息 和设置属性来捕获、播放和编辑影视剪辑,运行效果如图 10 所示。 图 10 视频采集 2设计步骤 (1)本系统对视频的控制是通过 CCapture_Main 类实现的,用户在使用时可以将该类的
49、头 文件和源文件添加到工程中。将“Capture_Process.h”和“Capture_Process.cpp”文件添加到当前 工程中。 吉林省明日科技有限公司监制 19 (2)在框架类中定义 CCapture_Main 类变量 m_display。 (3)在框架创建时调用 m_display 的 Initialize 方法进行初始化。 (4)调用 m_display 的 EnablePreviewVideo 方法进行视频采集。 3代码分析 在框架类中定义 OnSetdisPlay 方法用于视频采集,关键部分是调用 m_display 对象的 EnablePreviewVideo 方法,该方
50、法具有 5 个参数,第一个参数为窗口句柄,其他 4 个参数表示显 示区域的坐标。详细代码如下: void CMainFrame:OnSetdisPlay() m_showed = true; CRect m_rect,m_rectview; this-GetClientRect(m_rect); CWnd* tempview = m_splitter.GetPane(0,0); tempview-GetClientRect(m_rectview); m_display.EnablePreviewVideo(m_hWnd,m_rectview.right+10,m_rect.top+60,m_r
51、ect.right,m_rect.bottom); 4.5 视频录像 1实现目标 视频录像用于将摄像头捕捉到的信息以 AVI 格式保存到磁盘中。AVI 文件格式是一种 RIFF 指定的应用程序,用来对音频/视频流进行捕捉。视频录像运行效果如图 11 所示。 图 11 视频录像 2设计步骤 (1)在框架类中按+键打开类向导,如图 12 所示。 吉林省明日科技有限公司监制 20 图 12 类向导 (2)选择“Message Maps”选项卡,在“Object IDs”列表框中选择“IDCAPTURE”资源 ID,在“Messages”列表框中双击“COMMAND”消息,编写消息处理函数。 3代码分
52、析 视频录像是通过自定义函数 OnCapture 实现的。该函数主要通过 m_display 对象的 CaptureAVI 方法进行录像,CaptureAVI 方法具有 4 个参数,第 1 个参数是 AVI 文件名称,第 2 个参数用于设置每秒帧数,第 3 个参数设置录像时间,第 4 个参数设置品质。 void CMainFrame:OnCapture() CString Filter; CString Filename; CRect Rect; Filter = AVI Files (*.avi)|*.avi|; CFileDialog FileDlg(FALSE, avi, NULL, O
53、FN_HIDEREADONLY | OFN_OVERWRITEPROMPT, Filter, this); if (FileDlg.DoModal() = IDOK) Filename = FileDlg.GetPathName(); m_display.CaptureAVI(Filename,4.0,30,10); 吉林省明日科技有限公司监制 21 附录 A 参考文献 1Visual Basic 精彩编程 200 例机械工业出版社 赛奎春、高春艳等 2003 年 1 月 2Visual Basic 数据库开发实例解析机械工业出版社刘志铭、高春艳等 2003 年 8 月 3Visual FoxPro 数据库开发实例解析机械工业出版社 王晶莹、王国辉等 2003 年 9 月 4Power Builder 数据库开发实例解析机械工业出版社 华传铭、张振坤等 2003 年 9 月 5Delphi 数据库开发实例解析机械工业出版社 赛奎春、郑骁鹏等 2004 年 2 月 6PowerBuilder 精彩编程 200 例机械工业出版社 张振坤、李文立等 2004 年 9 月 7Visual FoxPro 精彩编程 200 例机械工业出版社
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版数学一年级下册教案
- 2024年游艇码头物业委托管理及船舶维护服务协议3篇
- 2024年甲乙双方关于物联网技术研发与推广的合同
- 商场工作计划模板七篇
- 减温减压阀行业行业发展趋势及投资战略研究分析报告
- 简短的个人述职报告
- 2022新学期开学感悟(10篇)
- 以家为话题作文15篇
- 幼儿园大班体育教案教学
- 土木工程认知实习报告4篇
- JJF(石化)047-2021氟化氢气体检测报警器校准规范
- 品质总监述职报告
- 2024年中信金属股份有限公司招聘笔试参考题库附带答案详解
- 山东省淄博市2022-2023学年高一上学期期末数学试题含答案
- 7【题组七】双变量的恒成立与存在性问题
- 2023年1月自考11749商务管理综合应用试题及答案
- 汽车制造整车AUDIT质量评审
- 非洲猪瘟防控难点与对策
- 教师如何管理和控制自己的情绪
- 《中外历史纲要(上)》全册单元知识点高频考点
- (完整版)庭审笔录(刑事普通程序)
评论
0/150
提交评论