nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
另外,很多朋友學了C語言,發(fā)現(xiàn)編寫的都是黑洞洞的命令行程序,現(xiàn)在的電腦里,窗口程序已經(jīng)成為“高大上”的一個標準之一了,只有一些系統(tǒng)服務(wù),系統(tǒng)命令工具還保持控制臺風格,那要編寫Windows下的窗口程序在怎么學習呢?
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
考慮到本篇文章是為初學者或者有一定C語言基礎(chǔ)的朋友準備的,所以我按照學習的步驟來講怎么編寫Windows程序,有會的部分可以跳過進入下一部分。
一,安裝窗口編譯環(huán)境
要開始Windows編程,我們需要安裝一個開發(fā)環(huán)境,我推薦你在VS下編寫窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是關(guān)鍵,也不是越新越好,最好跟你的Windows系統(tǒng)版本匹配。這里我們不討論具體某個最新特性,而是常規(guī)的窗口程序編寫,因為一些特性是對版本有要求的。比如我現(xiàn)在用的是VS2008,這個版本雖然不新,但是他的大小差不多,包括MSDN一起安裝下來4G左右,關(guān)鍵的是這個版本還可以開發(fā)很多市面上支持的WinCE開發(fā)板嵌入式程序。
二,安裝幫助文檔MSDN
雖然這個不是必須,但為了后面的編程方便,我強烈建議你安裝MSDN,這個基本成了編寫Windows程序編寫的標配了,有了這個東西,那些API函數(shù)的用法,很多實例代碼和說明上面都能找到。它不只是有編寫Win32的指導,好包括MFC、C#、VB、COM、DirectX等Windows下各種編程的說明文檔,所以只要你是在Windows環(huán)境下開發(fā),都有很多值得參考的編程技術(shù)指導。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
要用C/C++語言開發(fā)Windows的程序,C/C++語言是基礎(chǔ)。學習C/C++語言的學習資料和方法網(wǎng)上到處都有,教程也是多如牛毛,各有各的理解和喜好,至于什么書好,自己去查,我也不想在這里被拍磚,但至少C/C++語言常用語法和知識點都應(yīng)該知道,能用C語言編寫一些基本程序,知道如何調(diào)用第三方的API。要準備開發(fā)Windows程序,我建議學習C/C++語言就在上面安裝的VS環(huán)境下進行。雖然學習C/C++語言有其他一些開發(fā)環(huán)境可以選擇,比如code block、eclipse等等,要單學習C/C++語言是沒有問題的,但是計劃要在Windows下開發(fā),還是VS比較主流。有了一些基礎(chǔ)也可以邊學Windows相關(guān)知識,一邊鍛煉C/C++語言。當有了這些基本知識,我們就可以進入下一步的Windows開發(fā)學習了。
四,了解Windows編程
這里不涉及C#和VB這種其他語言的Windows下的應(yīng)用,而是特指C/C++編寫。編寫Windows程序一般有兩種,一種是MFC;一種是Win32編程,一般這種就是通常所說的Windows編程,它跟Windows下編程不是一個概念。MFC全稱是微軟基礎(chǔ)類庫(Microsoft Foundation Classes),它是微軟公司將Windows的那些常用的API函數(shù)封裝成了相關(guān)的類,比如典型的窗口類就封裝了窗口的管理的各種方法和熟悉,各種控件都有窗口類派生出來。MFC模式編程基本上都是使用C++,這個要求你有一定的C++基礎(chǔ)。Win32編程是Windows最“原始”的編程模式,只要有C語言基礎(chǔ)就可以,這種編程模式就是采用C語言+Windows API調(diào)用的方式,MFC那些類封裝的成員函數(shù),最后也都是調(diào)用了Windows的API接口。這種編程方式由于比MFC更直接,編出來的應(yīng)用程序要小不少,效率相對更高,調(diào)試和運行過程更容易理解,尤其是對那些C++學得不太好的同學更容易接受。有些變態(tài)功能用MFC相當不好實現(xiàn),但是用Win32就不存在這些限制,“副作用”就是要求你更了解Windows方面系統(tǒng)API,具體哪種適合您,請自己選擇。BTW,國外的大牛們一般都用Win32方式!
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
對于不太熟悉Windows窗口編程的菜鳥,也許目前還不了解要學Windows哪些東西呢?鼠標操作?玩游戲?開玩笑了,肯定不是。Windows編程可以分為兩部分,第一部分就是Windows下的交互界面編程,對于沒有真正理解Windows編程的人來說,這部分可能就是所謂的Windows編程了;另外一部分就是深入理解Windows的運行機制、內(nèi)存管理和核心對象。下面就是第一部分主要的學習內(nèi)容:
框架——Windows是一個消息驅(qū)動的系統(tǒng),它包括基本消息循環(huán)框架、各種消息產(chǎn)生和處理、傳遞關(guān)系。
窗口——這個部分包括各種窗口的管理,比如創(chuàng)建、銷毀、背景、移動、重繪、透明處理等。
控件——這個部分包括Windows窗口上的各種控件的使用和管理。
GDI——這個部分包括用于繪制的各種GDI對象,比如字體、位圖、畫刷、畫筆、區(qū)域、路徑等。
外設(shè)——這個部分包括鼠標、鍵盤、打印機等、串/并口。
六,Windows編程提高
這一部分要學習的內(nèi)容就是上面說到的第二部分,它是Windows的精髓,但是也不容易理解,體現(xiàn)了Windows的內(nèi)部運行機制,作為高級Windows開發(fā)必須學習,一個復雜的Windows應(yīng)用或多或少都會應(yīng)用到這些部分或全部。下面列出了主要的學習內(nèi)容:
內(nèi)核對象——包括進程、線程、調(diào)度、同步操作的相關(guān)知識。
內(nèi)存管理——包括Windows系統(tǒng)的虛擬內(nèi)存管理、地址空間、內(nèi)存映射等。
動態(tài)鏈接庫——包括動態(tài)庫原理、創(chuàng)建和相關(guān)高級應(yīng)用。
異常處理——包括結(jié)構(gòu)化異常處理、異常鏈、錯誤與恢復。
如果對編程感興趣,想了解更多的編程知識,解決編程問題,以及入門指導,幫你解決編程中遇到的困惑,我們這里有java高手,C++/C高手,windows/Linux高手,android/ios高手,請大家關(guān)注微信公眾號:程序員互動聯(lián)盟或者coder_online
本文屬原創(chuàng),禁止轉(zhuǎn)載,謝謝