|
|
我們?cè)陂_(kāi)發(fā)應(yīng)用程序的時(shí)候,用到的多是微軟給的控件,要不就是第三方開(kāi)發(fā)的控件。很多時(shí)候控件的功能不能達(dá)到我們的要求,一般的做法就是利用幾個(gè)控件組合在一起拼成一個(gè)控件,但是這樣做很不好,1性能上有影響2我們的寫(xiě)更多的所謂的無(wú)用代碼來(lái)屏蔽那些我們不想要的功能。好啦廢話(huà)就說(shuō)到這里,解決辦法就是開(kāi)發(fā)一個(gè)自己的控件----有點(diǎn)難度
方法利用微軟的atl開(kāi)發(fā)
利用atl開(kāi)發(fā)控件時(shí)可以基于mfc制作控件,這樣的工作就會(huì)很簡(jiǎn)單,簡(jiǎn)單的東西就不在這里講了。
今天只講原理,
做控件需要注意哪些問(wèn)題,首先是功能,然后就是利用場(chǎng)所,這里我要說(shuō)句,我討厭跨平臺(tái),什么開(kāi)發(fā)出來(lái)的東西既能在windows上用,有能在linux上用,我感覺(jué)沒(méi)必要,打個(gè)比方,我去買(mǎi)手機(jī),我只要知道這個(gè)手機(jī)能夠通話(huà)發(fā)短信就可以,沒(méi)有必要知道這個(gè)手機(jī)還有其他什么功能,如果真的需要mp3,我完全可以自己再買(mǎi)個(gè),手機(jī)上帶的mp3功能無(wú)非是給手機(jī)漲身價(jià),對(duì)客戶(hù)沒(méi)什么用處。還有就是用c開(kāi)發(fā)出來(lái)的東西不可能像java那樣絕對(duì)跨平臺(tái)。理由不解釋
控件的利用場(chǎng)所:我們用c/c++作東西,不是因?yàn)樗y或者使用它做出來(lái)東西就有成就感。關(guān)鍵在于他的速度快,如果是開(kāi)發(fā)程序,我們使用的更多的還是vb等開(kāi)發(fā)語(yǔ)言。這點(diǎn)大家不用擔(dān)心,利用vc開(kāi)發(fā)出來(lái)的東西能有在vb,.net平臺(tái)上使用。
實(shí)現(xiàn): 一個(gè)控件需要哪些功能,如何去實(shí)現(xiàn)
比方說(shuō)控件上的文本信息,顏色,字體等,如果是基于mfc的話(huà)就很簡(jiǎn)單,借口已經(jīng)做好。
但是純粹就是利用atl的話(huà),這些功能我們只能自己去實(shí)現(xiàn)。這時(shí)你的知道怎么去繪制控件。
至少能認(rèn)識(shí)HDC這個(gè)局并,并知道他的作用吧
最后講到的就是事件,比方說(shuō)單擊它會(huì)有什么發(fā)生,而且把這個(gè)接口暴露給用戶(hù),讓用戶(hù)自己去實(shí)現(xiàn)。
今天就寫(xiě)這么多,以后有時(shí)間再接 |
|