• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            天空之城
            new,think,program,happy to live
            posts - 39,comments - 39,trackbacks - 0
            ????????????"SDK" ? :Software ? Development ? Kit,常譯為軟件開發(fā)(工具)包,在Win32編程領(lǐng)域一般指與MFC這類框架編程相區(qū)別的,直接調(diào)用API的開發(fā)方式,與字面原意有一些區(qū)別。另外一個經(jīng)常見到的說法就是某軟件(硬件)帶有自己的一套SDK,這里其實一般是指一套API庫函數(shù)或者類庫,供上一層的開發(fā)者調(diào)用。又譬如常說的DX的SDK,其實是微軟開發(fā)的一套COM組件,供上層開發(fā)者使用。總之,供程序員使用的比較完備的代碼庫,就可以稱之為SDK; ?
            ? ? ? ? ? “MFC”:這個詞在這里討論好像有點班門弄斧的感覺:)還是說一下吧。Microsoft ? Framework ? classes(不知道對不對,汗...),大家都知道,使用SDK編程往往有很多每次都要重復(fù)的固定不變的一些代碼,為了提高編程的效率,減少上千個API帶給開發(fā)人員巨大的精神壓力,微軟開發(fā)出了這么一個類庫,注意,這個類庫與操作系統(tǒng)本身無任何關(guān)系,它只是對API進行了一個面向?qū)ο蟮姆庋b,當(dāng)然,還給出了一系統(tǒng)編程采用的框架。使用SDK的方法,使用Visual ? Studio,通過調(diào)用API,MFC你也可以做得出來。MFC把一些固定不變的代碼已經(jīng)寫好了,只在編譯時候鏈上,所以我們的代碼里看不到WinMain(),而事實上整個程序的運行,和SDK的方式無任何區(qū)別,初學(xué)者請記住這一點。
            ????????????"API":Application ? Programming ? Interface,這個詞的出現(xiàn)頻率就更高了,從某種意義上來說,也些可以看作是SDK的一個子集。這也是做給程序員的程序,不過一般指用導(dǎo)出函數(shù)的方式提供服務(wù)的函數(shù)庫,不包括類庫和組件。 ?
            ? ? ? ? ? “GDI”:Graphic ? Device ? Interface,這個是Win32程序下最常用的顯示方式,與DirectX、OpenGL處于同一級。在DOS要顯示一些東東可不是容易的事,最簡單的是調(diào)用一些C的圖形庫函數(shù)來實現(xiàn)顯示,不過一般也就是些畫線,填色,輸出幾個文字,效果很弱(所以DOS程序界面一般都不怎么樣),要復(fù)雜一點的動畫/圖片顯示什么的,經(jīng)常要用到的就是硬件中斷,調(diào)用一些顯卡子程序來做。因為每一個顯卡都不同,所以DOS的游戲兼容常常由于顯卡的差異而很糟糕。到Windows下大家就幸福多了,Windows將硬件這一層屏蔽起來,用一個表格(Device ? Context)來代表一個顯示,我們要做的就是在這個表格上填好相關(guān)參數(shù),然后畫上我們想畫的東東,然后操作系統(tǒng)會依照這個表格(DC),把相應(yīng)的顯示內(nèi)容(一般是一塊顯示內(nèi)存)傳送到指定顯卡的指定的顯存,再由顯卡傳給顯示屏。我們不再需要與不同的顯卡打交通,這是一個十分偉大的勝利!GDI中最常用的是雙緩存技術(shù),也就是說你可以在內(nèi)存中創(chuàng)建(也就是復(fù)制)一個DC,只不過在這個DC中顯示的不再被傳送到顯示器上。有什么用呢?因為它的各參數(shù)是與當(dāng)前屏幕DC一致的(COPY嘛 ? ,當(dāng)然是這樣),所以它的顯示內(nèi)容可以完整無失真地傳送到屏幕DC上。我們通常在內(nèi)存DC上畫圖,譬如畫一圓,再畫一條直線,畫完后一次性地傳送到屏幕DC上,這樣對用戶來說屏幕只刷新了一次,可以解決你畫一點內(nèi)容屏幕即刷新一次導(dǎo)致的閃爍問題。當(dāng)然,雙緩沖甚至多緩沖還有很多別的用處,那就要靠自己揣摩了。
            ??????????????"DirectX" ? :通常簡稱為DX(讀音:低叉)這是個很吸引人眼球的名詞,讀起來就很上口:)Windows為我們作了許多屏蔽底層硬件的工作,其中DX是最知名的技術(shù)之一。操作系統(tǒng)要與各類硬件打交通,特別是多媒體相關(guān)的,譬如顯卡、聲卡、手柄輸入、多媒體流的網(wǎng)絡(luò)傳輸?shù)鹊龋@些事情如果都自己來弄的話,那就太要命了(這些一般都涉及系統(tǒng)底層,自己也很難做出來)。而DX則正是這么一套操作系統(tǒng)提供的隔離多媒體硬件與程序員的間質(zhì),通過它我們可以非常簡單而快速地調(diào)用硬件提供的各類服務(wù)。它主要包括DirectDraw(通過直接訪問顯示硬件來提供快速的圖象處理能力),DirectSound(提供了軟硬件的低延遲聲音混頻和回放,以及直接訪問音頻設(shè)備的能力),DirectPlay ? (它明確的提供了通用環(huán)境連接能力來簡化你應(yīng)用程序之間的通訊服務(wù)),Direct3D(DirectDraw的3D版)DirectInput(簡化你的應(yīng)用程序訪問鼠標(biāo)、鍵盤和操縱桿設(shè)備的能力),DX5.0之后又增加了一些(如DirectShow),不再詳述。DX一個重要的特點就是你可以通過它直接訪問硬件而無需知道硬件的具體細節(jié)。譬如DirectDraw,就能夠越過內(nèi)存而直接訪問顯存,這樣的速度將比GDI快很多,不在一個數(shù)量級上。補充一點:DX是以組件的方式提供的,而不是通常的導(dǎo)出API的形式。DX ? SDK的最新版本是9.0 ?
            ? ? ? ? ? "COM”:component ? object ? model,組件對象模型,一般簡稱組件。這是微軟為了解決代碼重用的一個重要機制。重用代碼的最簡單辦法是源代碼重用,把寫好的函數(shù)和類加到自己當(dāng)前的代碼中,編譯即可。簡單是簡單,敝病卻顯然地多。另一個常用的方法是單獨做成模塊,以DLL的形式分發(fā),DLL導(dǎo)出函數(shù)或者類,客戶程序用動態(tài)/靜態(tài)鏈接的方法將其加載,這顯然比前一種源代碼的重要好一些,難度也不大,最為常用。但DLL也有一些不足,最根本的,它不是二進制兼容,DLL版本升級一次就需要與客戶程序代碼重鏈接一次,有些時候這幾乎是不可能的任務(wù)。為了更好地讓編程像“搭積木”一樣簡單,讓模塊可以完美地配合,完美地替換,COM產(chǎn)生了。COM不是類庫,不是代碼,不是操作系統(tǒng)的服務(wù),而是一套編程模型,理論上來說,它與語言無關(guān),與操作系統(tǒng)無關(guān),unix下同樣可以做COM。COM是一種程序結(jié)構(gòu)模型標(biāo)準(zhǔn),你做的DLL或EXE在結(jié)構(gòu)上滿足這么一個標(biāo)準(zhǔn),那這個DLL或EXE就是一個組件,它將在該平臺上成為二進制兼容。COM主要利用了注冊表來登記本模塊的信息。客戶程序調(diào)用時首先查注冊表,找到所需組件的位置(這實現(xiàn)了位置透明),然后就用Loadlibrary把它加載進來,這和普通調(diào)用沒有本質(zhì)區(qū)別,區(qū)別在于由于組件特殊的實現(xiàn)方法使得整個過程中用戶程序都不知道組件的位置,組件的類的實例化過程,如何銷毀,不能直接訪問組件的任何實現(xiàn)細節(jié),用戶只與組件的幾個public接口打交道。這將實現(xiàn)真正的模塊之間的獨立。對用戶程序而言,對于目標(biāo)組件的認識,除了接口,一無所知。在接口不變的情況下,組件可任意替換而客戶程序不作任何改動,無需編譯,僅這一點,在中大型程序的模塊集成的過程中就將節(jié)約相當(dāng)多的時間。
            posted on 2006-05-14 12:41 太極虎~宏 閱讀(130) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久久精品免费看SSS| 久久综合狠狠色综合伊人| 久久久久人妻一区二区三区| 少妇久久久久久被弄高潮| 久久国产乱子精品免费女| 久久精品国产精品亚洲艾草网美妙| 欧美国产成人久久精品| 久久精品国产福利国产秒| 亚洲精品国精品久久99热| 精品久久久久久久久中文字幕| 婷婷久久综合九色综合绿巨人 | 久久久久亚洲AV无码专区桃色| 久久99九九国产免费看小说| 国产—久久香蕉国产线看观看| 久久99国产精品久久99小说| 精品水蜜桃久久久久久久| 无码伊人66久久大杳蕉网站谷歌| 久久99精品国产麻豆蜜芽| 久久精品亚洲日本波多野结衣| 天天做夜夜做久久做狠狠| 一本大道久久a久久精品综合| 色婷婷综合久久久中文字幕| 久久免费视频一区| 久久久久18| 成人精品一区二区久久| 欧美久久综合性欧美| 99久久99久久久精品齐齐| 久久国产欧美日韩精品| 亚洲国产精品高清久久久| 久久婷婷人人澡人人爽人人爱| 午夜精品久久久久久久无码| 久久精品国产精品亚洲| 久久精品国产福利国产琪琪| 99久久综合国产精品二区| 亚洲嫩草影院久久精品| 国产精品久久久久乳精品爆 | 久久久久久久综合狠狠综合| 久久久噜噜噜久久| 国产精品久久久久久久人人看| 青春久久| 久久亚洲中文字幕精品一区|