windows程序運(yùn)行原理以及vc++實(shí)現(xiàn)過(guò)程_第1頁(yè)
已閱讀1頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、windowswindows程序的運(yùn)行原理以及程序的運(yùn)行原理以及VCVC的實(shí)的實(shí)現(xiàn)過(guò)程現(xiàn)過(guò)程作者:佚名文章來(lái)源:網(wǎng)絡(luò)操作系統(tǒng)以消息機(jī)制把輸入設(shè)備的變化傳遞給我們的應(yīng)用程序,操作系統(tǒng)所扮演的角色是神經(jīng)末梢APP系統(tǒng)調(diào)用APIOS輸出輸入HARDWARE操作系統(tǒng)之所以成為操作系統(tǒng)是因?yàn)樗軌蚩刂朴布脑O(shè)備,能夠控制聲卡發(fā)出聲音,能夠控制顯卡畫(huà)一個(gè)窗口,但它是如何實(shí)現(xiàn)這些功能就不是我們所關(guān)心的了,這些是寫(xiě)匯編的人員所要做的事情。操作系統(tǒng)又能夠

2、從輸入設(shè)備獲得信息,譬如說(shuō),操作系統(tǒng)能夠感受到鼠標(biāo)的移動(dòng),并且還能知道鼠標(biāo)移動(dòng)后的位置。再比如說(shuō)操作系統(tǒng)能感受到鍵盤(pán)的按下,并且知道按下的是哪個(gè)鍵,這些都表明操作系統(tǒng)和輸入輸出設(shè)備有一個(gè)關(guān)系,至于操作系統(tǒng)怎樣去控制輸入設(shè)備以及怎樣把輸入設(shè)備的信息拿到手的,這些我們都不用關(guān)心,這些是寫(xiě)操作系統(tǒng)的人或者寫(xiě)驅(qū)動(dòng)程序的人所要干的事。由于應(yīng)用程序是運(yùn)行在操作系統(tǒng)上的,我們所關(guān)心的是應(yīng)用程序和操作系統(tǒng)之間有什么樣的關(guān)系。就仿佛是機(jī)器人能夠走路,但是

3、機(jī)器人要走幾步,向哪個(gè)方向走,這些是機(jī)器人不關(guān)心的,它只是說(shuō)我有走路的能力,至于怎么走需要主人對(duì)它發(fā)號(hào)施令了,如果我們要求機(jī)器人向南走5步,機(jī)器人才能完成行走的操作。同樣對(duì)于操作系統(tǒng)來(lái)說(shuō),操作系統(tǒng)能夠控制聲卡發(fā)出聲音,但是具體發(fā)出什么樣的聲音,是美妙的還是悲傷的就由應(yīng)用程序來(lái)告訴操作系統(tǒng)的,應(yīng)用程序怎樣告訴操作系統(tǒng)呢,我們?cè)诰帉?xiě)C語(yǔ)言的時(shí)候通過(guò)調(diào)用函數(shù)來(lái)讓操作系統(tǒng)干某事,操作系統(tǒng)能夠執(zhí)行各種各樣的功能,它把這些功能都以函數(shù)的形式提供給應(yīng)

4、用程序,應(yīng)用程序通過(guò)調(diào)用這些函數(shù)來(lái)通知操作系統(tǒng)該干什么事情,操作系統(tǒng)的各種各樣的功能都對(duì)應(yīng)相應(yīng)的函數(shù),這些函數(shù)的集合叫做API。如控制機(jī)器人的函數(shù)集合我們叫robotAPI,像JAVA里也有操作我們的系統(tǒng)的函數(shù),我們把它叫做JAVAAPI,這里的API與WINDOWSAPI是沒(méi)有關(guān)系的。每個(gè)應(yīng)用程序都有一個(gè)隊(duì)列,叫消息隊(duì)列,什么叫隊(duì)列呢其實(shí)就是一個(gè)緩沖區(qū)(就是定義的一個(gè)數(shù)組,數(shù)組有多大,緩沖區(qū)就有多大),然后你可以往里面存數(shù),別人就可以

5、從里面取數(shù)。先取的是你最先存入的數(shù)。就好象尋呼臺(tái)的尋呼系統(tǒng),來(lái)了一個(gè)尋呼信息,就有尋呼小姐將該信息交給發(fā)射機(jī)發(fā)布出去,如果在一秒鐘一次來(lái)了很多個(gè)尋呼請(qǐng)求,發(fā)射機(jī)就有可能忙不過(guò)來(lái),為了不至于把信息丟失,我們就準(zhǔn)備一個(gè)很大的緩沖區(qū),有100個(gè)格STYLE里有兩個(gè)參數(shù)是CS_HREDRAW和CS_VREDRAW,當(dāng)我們把窗口的大小發(fā)生改變時(shí)(最小化、最大化、覆蓋一樣),顯卡要重新給我們把窗口畫(huà)一遍(窗口是繪出來(lái)的),這時(shí)候原來(lái)在窗口上畫(huà)的東西

6、就被沖掉了,如果不這么做的話(huà),我們的窗口的大小無(wú)法發(fā)生改變,這里我們指定兩個(gè)參數(shù)就是指定當(dāng)窗口水平和垂直方向發(fā)生大小改變時(shí)需不需要顯卡重新畫(huà)窗口,畫(huà)窗口的時(shí)候顯卡會(huì)用你定義的窗口的背景顏色進(jìn)行重畫(huà)。這就好比我們每到春節(jié)的時(shí)候要給汽車(chē)重新噴漆一樣,如果我們不指定這兩個(gè)參數(shù)就是說(shuō)我不重新噴漆了,只用水沖一下就可以。以在窗口上畫(huà)線(xiàn)為例進(jìn)行演示。cbClsExtra、cbWndExtra是兩個(gè)補(bǔ)充說(shuō)明的參數(shù),是當(dāng)窗口的參數(shù)不夠的時(shí)候用。hIco

7、n是圖標(biāo)的句柄,可以通過(guò)API函數(shù)LoadIcon加載,MAKEINTRESOURCE是把一個(gè)整數(shù)轉(zhuǎn)成字符串的宏。注意字符串就是一個(gè)地址,標(biāo)識(shí)一個(gè)字符數(shù)組常量的首地址。WD是一個(gè)unsignedshtDWD是一個(gè)unsignedlong。如果需要使用一個(gè)自定義的圖標(biāo),第一個(gè)參數(shù)就應(yīng)該是hInstance,第二個(gè)參數(shù)是MAKEINTRESOURCE(IDI_ICON1)。在VC中編輯圖標(biāo),并保存,#include“resource.h“將

8、1.rc增加到工程。hCurs是鼠標(biāo)指針的句柄??梢酝ㄟ^(guò)API函數(shù)LoadCurs加載。curs里的IDC_H是定義在win2000的頭文件中的,要裝win2000SDK.hbrBackground是窗口背景刷子的句柄NULL表示沒(méi)有刷子。通過(guò)API函數(shù)GetStockObject得到。注意這里要接觸一個(gè)近指針和遠(yuǎn)指針的概念,這些是16位操作系統(tǒng)的產(chǎn)物,是用來(lái)標(biāo)識(shí)指針的管理范圍的,在32位的操作系統(tǒng)上已經(jīng)沒(méi)有意義了,我們可以發(fā)現(xiàn)它們都定

9、義成空了。這里GetStockObject的返回值要進(jìn)行類(lèi)型轉(zhuǎn)換。(設(shè)置一個(gè)任意的顏色?)hInstance是應(yīng)用程序?qū)嵗木浔?。我的一個(gè)應(yīng)用程序起動(dòng)了,應(yīng)用程序就裝在內(nèi)存中了,成為一個(gè)實(shí)例(因?yàn)閼?yīng)用程序可以啟動(dòng)多個(gè),我們把它們每個(gè)應(yīng)用程序用實(shí)例句柄來(lái)管理和區(qū)分),以后操作系統(tǒng)想控制我的應(yīng)用程序,我必須把應(yīng)用程序的句柄傳給操作系統(tǒng)。這個(gè)應(yīng)用程序的句柄我們把它叫做實(shí)例句柄。我們?nèi)魏我粋€(gè)窗口都應(yīng)該屬于一個(gè)應(yīng)用程序?qū)嵗晕覀冊(cè)谶@里要指定應(yīng)

10、用程序的實(shí)例句柄。這個(gè)實(shí)例句柄是由操作系統(tǒng)分配給我們的。應(yīng)用程序都有一個(gè)入口函數(shù),在DOS里是MAIN函數(shù),在WINDOWS里是WINMAIN函數(shù),我們發(fā)現(xiàn)應(yīng)用程序的實(shí)例句柄是操作系統(tǒng)在WINMAIN函數(shù)里傳給我們的。hPrevInstance是先前的應(yīng)用程序的實(shí)例句柄。通過(guò)這個(gè)參數(shù)我們可以控制一個(gè)應(yīng)用程序只能啟動(dòng)一份。當(dāng)然我們?cè)谶@里由于是WIN32的系統(tǒng)無(wú)法簡(jiǎn)單實(shí)現(xiàn)只程序啟動(dòng)一份。(WinMain函數(shù)是操作系統(tǒng)調(diào)用的,所以WinMai

11、n的參數(shù)是操作系統(tǒng)賦值的。)lpszMenuName注意菜單不是窗口。用SPY可以查看。lpszClassName是窗口類(lèi)型的名字。如富康988。設(shè)計(jì)完窗口后我們要注冊(cè)窗口類(lèi)RegisterClass,注冊(cè)完了才能生產(chǎn)這一款窗口,否則操作系統(tǒng)不知道你要產(chǎn)生什么樣的窗口。隨后我們調(diào)用CreateWindow去產(chǎn)生窗口,這里有個(gè)窗口的樣式參數(shù),WS_OVERLAPPEDWINDOW是一個(gè)包裝樣式,如果想去掉某個(gè)功能就將去掉的樣式取反,然后將

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論