摘 要:對于初步接觸應用程序開發的學生而言,開發Windows應用程序思維方式相對而言是比較抽象的,因而如何開解生動的讓學生理解Windows API函數的調用原理,提高其應用技能一直是Windows程序設計課程教學的重點和難點。本文試圖以繪圖工具使用的普遍性和共同規律性為例,講解Windows API函數調用的格式、參數意義和調用關系,以期提高同學們Windows程序設計和應用開發能力。
關鍵詞:API函數 程序設計 教學法
Windows程序設計課程是計算機專業的基礎應用實踐課,主要目的是培養學生利用Visual Studio開發工具開發基于Windows操作系統的應用軟件,要求學生掌握初步的工程實踐設計與開發能力。由于該課程將涉及大量的Windows API函數調用,函數格式及各數據結構對初學者而言具有重大的挑戰性,因而學生普遍反映學習比較困難。簽此,本文試圖以繪圖工具教學為例找出Windows API函數應用的規律及關聯性,讓學生明白程序設計的邏輯性,希能為提高Windows 程序設計教學質量提供一種實踐方法。
一、繪圖工具
Windows 繪圖工具畫筆用來繪制直線、曲線和勾勒繪圖對象的形狀輪廓,而畫刷則用于繪圖對象實心形狀或者說填充指定區域。利用Windows API函數繪制任何圖形都必須設置好這種兩種工具,因而準確高效利用畫筆和畫刷工具是Windows GDI繪圖的基礎。實際上畫筆、畫刷與Windows程序設計中具他工具使用都有其共同的規律,學生如果能有效掌握畫筆與畫刷的使用,對提高Windows應用程序教學質量和學生利用Windows平臺開發應用程序能力具有重要的意義。
二、Windows 畫筆畫刷教學
繪圖工具畫筆與畫刷在Windows程序設計中調用都遵循共同規律:創建工具,將工具選入設備環境和刪除工具。因而教學過程中始終以此為主線,重點引入學生編程習慣的養成。本文首先以畫筆的教學為主要對象,教學過程中兼顧共同規律的講述。
創建畫筆首先要定義畫筆句柄,由于Windows句柄相對比較多,學生對于以前所學的句柄知識不一定全部還記得,因而我們對句柄做了一個簡要的復習,主要要求同學們講出HWND、HDC、HINSTANCE等句柄的主要作用。然后本文給出畫筆句柄的定義,如:HPEN hPen; 要求學生掌握畫筆句柄是畫筆調用的重要標識。其次,本文還要求學生理解句柄與C++語言的int、float、double數據類型的區別與聯系。有了畫筆句柄后,就是如何創建畫筆,教學應總結兩種畫筆創建方式:調用系統畫筆和自定義畫筆。調用系統畫筆使用Widows API函數GetStockObject,其調用實例如:hPen=(HPEN)GetStockObject(BLACK_PEN),其中參數為系統定義好的類型,主要有WHITE_PEN、BLACK_PEN、DC_PEN和NULL_PEN。自定義畫筆主要利用函數CreatePen,教學過程中主要在畫筆樣式的理解,本文通過實際程序運行實例演示讓同學們生動開解理解其內涵。對于畫筆顏色參數我們主要應用RGB宏定義,為了讓學生們理解此顏色參使用,以中學繪畫課程中的三原色來形象講解其原理。畫筆應用的第二步是利用SelectObject函數將畫筆選入設備環境,如 hPenOld=SelectObject(hDC,hPen),其中特別要強調設備環境hDC,畫筆句柄hPen的含義。最后,講解如何刪除當前畫筆,兩種形式:用舊畫筆代替原有畫筆如SelectObject(hDC, hPenOld),另一種形式是利用Windows API函數DeleteObject刪除畫筆。
畫刷使用和畫筆一樣,同樣分三步:創建畫刷,將畫刷選入設備環境和刪除畫刷。畫刷須先申明其句柄HBRUSH hBrush,然后才能調用GetStockObject和CreateSolidBrush、CreateHatchBrush來創建畫刷。對于系統自定義畫刷主要有BLACK_BRUSH黑色畫刷、DKGRAY_BRUSH深灰色畫刷、GRAY_BRUSH灰色畫刷、HOLLOW_BRUSH 虛畫刷、LTGRAY_BRUSH亮灰色畫刷、NULL_BRUSH空畫刷和WHITE_BRUSH白色畫刷。如要自定義具有指定顏色的單色畫刷須使用CreateSolidBrush;如果圖形需要陰影圖案和有顏色的畫刷則要調用函數CreateHatchBrush。為了有效讓同學們理解畫刷樣式一繪圖結果間的關系,我們也實際運行了簡單的圖形,以理解不同樣式參數下圖形效果。最后將畫刷選入設備環境和刪除畫刷與畫筆應用基本一致,主要要求同學們掌握其應用的共同特征,對程序設計中的其他類似問題能舉一反三。
結語
Windows程序設計課程涉及大量Windows API函數調度,且函數格式和數據結構格式對初學者而言都具有重大的挑戰性,因而學習效果一直不佳。本文針對此問題,以繪圖工具畫筆與畫刷教學為例,探討其應用過程及共同規律性,以提高本課程的實際教學效果。
參考文獻
[1]張月.課程單元教學設計中的案例設計——以windows程序設計及實訓課程教學為例[J].南京廣播電視大學學報,2015(4):41-42.
[2]陳健.windows應用程序開發中若干重要api函數的調用[J].吉林師范大學學報:自然科學版,2003(1):86-88.
作者簡介
唐小勇(1973.03—),男,漢族,湖南洞口人,副教授,博士,現就職于湖南農業大學信息科學技術學院,主要研究方向:計算機教學法、高性能計算。