陳 超
[摘要]通過編程的方式實現(xiàn)一個鍵鼠狀態(tài)實時顯示工具,該工具可以在虛擬鍵盤和虛擬鼠標上實時顯示教師的操作,解決在教學過程教師與學生之間的信息不對稱及理論與實際操作相脫節(jié)的問題,同時還探討下一步所要研究的內(nèi)容。
[關鍵詞]實時顯示 圖形化窗口 多媒體教學
中圖分類號:TP3獻標識碼:A文章編號:1671-7597(2009)0810069-01
一、引言
在講授計算機操作類知識時,教師經(jīng)常會有這樣的體會:對于一些實際操作,學生在課堂上似乎已經(jīng)完全掌握,但在上機實驗時卻問題百出。之所以出現(xiàn)這樣的問題,并不是教師沒有認真?zhèn)湔n,也不是學生在課堂上沒有認真聽講,而是在教師與學生之間出現(xiàn)了信息不對稱的問題。教師在講授某個具體操作時,面對的是實體鍵盤、實體鼠標,常常會忽視學生面前沒有鍵盤、鼠標這一事實,這時即使教師講解得非常詳細,學生也很難將操作步驟與實際的操作手法聯(lián)系在一起。為解決這一問題,本文通過編程的方式實現(xiàn)了一個鍵鼠狀態(tài)實時顯示工具,該工具可以將教師的每個操作都實時地顯示在虛擬鍵盤和虛擬鼠標上,學生可以在記住操作步驟的同時也記住對應的操作手法。該工具的實現(xiàn)過程詳述如下。
二、鍵鼠狀態(tài)實時顯示工具的實現(xiàn)過程
為了監(jiān)控系統(tǒng)的鍵盤、鼠標狀態(tài),開發(fā)時首先注冊了WH_KEYBOARD及WH_MOUSE兩個系統(tǒng)掛鉤。其中,WH_MOUSE系統(tǒng)掛鉤負責鼠標信息的預處理,在這里鼠標信息將被轉發(fā)到圖形化窗口;WH_KEYBOARD系統(tǒng)掛鉤負責鍵盤信息的預處理,用于監(jiān)控教師的每個按鍵操作,在這里對Windows系統(tǒng)中的組合鍵進行了特殊處理,如在監(jiān)控復制組合鍵“Ctrl+C”、粘貼組合鍵“Ctrl+V”時,除了監(jiān)控正常的鍵位信息外,還要記錄系統(tǒng)功能鍵的實時狀態(tài),其實現(xiàn)代碼如下:
BOOL bCtrlKeyDown = GetAsyncKeyState(VK_CONTROL)>>((sizeof(S
HORT) * 8) - 1);
BOOL bAltKeyDown = GetAsyncKeyState(VK_MENU)>>((sizeof(SHORT)
* 8) - 1);
BOOL bShiftKeyDown = GetAsyncKeyState(VK_SHIFT)>>((sizeof(SH
ORT) * 8) - 1);
if (lParam >= 0)
{
HWND hWnd = ::FindWindow(NULL, "鍵鼠狀態(tài)實時顯示工具");
if (::IsWindow(hWnd))
{
LPARAM lpMap = 0;
if (bCtrlKeyDown)
lpMap |= CTRL_MAP;
if (bAltKeyDown)
lpMap |= ALT_MAP;
if (bShiftKeyDown)
lpMap |= SHIFT_MAP;
::PostMessage( hWnd, WM_MYKEY, wParam,lpMap);
}
}
在這里,首先使用GetAsyncKeyState函數(shù)分別獲取了Ctrl、Alt、Shift鍵的當前狀態(tài),并保存在bCtrlKeyDown、bAltKeyDown、bShiftKeyDo
wn變量中,然后將這三個變量組合后連同普通鍵位信息一起轉發(fā)到圖形化窗口。
當圖形化窗口接收到傳遞過來的鍵盤、鼠標信息后,就可以做出相應的處理,在這里有兩種處理方案:1.一種方案是每次收到鍵鼠信息后,圖形化窗口立刻進行處理。這種方案能實現(xiàn)真正意義上的實時顯示,但是如果教師對鍵盤、鼠標的操作很頻繁,大量轉發(fā)過來的鍵鼠消息將會阻礙圖形化窗口對其它消息的處理,計算機的響應速度有可能會變慢;2.另一種方案是每次收到鍵鼠信息后,只替換原有的信息存檔,而每隔一定的時間間隔,再從信息存檔中取出鍵鼠信息進行顯示。當時間間隔設置得較小時,這種方案的顯示效果同方案一的顯示效果基本沒有區(qū)別,同時還將避免占用過多的CPU處理時間。本文中的鍵鼠狀態(tài)實時顯示工具基于第二種方案進行實現(xiàn),其流程圖如圖1所示。
三、鍵鼠狀態(tài)實時顯示工具的應用實例
本文所實現(xiàn)的鍵鼠狀態(tài)實時顯示工具已在教學實踐中得到了應用,并收到了良好的反饋。圖2展示的是其圖形化窗口,該窗口可被擺放在屏幕的任何位置,并可設置為最前端顯示窗口。在講解復制操作時,如果教師按下了“Ctrl+C”組合鍵,則虛擬鍵盤上的相應鍵位將高亮顯示,如圖2(a)所示。如果教師在操作過程中按下了鼠標左鍵,則虛擬鼠標上的左鍵也將被高亮顯示,如圖2(b)所示?;谠摴ぞ?學生在課堂上仿佛也直接面對著鍵盤和鼠標,教學效果大為改善。
四、結語
本文所開發(fā)的鍵鼠狀態(tài)實時顯示工具雖然已部分解決了在課堂教學過程中,教師與學生之間信息不對稱及理論與實際操作相脫節(jié)的問題,還仍然存在著一些需要進一步研究的內(nèi)容。如現(xiàn)在的圖形化界面會遮擋住屏幕的部分區(qū)域,有時會影響教師的操作,下一步可以將其設置為半透明模式,這樣既能實時顯示鍵鼠狀態(tài),又不會影響教師的操作。同時還可以將教師的操作記錄下來并保存為文件,學生在課下可以通過播放該文件進行相關操作的自學。
參考文獻:
[1]劉靜華、王永生等,計算機繪圖[M].北京:高等教育出版社,2006.5.