Windows编程初步(一)
第一節:安裝幫助文檔
使用C語言進行Windows開發,必然使用到WindowsSDK。Windows SDK指Windows開發人員工具包,是為使用C語言開發Windows程序所提供的工具集。里面提供的工具異常全面豐富,很少有人能全部了解,在開發Windows應用程序時,應同時使用MSDN,即俗稱Windows開發幫助。安裝好MSDN后,在程序設計過程中,不記得函數調用方式時,可以在VC中將光標移動到函數名上按下F1幫助鍵,即可以獲得這個函數的所有信息,非常方便;在遇到難解的編譯出錯信息時,也可在輸出欄出錯的行上按下F1獲得詳細的錯誤說明。由于MSDN有1.2G,無需全部安裝,在課程設計階段,只需要安裝全文索引、VC++文檔和Platform SDK即可,在開始安裝時可選擇自定義安裝。
圖1 MSDN的自定義安裝
圖2 選擇索引,VC,下面還有SDK
第二節:簡單的Windows程序(一)
純粹的Windows編程代碼量較大,但是不少代碼系統已經幫我們生成,所以初學者快速掌握windows編程的方法就是利用現成的框架,找到需要修改的地方,然后實現設計意圖。
類似C語言的學習,Windows編程也應為課程設計建立一個工作空間:
圖 3 創建空白工作區
然后向空白工作區中添加我們第一個Windows程序:
圖 4 第一步,創建合適的應用程序
圖 5 選擇典型的HelloWorld程序
直接按下Finish可創建第一個程序。不用去看具體代碼,直接編譯執行,選擇調試執行,可以看到這個程序執行的結果。(注:程序開發階段應使用調試執行觀察程序行為)
圖 6 框架程序
程序運行的結果是一個窗口,可以放大縮小或者調整大小,還具有菜單。這些內容在將來都可以由程序員來自己定義。
打開代碼WinStep1.cpp,首先觀察到得就是一個特殊的main函數——WinMain
程序片段 1 主函數和消息循環
類似C語言下的main, WinMain是程序的入口,具有固定的格式。函數前段有兩個LoadString函數調用。其意義是從資源中加載一些字符串。所謂資源,初步的理解可以是這樣的:程序員打算發布(編寫程序后銷售)的應用程序中有一些字符串常量,對話框表現等素材,隨著發布地點不同(例如在美國銷售和中國銷售),所使用的語言提示,對話框布局等均有所不同,但是程序核心的邏輯是不變的。將這些素材統一提取出來專門放在叫做資源文件的文件中,這樣若是變更發布地點,只需要將這些資源文件交給專門的翻譯和美工去完成,不必涉及到復雜的程序邏輯。這樣將程序邏輯與資源分開,使應用程序適應性和靈活性更強了。
第一個LoadString是加載窗口的標題。在圖4中就是WinStep1。第二個是窗口的類別名稱。關于窗口類,因為我們實際上一行代碼都沒有改變,所以WinStep實現的功能很有限,但是在將來完善后會逐漸變得功能強大些,從代碼而言,是同一個工程的源代碼不停地修改,從系統角度來看,也許多個可執行的程序都在磁盤上,為了區分這些程序,可以分類叫做"張三的窗口V1.0",“張三的窗口V1.1”,為了區分不同目的的程序,還可以叫做“斗地主V2.1 by 張三”和“電腦播音員V1.1 by李四”這樣的名字。這些由程序員定義的,用來區別計算機中不同窗口目的的字符串,就是窗口類。嘗試用下面代碼替換掉這兩行程序:
程序片段 2 小小地修改
初學者對WinMain中其他代碼先不要動。下面觀察第二個重要函數WndProc。
WndProc是消息處理函數,當用戶動動鼠標或者按下鍵盤,或者切換窗口等任何由Windows系統預定義的動作,或者是定時器,系統電力不足,有聊天網絡消息到來等由程序定義的事件,都會調用這個函數。可以想象這個函數有多么地“忙”。所以任何寫在這個函數里的代碼都要求非常地“快”。一旦這里某段代碼“慢”了,甚至“死循環”了,那么后來的消息就會堆積起來無法處理,從用戶角度看,就是這個程序停止響應了。為明確起見,將程序中的WndProc改名為MainWndProc,意即處理主窗口的消息的程序。在修改時,請注意原始代碼中有三處WndProc都需要修改——文件最前的位置函數聲明,在MyRegisterClass函數調用,以及WndProc函數定義。
前文提到,WndProc主要功能就是處理各種各樣的消息,顯然考慮這么多大量的消息對程序員是個沉重的負擔,幸好Windows本身已經提供了默認的消息處理代碼,程序員只需要處理好自己關心的消息就可以了。下面是消息處理函數的模板。
程序片段3 消息處理函數
觀察這個MainWndProc函數,hWnd參數表示處理這個消息的窗口,Message表示處理什么類型的消息,wParam和lParam是消息的兩個參數,不同的消息,其參數含義不同。如果程序員想要處理某個消息,則一定要去翻閱對應的消息參數的含義。
在程序片段中,程序員處理3個消息,一個是WM_COMMAND,這個消息來自于用戶選擇某項菜單或者觸發了某個按鈕。一個是WM_PAINT,這個消息表示用戶在窗口里顯示些什么。過去學習程序設計都是用printf函數輸出的,但是在窗口環境下,有更強大的輸出功能——你可以指定輸出位置,顏色,甚至可以輸出各種圖形,真正做到圖文并茂。繪圖消息處理一定是由BeginPaint開始并由EndPaint結束的。最后是WM_DESTORY。表示將要關閉這個窗口,程序可以在這里增加一些收尾工作。當然也可以什么都不做,只留那個ostQuitMessage函數在那里。
注意到這個大switch~case中,最后的default分句,DefWindowProc調用表示其余剩下的所有消息均由系統默認處理。
我們從菜單處理項開始進入windows編程。
程序片段4 處理菜單入口
總結
以上是生活随笔為你收集整理的Windows编程初步(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买单吧app如何删除账单明细
- 下一篇: Windows编程初步(二)