畢業(yè)論文大全1_第1頁
畢業(yè)論文大全1_第2頁
畢業(yè)論文大全1_第3頁
畢業(yè)論文大全1_第4頁
畢業(yè)論文大全1_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、-1- 會議視頻管理系統(tǒng) 學(xué) 院 專 業(yè) 班 級 學(xué) 號 姓 名 指導(dǎo)教師 教師職稱 年月日 吉林省明日科技有限公司監(jiān)制 2 目錄 會議視頻管理系統(tǒng) 目錄 摘要 0 引言 1 系統(tǒng)需求分析 1 系統(tǒng)需求分析 2 開發(fā)工具的選擇 2 總體設(shè)計 1 項目規(guī)劃 2 系統(tǒng)功能結(jié)構(gòu) 3 設(shè)計目標(biāo) 3 系統(tǒng)設(shè)計 1 開發(fā)及運行環(huán)境 2 數(shù)據(jù)庫設(shè)計 1 構(gòu)建應(yīng)用程序框架 2 封裝數(shù)據(jù)庫 3 主窗口設(shè)計 4 系統(tǒng)登錄管理 5 視頻采集 6 視頻錄像 7 會議記錄 附錄 A 參考文獻(xiàn) 附錄 B 數(shù)據(jù)表 摘要 【摘要】 為了適應(yīng)全球經(jīng)濟(jì)一體化的迅速發(fā)展,各大企業(yè)紛紛在世界各地建立企業(yè)的分支機(jī)構(gòu),以 擴(kuò)大企業(yè)在經(jīng)濟(jì)

2、領(lǐng)域中的影響力。企業(yè)規(guī)模的不斷擴(kuò)大,給企業(yè)管理出現(xiàn)了新的管理要求,為 了讓各地分支機(jī)構(gòu)能夠及時的對企業(yè)決策作出迅速的反應(yīng),各企業(yè)都積極采用高科技技術(shù) 視頻會議,對各分支機(jī)構(gòu)進(jìn)行統(tǒng)一的通知、調(diào)整等,使各地的分支機(jī)構(gòu)能夠同一時間,同時按 照企業(yè)的整體規(guī)化和按排開始行動。 具有關(guān)研究表明,人腦所接受的信息中 55%來自于面對面的視覺效果,38%依賴于說話者的 語音,而只有 7%依賴于內(nèi)容。隨著計算機(jī)網(wǎng)絡(luò)通信技術(shù)發(fā)展和電信基礎(chǔ)運營成本的降低,新一 代視頻會議系統(tǒng)在各企業(yè)中得到廣泛的應(yīng)用。2004 年和 2005 年,中國視頻會議市場增長率將保 持在 32以上,在年度 IT 業(yè)界熱點技術(shù)中,視頻會議技術(shù)

3、位居前列,顯示了這一市場的潛力確 實值得期待。 【關(guān)鍵詞】會議視頻管理系統(tǒng) 吉林省明日科技有限公司監(jiān)制 0 引言 視頻會議管理系統(tǒng)通過錄像對會議的全程跟蹤和記錄,把會議記錄的圖像信息存儲到數(shù)據(jù) 庫中,通過管理系統(tǒng)對數(shù)據(jù)庫中記錄進(jìn)行管理,實現(xiàn)了通過管理系統(tǒng)對會議的全程圖像信息進(jìn) 行管理。 本系統(tǒng)為單機(jī)版視頻管理系統(tǒng),通過攝像頭進(jìn)行圖像的攝錄,以記錄形式保存在數(shù)據(jù)庫中。 通過對數(shù)據(jù)庫中的記錄的管理實現(xiàn)對會議信息的管理。 1 系統(tǒng)需求分析 1.1 系統(tǒng)需求分析 根據(jù)市場的需求,要求系統(tǒng)具有以下功能: 記錄會議信息。 具有數(shù)據(jù)備份及數(shù)據(jù)恢復(fù)的功能,確保系統(tǒng)的安全性。 視頻錄像。 視頻控制。 會議信息查

4、詢。 1.2 開發(fā)工具的選擇 會議視頻管理系統(tǒng)采用 Microsoft 公司的 Visual C+6.0 進(jìn)行開發(fā)。相信大家都聽說過這樣一 句話, “聰明的程序員使用 Delphi,真正的程序員使用 VC” ,與其他工具相比,Visual C+具有 以下特點: 1Visual C+工具以 C+語言為基礎(chǔ),因此生成的可執(zhí)行文件小,執(zhí)行效率高。 2Visual C+具有強(qiáng)大的調(diào)試功能,可以設(shè)置和跟蹤斷點,查看棧和變量信息,能夠自動 檢測內(nèi)存泄露。 3Visual C+具有強(qiáng)大的硬件控制功能,與 VB、Delphi 的 RAD 開發(fā)工具不同,Visual C+擁有很強(qiáng)的底層控制能力,現(xiàn)今的許多驅(qū)動程

5、序都采用 Visual C+進(jìn)行開發(fā)。 4Visual C+具有豐富的幫助文檔,即 MSDN。MSDN 包含了幾 GB 的文檔和源代碼,通 過它,可以解決各種技術(shù)難題。 5Visual C+出自 Micorosoft 公司,因此,對 Windows 系統(tǒng)的新技術(shù)具有很好的支持,而 其他公司的產(chǎn)品似乎總慢上半拍。 2 總體設(shè)計 2.1 項目規(guī)劃 根據(jù)需求分析,設(shè)計系統(tǒng)框架。會議視頻管理系統(tǒng)由視頻管理、綜合設(shè)置、會議管理、系 統(tǒng)維護(hù)、系統(tǒng)幫助等 5 部分組成。設(shè)計各部分具體功能如下: 視頻管理模塊 吉林省明日科技有限公司監(jiān)制 2 視頻管理模塊包括視頻采集和結(jié)束視頻采集兩部分。 綜合設(shè)置模塊 綜合設(shè)

6、置模塊由視頻格式設(shè)定、綜合設(shè)定、載取圖像到剪貼板、視頻壓縮、錄像 5 部分組 成。 會議管理模塊 會議管理模塊主要由會議記錄和會議查詢兩部分組成。 系統(tǒng)維護(hù)模塊 系統(tǒng)維護(hù)模塊包括數(shù)據(jù)備份、數(shù)據(jù)還原、系統(tǒng)初始化、開機(jī)自動運行 4 個部分。 系統(tǒng)幫助模塊 系統(tǒng)幫助模塊由關(guān)于視頻系統(tǒng)和幫助內(nèi)容兩部分構(gòu)成。 2.2 系統(tǒng)功能結(jié)構(gòu) 會議視頻系統(tǒng)的功能結(jié)構(gòu)如圖 1 所示。 圖 1 會議視頻系統(tǒng)功能結(jié)構(gòu)圖 2.3 設(shè)計目標(biāo) 本系統(tǒng)是根據(jù)中小企業(yè)的實際需求而開發(fā)的,完全能夠?qū)崿F(xiàn)企業(yè)的會議視頻管理,通過本 系統(tǒng)可以達(dá)到以下目標(biāo): 系統(tǒng)運行穩(wěn)定,安全可靠。 界面設(shè)計美觀,人機(jī)交互界面友好。 信息查詢靈活、方便、快

7、捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠。 滿足鍵盤和鼠標(biāo)的雙重操作,完全支持回車鍵。 信息安全保密。 3 系統(tǒng)設(shè)計 3.1 開發(fā)及運行環(huán)境 1硬件要求 CPU:300MHz 以上的處理器。 吉林省明日科技有限公司監(jiān)制 3 內(nèi)存:128MB,推薦 256MB。 硬盤:150MB 以上剩余空間。 顯示像素:最低 800*600,最佳效果 1024*768。 攝像頭:百腦通攝像頭。 2軟件要求 操作系統(tǒng):Windows2000/NT/XP/CE。 數(shù)據(jù)庫:SQL Server2000。 驅(qū)動程序:百腦通驅(qū)動程序。 3.2 數(shù)據(jù)庫設(shè)計 1數(shù)據(jù)庫概要說明 數(shù)據(jù)庫的選擇應(yīng)根據(jù)實際情況確定,首先應(yīng)考慮用戶的數(shù)據(jù)量大小,

8、如果數(shù)據(jù)量不大,可 以采用本地數(shù)據(jù)庫,例如 Access、Paradox 等,如果數(shù)量大,應(yīng)采用大型數(shù)據(jù)庫,例如 SQL Server、Oracle、Sybase 等。其次應(yīng)考慮經(jīng)費問題,因此一套大型數(shù)據(jù)庫需要幾萬、甚至幾十萬 的價格,所以在選擇數(shù)據(jù)庫時,還需要充分考慮用戶的實際條件。 2主要數(shù)據(jù)表的結(jié)構(gòu) 數(shù)據(jù)庫中的數(shù)據(jù)表請參見附錄 B。 4 功能模塊設(shè)計 4.1 構(gòu)建應(yīng)用程序框架 會議視頻管理系統(tǒng)采用單文檔/視圖結(jié)構(gòu)??蚣茉O(shè)計步驟如下: (1)在 Visual C+集成開發(fā)環(huán)境中單擊“File/New”菜單項,打開 New 窗口,選擇 Projects 選項卡,如圖 2 所示。 吉林省明日科

9、技有限公司監(jiān)制 4 圖 2 New 窗口 (2)在 New 窗口中選擇“MFC AppWizard(exe) ”選項,在“Project name”編輯框中輸 入工程名稱,這里為“Capture” ,單擊“OK”按鈕進(jìn)入 MFC 應(yīng)用程序向?qū)Р襟E 1 窗口,如圖 3 所示。 圖 3 MFC 應(yīng)用程序向?qū)Р襟E 1 窗口 (3)選擇“Single document”選項,表示創(chuàng)建單文檔/視圖結(jié)構(gòu)應(yīng)用程序,單擊“Finish” 按鈕創(chuàng)建應(yīng)用程序框架。 4.2 主窗口設(shè)計 會議視頻管理系統(tǒng)主窗口由菜單、工具欄、客戶區(qū)和狀態(tài)欄組成,其中狀態(tài)欄采用系統(tǒng)默 吉林省明日科技有限公司監(jiān)制 5 認(rèn)創(chuàng)建的狀態(tài)欄,其

10、他部分需要額外設(shè)計。主窗口運行效果如圖 4 所示。 圖 4 主窗口效果圖 1菜單設(shè)計 1設(shè)計菜單資源 菜單是應(yīng)用程序經(jīng)常使用的界面元素,它對應(yīng)著應(yīng)用程序的一項功能,單擊菜單項將會執(zhí) 行欲定義的操作。下面筆者詳細(xì)介紹菜單的設(shè)計過程。 (1)在工作區(qū)窗口中選中“ResourceView”標(biāo)簽頁,如圖 5 所示。 吉林省明日科技有限公司監(jiān)制 6 圖 5 資源視圖窗口 (2)展開“Menu”節(jié)點,默認(rèn)情況下,在文檔視圖結(jié)構(gòu)中,MFC 向?qū)?chuàng)建一個菜單資 源“IDR_MAINFRAME” ,雙擊該資源節(jié)點,打開菜單資源編輯窗口,修改菜單資源如下: BEGIN POPUP 視頻管理 BEGIN MENU

11、ITEM 視頻采集, ID_Set_disPlay MENUITEM 結(jié)束視頻采集, ID_MENUITEMEnd END POPUP 綜合設(shè)置 BEGIN MENUITEM 視頻格式設(shè)定, ID_Set_disFormat MENUITEM 綜合設(shè)定, ID_Set_dissorce MENUITEM 載取圖像到剪貼板, IDC_PICPIC MENUITEM 視頻壓縮, ID_VideoCompress MENUITEM 錄像, IDCAPTURE END POPUP 會議管理 BEGIN MENUITEM 會議記錄, ID_MENUITEMRECORD MENUITEM 會議查詢, ID

12、_MENUITEMQUERY END 吉林省明日科技有限公司監(jiān)制 7 POPUP 系統(tǒng)維護(hù) BEGIN MENUITEM 數(shù)據(jù)備份, ID_MENUITEMBACK MENUITEM 數(shù)據(jù)還原, ID_MENUITEMRESTORE MENUITEM 系統(tǒng)初始化, ID_MENUITEMSYSINI MENUITEM 開機(jī)自動運行, ID_MENUIAUTORUN END POPUP 幫助 BEGIN MENUITEM 關(guān)于視頻系統(tǒng)., ID_APP_ABOUT MENUITEM 幫助內(nèi)容, ID_MENUITEMHELP END END 2自定義菜單類 默認(rèn)情況下,Visual C+中的菜單

13、并不能顯示圖標(biāo)。如果需要在菜單項中顯示圖標(biāo),需要自 己重新封裝菜單類 CMenu。在本系統(tǒng)中,筆者自定義一個菜單類 CMyMenu,該類能夠在菜項項 中顯示圖標(biāo),并且實現(xiàn)了菜單項的重繪,效果如圖 6 所示。 圖 6 菜單設(shè)計效果圖 CMyMenu 類設(shè)計步驟如下: (1)新建一個 CMyMenu 類,該類派生于 CMenu。 (2)定義一個 CMenuItemInfo 類,該類用于記錄菜單項的信息,包括菜單項的圖標(biāo)索引、 菜單項文本、菜單項 ID,代碼如下: /* 定義菜單項信息 */ class CMenuItemInfo public: CMenuItemInfo()m_MenuID =

14、0; CMenuItemInfo(); UINT m_Iconindex;/菜單項圖標(biāo)索引 CString m_Text;/菜單項文本 int m_MenuID;/菜單標(biāo)識,-2頂層菜單,-1彈出式菜單,0分隔條,命令I(lǐng)D普通菜單 吉林省明日科技有限公司監(jiān)制 8 ; (3)為 CMyMenu 類添加 3 個成員變量,如下: UINT m_index; UINT m_imageindex; CMenuItemInfo Menus100;/記錄菜單項信息 (4)添加 ResetMenuStyle 方法,該方法用于修改菜單項的風(fēng)格,使菜單項具有重繪功能, 設(shè)置菜單項信息。在 ResetMenuSty

15、le 方法中利用遞歸的方式遍歷菜單資源中的每個菜單項,代 碼如下: void CMyMenu:ResetMenuStyle(HMENU m_hmenu,BOOL IsTop) CMenu* m_pMenu;/菜單指針 m_pMenu = CMenu:FromHandle(m_hmenu);/根據(jù)句柄獲取菜單指針 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;/設(shè)置菜單項圖標(biāo)索引 m_imageindex += 1; m_index+=1; CMenu* m_pSubmenu = m_pMenu-GetSubMenu(i);/獲取子菜單 if (m_pSubmenu )/如果存在子菜單,利用遞歸修改其風(fēng)格 ResetMenuStyle(m_pSubmenu-GetSafeHmenu(); 吉林省明日科技有限公司監(jiān)制 9 (5)添加 AttachMenu 方法,該方法將菜單與指定的句柄關(guān)聯(lián),并調(diào)用 ResetMenuStyle 方 法修改菜單風(fēng)格。代碼如下: /* 函 數(shù) 名: AttachMenu 作 用: 將菜單資源與菜單類關(guān)聯(lián),改變菜單

18、風(fēng)格 參 數(shù): m_hmenu是菜單資源句柄 返 回 值: 執(zhí)行成功返回值為true,否則出錯 */ bool CMyMenu:AttachMenu(HMENU m_hmenu) Attach(m_hmenu); ResetMenuStyle(m_hmenu,true); return true; (6)改寫菜單項的 MeasureItem 方法,設(shè)置頂層菜單、彈出示菜單、分隔條、普通菜單的 大小。代碼如下: /根據(jù)菜單的風(fēng)格確定菜單項的大小 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; 吉林省明日科技有限公司監(jiān)制 10 default: /普通菜單項 break; (7)改寫菜單項的 DrawItem 方法,修改繪制菜單。在該方法中調(diào)用了多個自定義的方法, 這些方法用戶繪制菜單的圖標(biāo)、文本、背景顏色等,由于篇幅關(guān)系,具體代碼請參考光盤。 /重新繪

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: 吉林省明日科技有限公司監(jiān)制 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工具欄設(shè)計 默認(rèn)情況下,在文檔視圖結(jié)構(gòu)中 MFC 應(yīng)用程序向?qū)?chuàng)建一個工具欄。該工具欄是一個普 通的工具欄,背景不能夠顯示圖像,為此,筆者修改了該工具欄,使其背景透明,效果如圖 7 所示。 圖 7 工具欄效果圖 MFC 提供的工具欄類 CToolBar,背景不能顯示圖像,因此筆者又添加了一個 CReBar 對象 m_rebar,CReBar 能夠作為工具欄的容器,并且可以設(shè)置背景圖像,如果將工具欄放置在 CReBar 控件中,并將工具欄設(shè)置為透明效果

26、,這樣,工具欄不就可以顯示圖像背景了嗎? 工具欄除了顯示背景圖像外,還應(yīng)顯示工具欄按鈕圖標(biāo)??梢栽诔绦蛑卸x一個 吉林省明日科技有限公司監(jiān)制 12 CImageList 控件,通過該控件添加一組圖標(biāo),調(diào)用工具欄的“GetToolBarCtrl(). SetHotImageList() ”方法設(shè)置圖像列表。 工具欄創(chuàng)建過程代碼如下: 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);/向圖像列表中添加圖標(biāo) 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); 吉林省明日科技有限公司監(jiān)制 13 m_wndToolBar.GetToolBarCt

29、rl().SetHotImageList(/設(shè)置工具欄的熱點圖標(biāo) m_toolimages.Detach(); /創(chuàng)建工具欄圖像列表 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(/設(shè)置工具欄按鈕的圖標(biāo) 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);/將工具欄設(shè)置為透明效果 barinfo.hbmBack = :LoadBitmap(AfxGetInstanceHandle()

32、,MAKEINTRESOURCE(IDB_BITMAP4); m_rebar.GetReBarCtrl().SetBandInfo(0, 3客戶區(qū)設(shè)計 會議視頻管理系統(tǒng)的客戶區(qū)域由樹視圖和普通視圖兩部分組成。在樹視圖中列出了系統(tǒng)中 的常用功能,用戶可以雙擊節(jié)點打開各功能模塊。為實現(xiàn)該功能,筆者自定義了一個樹視圖類 CCustomTree,該類派生于 CTreeView。 CCustomTree 類設(shè)計步驟如下: (1)通過工作區(qū)創(chuàng)建一個類,名稱為 CCustomTree,父類為 CTreeView。 (2)在 CCustomTree 類中定義 3 個成員變量,如下: CStringArray

33、m_Treenodes;/記錄節(jié)點文本 CImageList m_imagelist; /圖像列表 CFont m_font; /控件字體 (3)在 OnInitialUpdate 方法中創(chuàng)建圖像列表,添加圖標(biāo),創(chuàng)建和設(shè)置字體,修改樹視圖風(fēng) 格,添加節(jié)點。代碼如下: void CCustomTree:OnInitialUpdate() CTreeView:OnInitialUpdate(); m_imagelist.Create(16,16,ILC_COLOR24|ILC_MASK,5,5); 吉林省明日科技有限公司監(jiān)制 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、添加樹節(jié)點 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 類中實現(xiàn),而是在主框架中實現(xiàn)的。 客戶區(qū)域由樹視圖和普通視圖兩部分組成,因此需要分隔框架窗口。具體步驟如下: (1)在框架類中定義一個 CSplitterWnd 對象 m_splitter。 (2)改寫框架類的虛擬方法 OnCreateClient,劃分客戶區(qū)域,代碼如下: 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 系統(tǒng)登錄管理 1實現(xiàn)目標(biāo) 為了防止非法用戶進(jìn)入系統(tǒng),筆者設(shè)計了系統(tǒng)登錄窗口。在程序啟動時,首先顯示登錄窗 吉林省明日科技有限公司監(jiān)制 15 口,要求用戶輸入登錄信息,如果用戶輸入不合法,將禁止進(jìn)入系統(tǒng)。系統(tǒng)登錄窗口運行結(jié)果 如圖 8 所示。 圖 8 系統(tǒng)登錄 2設(shè)計步驟 (1)在工作區(qū)中選擇“Class View”選項卡,鼠標(biāo)右鍵單擊根節(jié)點,在彈出的快捷菜單中 選擇“N

39、ew Form”菜單項,打開 New Form 窗口,如圖 9 所示。 圖 9 New Form 窗口 (2)在“Name”編輯框中輸入窗口類名,例如“CLogin” ,在“Base class”組合框中選擇 一個基類,這里為“CDialog” ,單擊“OK”按鈕創(chuàng)建窗口。 (3)在工作區(qū)的資源視圖中選擇新創(chuàng)建的窗口,向窗口中添加圖片、靜態(tài)文本、群組框、 列表視圖、標(biāo)簽、編輯框、按鈕等資源。設(shè)置主要資源屬性如表 1 所示。 表 1 主要資源屬性設(shè)置 資源名稱資源 ID屬性值 吉林省明日科技有限公司監(jiān)制 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、創(chuàng)建圖像列表,向圖像列表中添加圖標(biāo),加載操作員信息, 將其顯示在列表視圖中。 BOOL CLogin:OnInitDialog() CDialog:OnInitDialog(); m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,0,0);/創(chuàng)建圖像列表 m_imagelist.Add(AfxGetApp()-LoadIcon(IDI_LOGIN1);/加載圖標(biāo) 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(/設(shè)置列表視圖的圖像列表 LoadOperators();/向列表視圖中加載操作員信息 h_prohandle = :LoadLibrary(user32);/加載動態(tài)庫 AnimateWindow = (CFun*):GetProcAddress(h_prohandle,AnimateWindow);/獲取函數(shù)地址 AnimateWindow(m_hWnd,1500,AW_CENTER);/調(diào)用動態(tài)庫中的函數(shù),使窗口特殊效果顯示 return T

43、RUE; 自定義函數(shù) LoadOperators 用于加載操作員信息,并將操作員信息顯示在列表視圖中。 void CLogin:LoadOperators() _RecordsetPtr m_pRecord; CString sql = select * from tb_Login; CString m_operator; int imageindex = 0; int imagecount = m_imagelist.GetImageCount(); 吉林省明日科技有限公司監(jiān)制 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(); 處理“登錄”按鈕的單擊事件,程序首先檢查用戶名和密碼是否為空,如果為空,進(jìn)行提 示,并退出操作。否則以用戶名和密碼為條件從數(shù)據(jù)表中查詢數(shù)據(jù),有數(shù)據(jù)返回,證明用戶名 和密碼正確,否則認(rèn)為用戶名和密碼不正確。 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 吉林省明日科技有限公司監(jiān)制 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實現(xiàn)目標(biāo) 視頻采集用于在程序中顯示攝像頭捕捉的信息。本系統(tǒng)采用 Microsoft 提供的 VFW 數(shù)字視 頻軟件包。VFW 提供了 VBX 和 AVICap 窗口類的高級編程工具,使程序員能夠通過發(fā)送消息 和設(shè)置屬性來捕獲、播放和編輯影視剪輯,運行效果如圖 10 所示。 圖 10 視頻采集 2設(shè)計步驟 (1)本系統(tǒng)對視頻的控制是通過 CCapture_Main 類實現(xiàn)的,用戶在使用時可以將該類的

49、頭 文件和源文件添加到工程中。將“Capture_Process.h”和“Capture_Process.cpp”文件添加到當(dāng)前 工程中。 吉林省明日科技有限公司監(jiān)制 19 (2)在框架類中定義 CCapture_Main 類變量 m_display。 (3)在框架創(chuàng)建時調(diào)用 m_display 的 Initialize 方法進(jìn)行初始化。 (4)調(diào)用 m_display 的 EnablePreviewVideo 方法進(jìn)行視頻采集。 3代碼分析 在框架類中定義 OnSetdisPlay 方法用于視頻采集,關(guān)鍵部分是調(diào)用 m_display 對象的 EnablePreviewVideo 方法,該方

50、法具有 5 個參數(shù),第一個參數(shù)為窗口句柄,其他 4 個參數(shù)表示顯 示區(qū)域的坐標(biāo)。詳細(xì)代碼如下: 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實現(xiàn)目標(biāo) 視頻錄像用于將攝像頭捕捉到的信息以 AVI 格式保存到磁盤中。AVI 文件格式是一種 RIFF 指定的應(yīng)用程序,用來對音頻/視頻流進(jìn)行捕捉。視頻錄像運行效果如圖 11 所示。 圖 11 視頻錄像 2設(shè)計步驟 (1)在框架類中按+鍵打開類向?qū)?,如圖 12 所示。 吉林省明日科技有限公司監(jiān)制 20 圖 12 類向?qū)?(2)選擇“Message Maps”選項卡,在“Object IDs”列表框中選擇“IDCAPTURE”資源 ID,在“Messages”列表框中雙擊“COMMAND”消息,編寫消息處理函數(shù)。 3代碼分

52、析 視頻錄像是通過自定義函數(shù) OnCapture 實現(xiàn)的。該函數(shù)主要通過 m_display 對象的 CaptureAVI 方法進(jìn)行錄像,CaptureAVI 方法具有 4 個參數(shù),第 1 個參數(shù)是 AVI 文件名稱,第 2 個參數(shù)用于設(shè)置每秒幀數(shù),第 3 個參數(shù)設(shè)置錄像時間,第 4 個參數(shù)設(shè)置品質(zhì)。 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); 吉林省明日科技有限公司監(jiān)制 21 附錄 A 參考文獻(xiàn) 1Visual Basic 精彩編程 200 例機(jī)械工業(yè)出版社 賽奎春、高春艷等 2003 年 1 月 2Visual Basic 數(shù)據(jù)庫開發(fā)實例解析機(jī)械工業(yè)出版社劉志銘、高春艷等 2003 年 8 月 3Visual FoxPro 數(shù)據(jù)庫開發(fā)實例解析機(jī)械工業(yè)出版社 王晶瑩、王國輝等 2003 年 9 月 4Power Builder 數(shù)據(jù)庫開發(fā)實例解析機(jī)械工業(yè)出版社 華傳銘、張振坤等 2003 年 9 月 5Delphi 數(shù)據(jù)庫開發(fā)實例解析機(jī)械工業(yè)出版社 賽奎春、鄭驍鵬等 2004 年 2 月 6PowerBuilder 精彩編程 200 例機(jī)械工業(yè)出版社 張振坤、李文立等 2004 年 9 月 7Visual FoxPro 精彩編程 200 例機(jī)械工業(yè)出版社

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論