資源描述:
《vc++基礎(chǔ)教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、VC++基礎(chǔ)教程VisualC++/MFC入門教程VC開發(fā)指南1.1如何學(xué)好VC這個(gè)問題很多朋友都問過我,當(dāng)然流汗是必須的,但同時(shí)如果按照某種思路進(jìn)行有計(jì)劃的學(xué)習(xí)就會(huì)起到更好的效果。萬事開頭難,為了幫助朋友們更快的掌握VC開發(fā),下面我將自己的一點(diǎn)體會(huì)講一下:1、需要有好的C/C++基礎(chǔ)。正所謂“磨刀不誤砍柴工”,最開始接觸VC時(shí)不要急于開始Windows程序開發(fā),而是應(yīng)該進(jìn)行一些字符界面程序的編寫。這樣做的目的主要是增加對(duì)語言的熟悉程度,同時(shí)也訓(xùn)練自己的思維和熟悉一些在編程中常犯的錯(cuò)誤。更重要的是理解并能運(yùn)用C++的各種
2、特性,這些在以后的開發(fā)中都會(huì)有很大的幫助,特別是利用MFC進(jìn)行開發(fā)的朋友對(duì)C++一定要能熟練運(yùn)用。2、理解Windows的消息機(jī)制,窗口句柄和其他GUI句柄的含義和用途。了解和MFC各個(gè)類功能相近的API函數(shù)。3、一定要理解MFC中消息映射的作用。4、訓(xùn)練自己在編寫代碼時(shí)不使用參考書而是使用HelpOnline。5、記住一些常用的消息名稱和參數(shù)的意義。6、學(xué)會(huì)看別人的代碼。7、多看書,少買書,買書前一定要慎重。8、閑下來的時(shí)候就看參考書。9、多來我的主頁(yè)。^O^后面幾條是我個(gè)人的一點(diǎn)意見,你可以根據(jù)需要和自身的情況選用適
3、用于自己的方法。此外我將一些我在選擇參考書時(shí)的原則:對(duì)于初學(xué)者:應(yīng)該選擇一些內(nèi)容比較全面的書籍,并且書籍中的內(nèi)容應(yīng)該以合理的方式安排,在使用該書時(shí)可以達(dá)到循序漸進(jìn)的效果,書中的代碼要有詳細(xì)的講解。盡量買翻譯的書,因?yàn)檫@些書一般都比較易懂,而且語言比較輕松。買書前一定要慎重如果買到不好用的書可能會(huì)對(duì)自己的學(xué)習(xí)積極性產(chǎn)生打擊。對(duì)于已經(jīng)掌握了VC的朋友:這種程度的開發(fā)者應(yīng)該加深自己對(duì)系統(tǒng)原理,技術(shù)要點(diǎn)的認(rèn)識(shí)。需要選擇一些對(duì)原理講解的比較透徹的書籍,這樣一來才會(huì)對(duì)新技術(shù)有更多的了解,最好書中對(duì)技術(shù)的應(yīng)用有一定的闡述。盡量選擇示范
4、代碼必較精簡(jiǎn)的書,可以節(jié)約銀子。此外最好涉獵一些輔助性的書籍。1.2理解Windows消息機(jī)制Windows系統(tǒng)是一個(gè)消息驅(qū)動(dòng)的OS,什么是消息呢?我很難說得清楚,也很難下一個(gè)定義(誰在噓我),我下面從不同的幾個(gè)方面講解一下,希望大家看了后有一點(diǎn)了解。1、消息的組成:一個(gè)消息由一個(gè)消息名稱(UINT),和兩個(gè)參數(shù)(WPARAM,LPARAM)。當(dāng)用戶進(jìn)行了輸入或是窗口的狀態(tài)發(fā)生改變時(shí)系統(tǒng)都會(huì)發(fā)送消息到某一個(gè)窗口。例如當(dāng)菜單轉(zhuǎn)中之后會(huì)有WM_COMMAND消息發(fā)送,WPARAM的高字中(HIWORD(wParam))是命令
5、的ID號(hào),對(duì)菜單來講就是菜單ID。當(dāng)然用戶也可以定義自己的消息名稱,也可以利用自定義消息來發(fā)送通知和傳送數(shù)據(jù)。2、誰將收到消息:一個(gè)消息必須由一個(gè)窗口接收。在窗口的過程(WNDPROC)中可以對(duì)消息進(jìn)行分析,對(duì)自己感興趣的消息進(jìn)行處理。例如你希望對(duì)菜單選擇進(jìn)行處理那么你可以定義對(duì)WM_COMMAND進(jìn)行處理的代碼,如果希望在窗口中進(jìn)行圖形輸出就必須對(duì)WM_PAINT進(jìn)行處理。3、未處理的消息到那里去了:M$為窗口編寫了默認(rèn)的窗口過程,這個(gè)窗口過程將負(fù)責(zé)處理那些你不處理消息。正因?yàn)橛辛诉@個(gè)默認(rèn)窗口過程我們才可以利用Wind
6、ows的窗口進(jìn)行開發(fā)而不必過多關(guān)注窗口各種消息的處理。例如窗口在被拖動(dòng)時(shí)會(huì)有很多消息發(fā)送,而我們都可以不予理睬讓系統(tǒng)自己去處理。4、窗口句柄:說到消息就不能不說窗口句柄,系統(tǒng)通過窗口句柄來在整個(gè)系統(tǒng)中唯一標(biāo)識(shí)一個(gè)窗口,發(fā)送一個(gè)消息時(shí)必須指定一個(gè)窗口句柄表明該消息由那個(gè)窗口接收。而每個(gè)窗口都會(huì)有自己的窗口過程,所以用戶的輸入就會(huì)被正確的處理。例如有兩個(gè)窗口共用一個(gè)窗口過程代碼,你在窗口一上按下鼠標(biāo)時(shí)消息就會(huì)通過窗口一的句柄被發(fā)送到窗口一而不是窗口二。5、示例:下面有一段偽代碼演示如何在窗口過程中處理消息LONGyourWn
7、dProc(HWNDhWnd,UINTuMessageType,WPARAMwP,LPARAM){switch(uMessageType){//使用SWITCH語句將各種消息分開case(WM_PAINT):doYourWindow(...);//在窗口需要重新繪制時(shí)進(jìn)行輸出break;case(WM_LBUTTONDOWN):doYourWork(...);//在鼠標(biāo)左鍵被按下時(shí)進(jìn)行處理break;default:callDefaultWndProc(...);//對(duì)于其它情況就讓系統(tǒng)自己處理break;}}接下來談?wù)?/p>
8、什么是消息機(jī)制:系統(tǒng)將會(huì)維護(hù)一個(gè)或多個(gè)消息隊(duì)列,所有產(chǎn)生的消息都回被放入或是插入隊(duì)列中。系統(tǒng)會(huì)在隊(duì)列中取出每一條消息,根據(jù)消息的接收句柄而將該消息發(fā)送給擁有該窗口的程序的消息循環(huán)。每一個(gè)運(yùn)行的程序都有自己的消息循環(huán),在循環(huán)中得到屬于自己的消息并根據(jù)接收窗口的句柄調(diào)用相應(yīng)的窗口過程。而在沒有消息時(shí)消息循環(huán)就將控制權(quán)交給