汪彥++劉智勇++龍振球
摘 要: 針對現(xiàn)存的機房實驗教學系統(tǒng)存在的界面簡陋、屏幕共享異常等問題,研究了相關優(yōu)化技術,實現(xiàn)了系統(tǒng)改進。改進系統(tǒng)采用SkinMagic換膚軟件、真彩色工具欄類、圖標按鈕等方式美化用戶界面,選用合理的鼠標信息捕獲技術成功解決了屏幕共享異常問題。實際應用表明,該改進系統(tǒng)界面美觀、性能穩(wěn)定,有效改善了用戶體驗,有利于提升實驗教學的質量。
關鍵詞: 機房實驗教學系統(tǒng); 用戶界面; 屏幕共享; 鼠標
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2017)02-49-03
0 引言
中國高校自1999年開始擴招以來,已經走過了十多個年頭,高校的在校生人數越來越龐大。隨著學生規(guī)模的不斷膨脹,高校計算機實驗室的教學活動面臨日益嚴峻的挑戰(zhàn),教學質量堪憂[1]。
惟有改革,才有出路。高校教師積極投身機房實驗教學的改革實踐中,取得了一定實效。在信息技術與教育教學深度融合的時代背景下,一些研究者和軟件公司針對機房教學的現(xiàn)狀,精心設計出專門適用于機房實驗教學的軟件系統(tǒng)[2-4]。
我們采用C/S模式、ADO數據訪問技術、Socket通信技術,實現(xiàn)了一個機房實驗教學管理系統(tǒng)。該系統(tǒng)利用Visual C++6.0開發(fā),以SQL Server 2000作為后臺數據庫,包括教師端軟件、學生端軟件和數據庫三部分,實現(xiàn)了屏幕共享、在線討論、電子考勤、任務下達、作業(yè)提交等比較豐富的功能,基本滿足了機房實驗教學的需求[4]。但是,該系統(tǒng)界面比較簡陋,用戶體驗欠佳。同時,系統(tǒng)在使用屏幕共享功能時,教師端操作系統(tǒng)不能響應用戶的鼠標雙擊操作。針對這兩個問題,本文研究了相關優(yōu)化技術,實現(xiàn)了界面美觀、性能穩(wěn)定的改進機房實驗教學系統(tǒng)。
1 機房實驗教學系統(tǒng)的界面美化
利用MFC建立用戶界面和應用程序框架,是利用VC6.0開發(fā)該系統(tǒng)時的主流做法,因為這種方法簡單快捷,能極大提高地開發(fā)效率。但是,利用MFC框架構建的用戶界面常常顯得簡陋,其視覺效果很難令人滿意。本文采用SkinMagic換膚軟件、真彩色工具欄類、CButtonST類等方式,對文獻[4]實現(xiàn)的機房實驗教學系統(tǒng)進行界面美化,效果顯著。
1.1 SkinMagic換膚技術
SkinMagic[5-6]是一款界面編輯軟件,提供了SkinMagicBuilder作為可視化的界面設計工具,無需編程,就可設計出美觀大方的用戶界面。設計完成的界面可以獨立保存為皮膚文件,在VC中通過SkinMagic提供的編程接口可將皮膚文件導入工程,美化用戶界面。這種技術實現(xiàn)了界面設計與程序編寫的分離,允許美工人員和軟件設計師獨立工作,最后將兩者的工作成果完美結合,特別適合軟件開發(fā)中不同類型人員的分工協(xié)作。我們研究了SkinMagic換膚技術,并用于機房實驗教學系統(tǒng)的界面美化,換膚前后視覺效果差異顯著,如圖1和圖2所示。
1.2 真彩色工具欄類的使用
利用VC6.0的MFC框架創(chuàng)建應用程序,默認的工具欄類并不支持真彩色圖標的顯示。然而,帶有真彩色圖標的工具欄卻能讓我們設計的軟件更炫更出彩,改善用戶的使用體驗。網絡上提供了CtrueColorToolBar類的下載,這是一個用于加載真彩色位圖制作工具欄的類。同時,利用Photoshop、Visual Toolbar 1.5等工具軟件,能夠非常方便地制作用于工具欄顯示的真彩色圖標。我們結合上述技術,給機房實驗教學系統(tǒng)制作了一個帶有漂亮圖標的真彩色工具欄,用戶反響良好。改進后的帶真彩色工具欄的系統(tǒng)界面截圖如圖3所示。
1.3 圖標按鈕CButtonST類的使用
VC6.0中默認的CButton類只能創(chuàng)建普通的按鈕,按鈕的視覺效果難以令人滿意。CButtonST類是CButton的派生類,能夠實現(xiàn)豐富多彩的按鈕效果,可從網上下載。CButtonST類包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四個文件,我們可在當前的VC++工程中導入這些文件,然后在StdAfx.h中編寫相應的include語句,即可在編程時使用該類。我們利用該類,為機房實驗教學系統(tǒng)加上了漂亮的按鈕,這些按鈕能同時顯示文字和精美的彩色圖標,當鼠標移動到按鈕上面時還可顯示相應的提示文字。改進后的帶圖標按鈕的系統(tǒng)界面截圖如圖4所示。
2 鼠標捕獲技術的對比與選取
屏幕共享是機房實驗教學系統(tǒng)的重要功能,文獻[7]提供了一種屏幕共享方案。我們應用該方案研發(fā)了機房實驗教學系統(tǒng),但是實驗中發(fā)現(xiàn),使用屏幕共享時教師端操作系統(tǒng)對于鼠標雙擊操作沒有響應。經過仔細分析和反復對比實驗,發(fā)現(xiàn)問題的根源在于使用了不恰當的鼠標信息獲取技術。
在屏幕共享具體應用中,除了屏幕畫面是基本的、必不可少的共享對象外,鼠標光標常常是另外一個關注的焦點。在機房實驗教學時,先將教師端屏幕中的鼠標光標的位置及其圖標實時地呈現(xiàn)在學生端屏幕畫面中,對于學生正確理解教師的操作演示要領至關重要。然后是截屏,雖然利用GDI函數能夠便捷地截取屏幕畫面,但是并不能同時獲取到鼠標光標的相關信息。在Windows操作系統(tǒng)中,利用API函數可以獲取鼠標信息,但是不同的鼠標獲取技術具有不同的優(yōu)缺點,需要根據具體應用場景的需求恰當選取。
2.1 鼠標信息獲取的基本方法
文獻[8]介紹了一種利用API函數獲取鼠標光標的簡單方法(下文稱為法1),這種方法的主要步驟:首先調用GetCursorPos函數獲取當前鼠標光標的位置,然后調用GetCursor函數得到鼠標光標的圖標句柄,最后將鼠標光標的圖標繪制到當前抓取的屏幕位圖的相應位置上。
上述法1的優(yōu)點在于,思路簡單明了,編程方便快捷。不過,文獻[7]指出,如果當前鼠標焦點不在屏幕共享系統(tǒng)的教師端軟件界面之中,那么法1雖然能夠準確獲取鼠標光標的位置,卻不能準確獲取鼠標光標的圖標。在機房實驗教學的實際應用過程中,教師往往會通過實際操作進行演示,教師端鼠標圖標不可避免會發(fā)生變化,不同的圖標代表著不同的含義。在機房實驗教學系統(tǒng)的屏幕共享系統(tǒng)中,采用法1來捕獲和共享鼠標信息顯然不能滿足實際需要。
2.2 鼠標信息獲取的改進方法
文獻[7]提出了一種改進的鼠標信息獲取方法(下文稱為法2),這種方法的最大特點是調用了AttachThreadInput函數,從而使得系統(tǒng)中不同的進程和線程能夠共享輸入隊列。
法2相對比法1,其實現(xiàn)過程較為復雜,除了調用AttachThreadInput函數外,還需要調用GetWindowThreadProcessID、WindowFromPoint、GetCurrentThreadId等函數,其具體實現(xiàn)代碼可參考文獻[7]。法2雖然實現(xiàn)過程復雜,編程比較繁瑣,但是確實解決了法1的弊端。不管當前鼠標焦點是否在屏幕共享系統(tǒng)的教師端軟件界面中,利用法2都能夠精準獲取鼠標的位置與圖標信息。
法2在解決法1弊端的同時,卻產生了新的嚴重問題。如果采用法2捕獲鼠標信息,當教師啟動機房實驗教學系統(tǒng)的屏幕共享功能后,教師端操作系統(tǒng)無法響應教師所進行的鼠標雙擊操作,只有退出屏幕共享功能,系統(tǒng)才能正常響應鼠標雙擊。這說明采用法2捕獲和共享鼠標信息將嚴重干擾用戶對電腦的正常操作,同樣不能滿足實際需求。
2.3 鼠標信息獲取的推薦方法
實際上,利用API函數GetCursorInfo能夠捕獲鼠標信息,同時避免法1和法2產生的問題,這正是本文推薦的方法(不妨稱為法3)。法3除了需要調用GetCursorInfo函數外,還需要使用光標結構體類型CURSORINFO,下面給出利用VC6.0實現(xiàn)的核心代碼:
//繪制鼠標圖標到屏幕圖像中
通過實驗發(fā)現(xiàn),利用上述代碼捕獲鼠標時,捕獲到鼠標光標的位置信息與實際位置不一致,存在一定的偏差。經過反復試探,確認捕獲到的鼠標光標的橫、縱坐標均比其實際值大10,因此,在屏幕圖像中繪制鼠標圖標之前,還應該校準鼠標光標的坐標,具體代碼如下所示:
point.x-=10;
point.y-=10;
3 結束語
針對文獻[4]設計和實現(xiàn)的機房實驗教學系統(tǒng)存在的用戶界面簡單乏味、屏幕共享功能異常等缺陷,本文探討相關應用技術,有效解決了這些問題。采用優(yōu)化技術得到的改進機房實驗教學系統(tǒng)自投入使用以來,接受了我校師生的教學實踐檢驗,其精美的界面和穩(wěn)定的性能廣受好評,為實驗教學改革提供了強有力的技術支持。當然,隨著信息技術的發(fā)展,機房實驗教學系統(tǒng)必然面臨軟硬件環(huán)境變化更新等挑戰(zhàn),師生也會提出更高的需求,我們將采取積極主動的態(tài)度,適時完善系統(tǒng),使之更好地為教學服務。
參考文獻(References):
[1] 汪彥,譚新良,何建新,費雄偉.高校C語言程序設計實驗教學
改革研究與實踐[J].電腦編程技巧與維護,2013.9(18):138-139
[2] 路芳瑞,石何太,張揚.基于C/S與RIA的實驗教學管理系統(tǒng)的
設計與實現(xiàn)[J].實驗室科學,2012.6(15):97-99
[3] 唐存東,全上克,王志平.高校實驗室教學管理系統(tǒng)設計與實
現(xiàn)[J].計算機與現(xiàn)代化,2013.9:113-116
[4] 汪彥,譚新良,何建新.基于C/S模式的機房實驗教學系統(tǒng)設
計與實現(xiàn)[J].計算機時代,2014.8:73-75
[5] 任秀英,王崛,余立新.應用SkinMagic設計交互式軟件界面[J].
電腦編程技巧與維護,2010.16:27-68
[6] 王敬,孫守遷,楊鐘亮.面向VC界面的視覺優(yōu)化設計方法與
應用[J].計算機應用,2010.30:192-195
[7] 汪彥,黃雪華,涂立.一種改進的應用于機房教學的屏幕共享
方案[J].計算機與現(xiàn)代化,2011,9:82-85
[8] 劉銳寧,宋坤.Visual C++開發(fā)典型模塊大全[M].人民郵電出
版社,2009.