如何學(xué)習(xí)Windows編程

有很多初入門的小朋友跟我說叉谜,他們想學(xué)“底層”的技術(shù),因?yàn)橛X得技術(shù)含量高她奥,所以想學(xué)Windows C++開發(fā)敷硅,看著調(diào)用一個(gè)個(gè)的參數(shù)超級(jí)多,調(diào)用起來超級(jí)麻煩的Windows API旁赊,覺著很酷桦踊。于是我念頭一轉(zhuǎn),就有了這篇文章终畅,根據(jù)我多年來做Windows 客戶端的經(jīng)驗(yàn)籍胯,跟大家談?wù)刉indows C++,該從哪一方面入手离福,這不會(huì)是一個(gè)有技術(shù)深度的文章杖狼,只是偶爾會(huì)涉及到一些術(shù)語以及一些入門書籍而已,對(duì)于Windows開發(fā)的老鳥們來說妖爷,只當(dāng)是看著好玩了蝶涩。

首先樂字節(jié)帶大家來談?wù)勛畛醯腤indows開發(fā)。

如果打開《Windows程序設(shè)計(jì)》這本書絮识,關(guān)于Windows開發(fā)的來龍去脈就一目了然了绿聘。但是要注意,《Windows程序設(shè)計(jì)》是一本純講述Windows API的書次舌,確切的說熄攘,這本書主要講的是關(guān)于Windows 用戶態(tài)的API,也就是User32.dll GDI32.dll這兩個(gè)庫(kù)文件中的函數(shù)彼念,大部分的內(nèi)容都是關(guān)于Windows最基本的窗口元素的操控方面的API挪圾,比如創(chuàng)建窗口,繪制窗口国拇,關(guān)閉窗口洛史,消息循環(huán)等等。這本書不需要你有C++方面的知識(shí)酱吝,理論上說只要你有C語言的基礎(chǔ)就可以看懂也殖,但是如果你連C語言的基礎(chǔ)也沒有,看這本書可能會(huì)發(fā)生一些困難,如果你學(xué)過其它一門非面向?qū)ο蟮恼Z言忆嗜,這本書實(shí)際上也能夠勉強(qiáng)看懂己儒。我在大學(xué)的時(shí)候就看了這本書,但是直到現(xiàn)在也沒有看完捆毫,書中的某些知識(shí)闪湾,實(shí)際上在Windows開發(fā)中已經(jīng)很少用到了,我個(gè)人認(rèn)為是沒有必要把這本書從頭到位看一遍的绩卤,在看了前面幾章以后途样,我就蠢蠢欲動(dòng),寫了一些簡(jiǎn)單的程序濒憋,迅速鞏固了關(guān)于這些API調(diào)用的記憶何暇,為今后進(jìn)化到Windows C++階段打下了一個(gè)良好的基礎(chǔ)。所以凛驮,寫程序是很重要的裆站,這個(gè)階段,我建議大家寫一些簡(jiǎn)單的程序黔夭,比如打字測(cè)速程序宏胯,自己創(chuàng)建一個(gè)消息循環(huán),創(chuàng)建一個(gè)窗口本姥,創(chuàng)建一個(gè)光標(biāo)肩袍,用GDI函數(shù)輸出圖形及文字,這樣下來扣草,基本的Windows程序設(shè)計(jì)概念就有了了牛,不過注意寫的時(shí)候不要大段的Copy書上的代碼,全部自己寫辰妙,否則無助于理解各個(gè)API的含義,這個(gè)程序甫窟,因?yàn)槭亲约簩懙牡谝粋€(gè)Windows程序密浑,所以時(shí)間限定在一個(gè)月到一個(gè)半月之內(nèi)比較合適。度過這個(gè)階段以后粗井,Windows編程的基本概念就應(yīng)該在你腦海中形成了尔破。

下面進(jìn)入第二個(gè)階段,也就是C++風(fēng)格的Windows開發(fā)浇衬,也就是職場(chǎng)上需求量很大的Windows C++程序員干的事懒构。

這時(shí)候你需要了解一下這個(gè)老掉牙的叫做MFC的東西,MFC是啥呢耘擂,其實(shí)是一個(gè)很原始的胆剧,用代碼來拼搭界面的C++庫(kù),當(dāng)然,因?yàn)槭荂++庫(kù)秩霍,所以你必須具備了一定的C++知識(shí)篙悯。不過別因?yàn)樵季托∏闪怂琈FC比傳統(tǒng)的Windows SDK開發(fā)方式還是要前進(jìn)了一大步的铃绒,因?yàn)椴还茉趺凑f鸽照,它總算沾了面向?qū)ο蟮囊稽c(diǎn)邊,有那么一點(diǎn)點(diǎn)面向?qū)ο蟮囊馑剂说咝热缫粋€(gè)窗口矮燎,會(huì)被封裝成CWnd類,里面有創(chuàng)建窗口的成員函數(shù)赔癌,窗口繪制的函數(shù)也被封裝了進(jìn)去诞外,CWnd又會(huì)有其它的窗口派生類,比如CView啊CFrameWnd以及各類窗口控件届榄。學(xué)了MFC浅乔,你就基本上對(duì)Windows C++開發(fā)入門了,換而言之铝条,如果你學(xué)的還算過關(guān)的話靖苇,應(yīng)該能在市場(chǎng)上淘到一份關(guān)于Windows C++開發(fā)的工作了。其實(shí)現(xiàn)在很多公司還在使用MFC這個(gè)老黃牛班缰,雖然MFC跟現(xiàn)在流行的界面庫(kù)的易用程度比實(shí)在是差的太遠(yuǎn)贤壁,但是MFC的界面效率高,細(xì)節(jié)操控豐富這仍然是不爭(zhēng)的事實(shí)埠忘。

在這個(gè)階段上脾拆,你可以做一些簡(jiǎn)單的稍微上得了臺(tái)面的程序了,比如開發(fā)一個(gè)基于IE內(nèi)核的瀏覽器莹妒,之所以我讓你開發(fā)這個(gè)程序名船,是因?yàn)殚_發(fā)IE相關(guān)的程序能學(xué)到很多跟COM有關(guān)的知識(shí),COM也同樣是Windows客戶端開發(fā)人員的必備技能旨怠,它的生命力跟MFC一樣的頑強(qiáng)渠驼,甚至有過之而無不及。

這個(gè)階段上鉴腻,如果你對(duì)MFC足夠熟悉了迷扇,還可以接觸一下WTL這個(gè)輕量級(jí)的模板界面庫(kù),其實(shí)如果有了MFC的基礎(chǔ)爽哎,WTL的學(xué)習(xí)過程是很愉快的蜓席,很多MFC中的概念,比如消息映射课锌,在WTL中都有對(duì)應(yīng)的東西厨内,WTL更小巧,封裝的更高端(模板庫(kù)嘛),但是微軟官方不支持隘庄,所以不像MFC在MSDN上有專門的文檔踢步。最重要的是,WTL和ATL可以結(jié)合的非常好丑掺,這樣就使得在WTL上調(diào)用ATL寫的COM組件或是在ATL寫的COM組件中調(diào)用WTL的窗口變的簡(jiǎn)單輕松获印,所以,以我現(xiàn)在的脾氣街州,是更加推薦大家使用WTL而非MFC的兼丰,但是毫無疑問的,WTL的學(xué)習(xí)成本更高唆缴,所以仁者見仁智者見智啦鳍征。

接下來就該學(xué)習(xí)COM了,學(xué)習(xí)COM嘛面徽,幾本關(guān)于COM的基礎(chǔ)理論書籍還是要看的艳丛,比如《COM技術(shù)內(nèi)幕》這個(gè)本書我比較推薦,比較淺顯趟紊,適合COM的初學(xué)者氮双,另外潘愛民的《COM原理與應(yīng)用》我也看過,馬馬虎虎也還算過得去吧霎匈,雖然感覺還是前面那本更好一點(diǎn)戴差。至于那本神乎其神的《COM本質(zhì)論》,我覺得不看也罷铛嘱,那本書初看的時(shí)候沒看幾頁就走神暖释,實(shí)在是晦澀,素我直言墨吓,《COM本質(zhì)論》這本書球匕,如果你沒有好的C++基礎(chǔ)還是別看了,純粹給自己添堵帖烘。

等到有了COM的基礎(chǔ)概念了谐丢,就可以看看《深入解析ATL》,ATL就是用來寫COM的蚓让,雖然它也封裝了一些窗口,控件讥珍,不過這本書稍微寫的深了一點(diǎn)历极,大段的代碼剖析,初學(xué)者看起來還是有難度的衷佃,我當(dāng)初很多地方都是強(qiáng)迫自己看完的趟卸,看完了后,收獲還是不小的。

在你有了一定的Windows程序開發(fā)經(jīng)驗(yàn)之后锄列,可以看《Windows核心編程》图云,這本書講的都是關(guān)于Windows內(nèi)核方面的東西,比如進(jìn)程啦邻邮,內(nèi)核對(duì)象啦竣况,線程啦,DLL啦筒严,SEH啦丹泉,總之我的看法,這本書與《Windows程序設(shè)計(jì)》遙相呼應(yīng)鸭蛙,彌補(bǔ)了前者的不足摹恨,大篇幅的講述了Kernel32.dll里面的函數(shù),這本書很多內(nèi)容我都通讀了好幾遍娶视,某個(gè)國(guó)內(nèi)排名前三的互聯(lián)網(wǎng)公司面試晒哄,面試官的很多問題都是這本書里的東西,所以強(qiáng)烈建議大家把這本書好好學(xué)習(xí)一下肪获。

總結(jié)了一下寝凌,看書是很重要的,但是不要忘了寫代碼贪磺,我得感覺硫兰,看書的時(shí)間和寫代碼的時(shí)間在三七開是比較好的,戰(zhàn)爭(zhēng)中學(xué)習(xí)戰(zhàn)爭(zhēng)寒锚,實(shí)踐出真知劫映,這才是最重要的。

此文章轉(zhuǎn)自樂字節(jié)教育

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刹前,一起剝皮案震驚了整個(gè)濱河市泳赋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喇喉,老刑警劉巖祖今,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拣技,居然都是意外死亡千诬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門膏斤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徐绑,“玉大人,你說我怎么就攤上這事莫辨“燎眩” “怎么了毅访?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盘榨。 經(jīng)常有香客問我喻粹,道長(zhǎng),這世上最難降的妖魔是什么草巡? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任守呜,我火速辦了婚禮,結(jié)果婚禮上捷犹,老公的妹妹穿的比我還像新娘弛饭。我一直安慰自己,他們只是感情好萍歉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布侣颂。 她就那樣靜靜地躺著,像睡著了一般枪孩。 火紅的嫁衣襯著肌膚如雪憔晒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天蔑舞,我揣著相機(jī)與錄音拒担,去河邊找鬼。 笑死攻询,一個(gè)胖子當(dāng)著我的面吹牛从撼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钧栖,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼低零,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拯杠?” 一聲冷哼從身側(cè)響起掏婶,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潭陪,沒想到半個(gè)月后雄妥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡依溯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年老厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黎炉。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梅桩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拜隧,到底是詐尸還是另有隱情宿百,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布洪添,位于F島的核電站垦页,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏干奢。R本人自食惡果不足惜痊焊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忿峻。 院中可真熱鬧薄啥,春花似錦、人聲如沸逛尚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰寞。三九已至到逊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滤钱,已是汗流浹背觉壶。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留件缸,地道東北人铜靶。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像他炊,于是被迫代替她去往敵國(guó)和親争剿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容