|
|
今天講軟件流程。呵呵 似乎有點(diǎn)慌點(diǎn)大家了
我講的軟件流程不是開(kāi)發(fā)流程請(qǐng)注意
一個(gè)軟件,表面上看是個(gè) XX.exe文件。雙擊他運(yùn)行后,就會(huì)出現(xiàn)業(yè)務(wù)畫面。
上面有按鈕(buton),編輯框(textbox)等,操作任何對(duì)象多有不同的響應(yīng),這些如何實(shí)現(xiàn)?
下面我得說(shuō)說(shuō)事件驅(qū)動(dòng)。什么是事件驅(qū)動(dòng)?
舉個(gè)簡(jiǎn)單的例子。我們摁下鍵盤,系統(tǒng)就會(huì)產(chǎn)生一個(gè)鍵盤響應(yīng)事件。單擊鼠標(biāo)健也會(huì)產(chǎn)生響應(yīng)事件,這么說(shuō)還是有點(diǎn)模糊,(抱歉?jìng)(gè)人文筆能力有限,不知道該如何解釋了),說(shuō)白了吧,整個(gè)軟件就是個(gè)事件驅(qū)動(dòng)組成的。
舉個(gè)簡(jiǎn)單的例子,我們單擊一個(gè)按鈕,軟件怎么知道用戶做了什么。首先操作系統(tǒng)接收到鼠標(biāo)單擊事件的消息,把他放在消息隊(duì)列中,然后系統(tǒng)從消息隊(duì)列中取出消息,對(duì)他進(jìn)行過(guò)濾,過(guò)濾操作是很有必要的,因?yàn)橛行┎僮鲿r(shí)用戶不想要的,或者是系統(tǒng)未定義的事件消息,不把他過(guò)濾掉,系統(tǒng)將無(wú)法處理,這是就會(huì)出現(xiàn)系統(tǒng)bug,那么系統(tǒng)怎么知道我們是對(duì)那個(gè)窗體或軟件發(fā)出的事件消息呢,這是系統(tǒng)會(huì)把事件消息發(fā)給,當(dāng)前活動(dòng)窗體以及具有活動(dòng)線程(一般是后臺(tái)線程),再由這些窗體或軟件自己去過(guò)濾這些消息,如果是自己需要的就做出響應(yīng)。這里我們可以理解 當(dāng)前活動(dòng)窗口,只是活動(dòng)線程有點(diǎn)模糊。另外在說(shuō)明點(diǎn),不是所有活動(dòng)線程(后臺(tái)運(yùn)行,以下不作解釋)多能捕作事件響應(yīng),我們只是在里面做自己想要得事件響應(yīng)過(guò)濾。打個(gè)比方吧,我們常用的金山詞霸,把他隱藏后,為什么我們摁下某些鍵后能打開(kāi)畫面呢?這就是事件驅(qū)動(dòng)的原因。
由于個(gè)人表達(dá)能力有限,上面的東東,只能這么講了,不懂沒(méi)關(guān)系,以后我們用例子來(lái)說(shuō)事,上面只是讓你們有個(gè)概念上的認(rèn)識(shí)。
下面來(lái)講win32
首先區(qū)分以下asc和unicode,當(dāng)初我學(xué)習(xí)是對(duì)這兩個(gè)概念,有點(diǎn)轉(zhuǎn)牛角尖,將以大家別把太多時(shí)間放在這上面,他們本質(zhì)上是一樣的。簡(jiǎn)單的說(shuō)。asc只能符合美國(guó)的需求,但是不符合別的國(guó)家,尤其是亞洲國(guó)家的要求。怎么說(shuō)呢。asc是8位編碼方式,而unicode 是16位編碼方式,據(jù)說(shuō)unicode能表達(dá)所有的字符,比如漢字,鮮文,還有變異的漢子---日文(據(jù)說(shuō)是日本文的祖先太笨,以至于沒(méi)學(xué)好漢文。)等。對(duì)這這兩個(gè)概念大家只要知道這些就夠了,沒(méi)必要再去上網(wǎng)查。然后來(lái)這里和我較真。
然后將將一些概念,
句柄:句柄是什么東西?其實(shí)他的概念和int,long,char一樣也是關(guān)鍵字,不過(guò)不是c/c++的關(guān)鍵字阿,如hwnd,hanlde.uint等這些關(guān)鍵字有什么用,它們之間有關(guān)聯(lián)么。這些概念先不講。準(zhǔn)備以在代碼中給大家講,個(gè)人感覺(jué)這樣形象點(diǎn)。
下面就是個(gè)簡(jiǎn)單的win32 函數(shù)
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
return 0;
}
在有些書里面 把 int APIENTRY 定義為WINAPI或其他的什么的,其實(shí)多一樣,無(wú)非是一些宏
上面就是個(gè)WIN32主函數(shù),相當(dāng)于我們以前常見(jiàn)的MAIN函數(shù)
我們?cè)谶@個(gè)函數(shù)里要做的就是窗體的注冊(cè)與顯示,以及其他空間的繪制等。
然后就是事件消息的獲得,但是不在這里處理消息。我們把消息發(fā)給專門的消息處理函數(shù),上面沒(méi)有顯示,今天不講這些。
我先將如何去看這些所謂的關(guān)鍵字,英文好的朋友注意了。
HINSTANCE H------INSTANCE :H handle的縮寫,INSTANCE:中文意思就是實(shí)例,白話就是實(shí)際的東西。有什么用,在以后的代碼我們慢慢去發(fā)現(xiàn)吧。
LPSTR L----P----STR:L Long, P Point, STR string(字符串)
沒(méi)價(jià)漢字注視的地方應(yīng)該能看懂吧----------
然后將將參數(shù)意義,英文好的朋友注意。
第一個(gè)參數(shù)有用,怎么用以后將。
第二個(gè)參數(shù)沒(méi)用,給他一個(gè)NULL值就可以
第三個(gè)參數(shù)有用,怎么用看看字面意思
第四個(gè)同上
還有上面的函數(shù)名WinMain 建議大家不要自做聰明去修改他。一直以來(lái)人們多這么用它。
好了 感覺(jué)寫的挺多,不知道你們感覺(jué)怎么樣,呵呵
明天有時(shí)間的話,給你們寫一個(gè)能運(yùn)行的簡(jiǎn)單畫面程序的文章 |
評(píng)分
-
1
查看全部評(píng)分
-
|