• <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>
            posts - 64,comments - 18,trackbacks - 0

            1、大致說(shuō)來(lái)windows編程有兩種方法:
            a.windwos c方式(SDK),SDK編程就是直接調(diào)用windows的API進(jìn)行編程;
            b.c++方式:即對(duì)SDK函數(shù)進(jìn)行包裝,如VC的MFC,BCB的OWL等。MFC把這些API封閉起來(lái),共有一百多個(gè)類組成.

            2、API,全稱application program interface,意思是應(yīng)用程序編程接口(說(shuō)起API并不僅僅指windows而言, windows支持的API叫winapi)。winapi就是應(yīng)用程序和windows之間通訊的一個(gè)編程界面。windows提供了上千個(gè)API函數(shù),以方便程序員來(lái)編寫應(yīng)用程序。

            3、WinSDK程序設(shè)計(jì)就是API方式的windows程序設(shè)計(jì)。SDK,全稱Software Developers Kit,意思是軟件開發(fā)工具箱。

            4、MFC,全稱Microsoft Foundation Classes,偽軟把WinAPI進(jìn)行封裝的類庫(kù)。它是一個(gè)類的集合,通過(guò)覆蓋WinAPI,為編程提供了一個(gè)面向?qū)ο蟮慕缑妗K箇indows程序員能夠利用C++面象對(duì)象的特性進(jìn)行編程,類似BCB的OWL,Delphi的VCL組件。它把那些進(jìn)行SDK編程時(shí)最繁瑣的部分提供給程序員,使之專注于功能的實(shí)現(xiàn)。你不妨把它想象成類似TC提供的函數(shù)庫(kù)吧。

            5、dos下的C編程的main()一樣,windows下的入口是WinMain()函數(shù)。

            6、WinMain()所起的作用:初始化,展示,銷毀應(yīng)用程序等。
            第一個(gè)參數(shù):應(yīng)用程序的當(dāng)前實(shí)例句柄。
            第二個(gè)參數(shù):應(yīng)用程序的前一個(gè)實(shí)例句柄,別管它,對(duì)于Win32位而言,它一般是NULL.
            第三個(gè)參數(shù):指向任何傳給程序的命令行參數(shù)。PSTR代表"指向字符串的指針"。
            第四個(gè)參數(shù):它告訴應(yīng)用程序如何初始化窗口,如最大化,最小化等狀態(tài)。

            7、句柄(handle):
            在標(biāo)準(zhǔn)C庫(kù)中句柄用來(lái)對(duì)文件輸入輸出。
            在Windows環(huán)境中,句柄是用來(lái)標(biāo)識(shí)項(xiàng)目的,這些項(xiàng)目包括:
            *.模塊(module)
            *.任務(wù)(task)
            *.實(shí)例(instance)
            *.文件(file)
            *.內(nèi)存塊(block of memory)
            *.菜單(menu)
            *.控制(control)
            *.字體(font)
            *.資源(resource),包括圖標(biāo)(icon),光標(biāo)(cursor),字符串(string)等
            *.GDI對(duì)象(GDI object),包括位圖(bitmap),畫刷(brush),元文件(metafile),調(diào)色板(palette),畫 筆(pen),區(qū)域(region),以及設(shè)備描述表(device context)。
            WINDOWS程序中并不是用物理地址來(lái)標(biāo)識(shí)一個(gè)內(nèi)存塊,文件,任務(wù)或動(dòng)態(tài)裝入模塊的,相反的,WINDOWS API給這些項(xiàng)目分配確定的句柄,并將句柄返回給應(yīng)用程序,然后通過(guò)句柄來(lái)進(jìn)行操作。

            窗口句柄:
            系統(tǒng)通過(guò)窗口句柄來(lái)在整個(gè)系統(tǒng)中唯一標(biāo)識(shí)一個(gè)窗口,發(fā)送一個(gè)消息時(shí)必須指定一個(gè)窗口句柄表明該消息由那個(gè)窗口接收。而每個(gè)窗口都會(huì)有自己的窗口過(guò)程,所以用戶的輸入就會(huì)被正確的處理。

            8、所有的命名采用了匈牙利表示法。如消息的前綴使用msg.句柄使用h.函數(shù)使用fn等。

            9、MainFrm.cpp、MainFrm.h:
            這兩個(gè)文件將從CFrameWnd(SDI應(yīng)用程序)或CMDIFrameWnd(MDI應(yīng)用程序)派生CMainFrame類。如果在AppWizard的Application Options頁(yè)(6步中的第4步)中選擇了對(duì)應(yīng)的可選項(xiàng)的話,CMainFrame類將處理工具條按鈕和狀態(tài)條的創(chuàng)建。MAINFRM.CPP文件還含有MFC應(yīng)用程序提供的默認(rèn)工具條按鈕的對(duì)象ID——叫做buttons數(shù)組。

            10、DOS程序主要使用順序的,過(guò)程驅(qū)動(dòng)的程序設(shè)計(jì)方法。順序的,過(guò)程驅(qū)動(dòng)的程序有一個(gè)明顯的開始,明顯的過(guò)程及一個(gè)明顯的結(jié)束,因此程序能直接控制程序事件或過(guò)程的順序。雖然在順序的過(guò)程驅(qū)動(dòng)的程序中也有很多處理異常的方法,但這樣的異常處理也仍然是順序的,過(guò)程驅(qū)動(dòng)的結(jié)構(gòu)。

            11、Windows的驅(qū)動(dòng)方式是事件驅(qū)動(dòng),就是不由事件的順序來(lái)控制,而是由事件的發(fā)生來(lái)控制,所有的事件是無(wú)序的。做為一個(gè)程序員,在你編寫程序時(shí),你并不知道用戶先按哪個(gè)按紐,也不知道程序先觸發(fā)哪個(gè)消息。你的任務(wù)就是對(duì)正在開發(fā)的應(yīng)用程序要發(fā)出或要接收的消息進(jìn)行排序和管理。事件驅(qū)動(dòng)程序設(shè)計(jì)是密切圍繞消息的產(chǎn)生與處理而展開的,一條消息是關(guān)于發(fā)生的事件的消息。

            12、Windows程序則至少兩個(gè)主程序,
            一個(gè)是WinMain(),
            int WINAPI WinMain(
                      HINSTANCE hInstance,    // handle to current instance
                      HINSTANCE hPrevInstance,  // handle to previous instance
                      LPSTR lpCmdLine,      // command line
                      int nCmdShow      // show state
                     );
            另一個(gè)是窗口過(guò)程函數(shù)WndProc,它的函數(shù)原型為:
            long FAR PASCAL WndProc(HWND hWnd,WORD message,WORD wParam,LONG lParam);

            13、窗口函數(shù)與回調(diào)函數(shù):
            在Windows中,應(yīng)用程序通過(guò)要求Windows完成指定操作,而承擔(dān)這項(xiàng)通信任務(wù)的API函數(shù)就是Windows的相應(yīng)窗口函數(shù)WndProc。應(yīng)用程序不直接調(diào)用任何窗口函數(shù),而是等待Windows調(diào)用窗口函數(shù),請(qǐng)求完成任務(wù)或返回信息。為保證Windows調(diào)用這個(gè)窗口函數(shù),這個(gè)函數(shù)必須先向Windows登記,然后在Windows實(shí)施相應(yīng)操作時(shí)回調(diào),所以窗口函數(shù)又稱為回調(diào)函數(shù)。WndProc是一個(gè)主回調(diào)函數(shù),Windows至少有一個(gè)回調(diào)函數(shù)。典型的回調(diào)函數(shù)有窗口過(guò)程、對(duì)話框過(guò)程和鉤子函數(shù)。實(shí)際上,也許有不止一個(gè)的窗口過(guò)程。例如,每一個(gè)不同的窗口類都有一個(gè)與之相對(duì)應(yīng)的窗口過(guò)程。

            15、實(shí)例:在Windows中,能多次同時(shí)運(yùn)行同一個(gè)應(yīng)用程序,即運(yùn)行多個(gè)副本,每個(gè)副本叫做一個(gè)“實(shí)例”。

            16、C runtime函數(shù)庫(kù):

            就跟它的名字一樣,運(yùn)行類型信息
            主要有COject類和CRuntimeClass類來(lái)實(shí)現(xiàn),用來(lái)存貯COject類和派生類的運(yùn)行類型信息,
            1.類的基本情況:如類的名字,存貯空間大小,用于運(yùn)行類的類型確定.
            2.ms在C++的標(biāo)準(zhǔn)上,添加動(dòng)態(tài)創(chuàng)建的類對(duì)象功能,也就是時(shí)時(shí)提到的動(dòng)態(tài)創(chuàng)建
            3.串行化處理.
            The OS does not know main(), so C-runtime is first called and transfer control to main
            it also provide library for common usage, such as math functions

            17、WinMain()函數(shù)的調(diào)用約定是PASCAL。

            在這里PASCAL是一個(gè)調(diào)用約定,由于這種方式最早由PASCAL采用,所以這么叫。
            在MSDN中的C++ Language Reference中,Calling Conventions這一章都是講調(diào)用約定的。

            約定:微軟重定義了許多約定類型,為的是可以讓代碼更容易跨平臺(tái)或者跨編譯器。
            其實(shí),調(diào)用約定要解決兩個(gè)問(wèn)題,都是針對(duì)堆棧操作:
            1。參數(shù)傳遞的順序(本質(zhì)是壓棧的順序)
            2。誰(shuí)負(fù)責(zé)平棧(調(diào)用者還是調(diào)用對(duì)象)
            一個(gè)函數(shù)的聲明、定義和實(shí)現(xiàn)中的調(diào)用方式一般都一致。

            WINAPI標(biāo)識(shí)符的定義是:#define WINAPI __stdcall, __stdcall指Window調(diào)用函數(shù)的一種方式,也就是如何在堆中存取函數(shù)參數(shù)的方式。許多Windows Api函數(shù)調(diào)用聲明為__stdcall方式。

            18、用位的“或”操作(操作符“|”)把若干個(gè)常數(shù)組合起來(lái)控制消息窗口顯示的按鈕和圖標(biāo)等。

            19、在Windows應(yīng)用程序中,每一個(gè)窗口都必須從屬于一個(gè)窗口類,窗口類定義了窗口所具有的屬性,如它的樣式、圖標(biāo)、鼠標(biāo)指針、菜單名稱及窗口過(guò)程名等。
            窗口種類是定義窗口屬性的模板,這些屬性包括窗口式樣,鼠標(biāo)形狀,菜單等等,窗口種類也指定處理該類中所有窗口消息的窗口函數(shù).只有先建立窗口種類,才能根據(jù)窗口種類來(lái)創(chuàng)建Windows應(yīng)用程序的一個(gè)或多個(gè)窗口.創(chuàng)建窗口時(shí),還可以指定窗口獨(dú)有的附加特性.窗口種類簡(jiǎn)稱窗口類,窗口類不能重名.在建立窗口類后,必須向Windows登記.建立窗口類就是用WNDCLASS結(jié)構(gòu)定義一個(gè)結(jié)構(gòu)變量.

            20、Visual C++提供Alt+F8功能鍵,進(jìn)行文件規(guī)格化,根據(jù)周圍的代碼行,正確縮進(jìn)選定的代碼行。常使用該按鍵可使得文件保持規(guī)格化(注,Alt+F8功能鍵對(duì)連續(xù)兩個(gè)CASE語(yǔ)句則會(huì)發(fā)生處理錯(cuò)誤,不能規(guī)格化)。

            21、消息:
            一個(gè)消息由一個(gè)消息名稱(UINT),和兩個(gè)參數(shù)(WPARAM,LPARAM)。當(dāng)用戶進(jìn)行了輸入或是窗口的狀態(tài)發(fā)生改變時(shí)系統(tǒng)都會(huì)發(fā)送消息到某一個(gè)窗口。

            22、一個(gè)典型的應(yīng)用程序應(yīng)該活動(dòng)在稱為“框架窗口”中。一個(gè)框架窗口是一個(gè)全功能的主窗口,用戶可以改變尺寸、最小化、最大化等。

            23、消息機(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)的窗口過(guò)程。而在沒有消息時(shí)消息循環(huán)就將控制權(quán)交給系統(tǒng)所以Windows可以同時(shí)進(jìn)行多個(gè)任務(wù)。

            24、預(yù)編譯頭文件:
            VC++程序一般包含的頭文件都比較復(fù)雜,如果每次都逐行分析可能會(huì)花很多時(shí)間,所以VC++默認(rèn)設(shè)置是第一次編譯時(shí)分析所有頭文件,生成.pch文件,這個(gè)文件很大,但以后每次編譯時(shí)就可以節(jié)省很多時(shí)間。如果刪除了這個(gè)文件,下次編譯時(shí)VC++會(huì)自動(dòng)生成它。
            StdAfx.h是每個(gè)MFC程序的類中必須包括的文件,它一般由AppWizard自動(dòng)生成,包括編譯MFC類所必須的定義。

            25、Windows支持兩種類型的對(duì)話框:模式和無(wú)模式對(duì)話框。
            模式對(duì)話框一旦出現(xiàn)在屏幕上,只有當(dāng)它退出時(shí),屏幕上該應(yīng)用程序的其余部分才能響應(yīng)。
            無(wú)模式對(duì)話框出現(xiàn)在屏幕上時(shí),程序的其余部分也可以作出響應(yīng),它就象浮動(dòng)在上面一樣。

            26、單文檔界面(SDI),只有一個(gè)框架窗口。
            MDI 系統(tǒng)允許用戶在同一應(yīng)用程序中同時(shí)可以查看多個(gè)文檔。

            posted on 2007-05-16 22:48 rebol 閱讀(1294) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Final work LOG
            久久久无码精品亚洲日韩京东传媒| 激情久久久久久久久久| 综合人妻久久一区二区精品| 漂亮人妻被黑人久久精品| 久久成人国产精品| 久久亚洲2019中文字幕| 老色鬼久久亚洲AV综合| 97精品伊人久久久大香线蕉| 久久精品国产男包| 久久久久人妻一区精品| 久久91综合国产91久久精品| 2021久久精品免费观看| 情人伊人久久综合亚洲| 亚洲国产另类久久久精品小说 | 麻豆国内精品久久久久久| 日韩人妻无码精品久久免费一 | 99久久国产亚洲高清观看2024| 国产aⅴ激情无码久久| 久久精品国产一区二区| 久久午夜电影网| 狠狠干狠狠久久| 99国产欧美久久久精品蜜芽| 日韩精品久久久肉伦网站| 久久综合鬼色88久久精品综合自在自线噜噜 | 午夜天堂av天堂久久久| 伊人久久大香线蕉成人| 亚洲精品tv久久久久久久久久| 久久中文娱乐网| 亚洲狠狠综合久久| 狠狠色丁香婷综合久久| 99久久无码一区人妻a黑| 久久久久无码精品国产| 久久综合给久久狠狠97色| 欧美黑人又粗又大久久久| 亚洲色欲久久久综合网| 亚洲人成精品久久久久| 久久精品国产网红主播| 久久99国产精品久久99| 国产国产成人久久精品| 久久强奷乱码老熟女| 伊人久久大香线蕉无码麻豆|