vc++窗口類的誕生

vc++窗口類的誕生

ID:36004148

大小:33.50 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-04-29

vc++窗口類的誕生_第1頁(yè)
vc++窗口類的誕生_第2頁(yè)
vc++窗口類的誕生_第3頁(yè)
vc++窗口類的誕生_第4頁(yè)
vc++窗口類的誕生_第5頁(yè)
資源描述:

《vc++窗口類的誕生》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、本資料由-校園大學(xué)生創(chuàng)業(yè)網(wǎng)-提供http://www.chuangyw.com/窗口類的誕生(注冊(cè)自己的窗口類)一.什么是窗口類在Windows中運(yùn)行的程序,大多數(shù)都有一個(gè)或幾個(gè)可以看得見(jiàn)的窗口,而在這些窗口被創(chuàng)建起來(lái)之前,操作系統(tǒng)怎么知道該怎樣創(chuàng)建該窗口,以及用戶操作該窗口的各種消息交給誰(shuí)處理呢?所以VC在調(diào)用Windows的API(CreateWindow或者CreateWindowEx)創(chuàng)建窗口之前,要求程序員必須定義一個(gè)窗口類(不是傳統(tǒng)C++意義上的類)來(lái)規(guī)定所創(chuàng)建該窗口所需要的各種信息,主要包括:窗口的消息處理函數(shù)、窗口的風(fēng)格、圖標(biāo)、鼠標(biāo)、菜單

2、等。其定義如下:typedefstructtagWNDCLASSA(注:該結(jié)構(gòu)為ANSII版本){UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HINSTANCEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCSTRlpszMenuName;LPCSTRlpszClassName;}WNDCLASSA,*PWNDCLASSA,NEAR*NPWNDCLASSA,FAR*LPWNDCLASSA;style表示該類窗口的風(fēng)格

3、,如style=CS_VREDRAW

4、CS_HREDRAW表示窗口在運(yùn)動(dòng)或者調(diào)整大小時(shí)需要重畫(huà),關(guān)于其它風(fēng)格可在MSDN中查到。lpfnWndProc為一指針,指向用戶定義的該窗口的消息處理函數(shù)。cbClsExtra用于在窗口類結(jié)構(gòu)中保留一定空間,用于存在自己需要的某些信息。cbWndExtra用于在Windows內(nèi)部保存的窗口結(jié)構(gòu)中保留一定空間。hInstance表示創(chuàng)建該窗口的程序的運(yùn)行實(shí)體代號(hào)(WinMain的參數(shù)之一)。hIcon、hCursor、hbrBackground、lpszMenuName分別表示該窗口的圖標(biāo)、鼠標(biāo)形狀、背景色以及菜單。

5、lpszClassName表示該窗口類別的名稱,即標(biāo)識(shí)該窗口類的標(biāo)志。從上面可以看出一個(gè)窗口類就對(duì)應(yīng)一個(gè)WNDCLASSA結(jié)構(gòu)(這里以ANSII為例),當(dāng)程序員將該結(jié)構(gòu)按自己要求填寫(xiě)完成后,就可以調(diào)用RegisterClass(或RegisterClassEx)函數(shù)將該類注冊(cè),這樣以后凡是要?jiǎng)?chuàng)建該窗口,只需要以該類名(lpszClassName中指定)為參數(shù)調(diào)用CreateWindow,你看多方便呀,真是一舉多得啊!二.傳統(tǒng)SDK中的窗口類在線代理http://www.dailiav.com/提供部分資料本資料由-校園大學(xué)生創(chuàng)業(yè)網(wǎng)-提供http://ww

6、w.chuangyw.com/既然我們知道了什么是窗口類,那我們就將它放到一個(gè)傳統(tǒng)的SDK程序中,看看是怎樣運(yùn)行的。#includeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){staticTCHARszAppName[]=TEXT("HelloWin");WNDCLASwndclass;wndclass.style=CS_HREDRA

7、W

8、CS_VREDRAW;wndclass.lpfnWndProc=WndProc;......wndclass.lpszClassName=szAppName;RegisterClass(&wndclass);hwnd=CreateWindow(szAppName,...,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wP

9、aram;在線代理http://www.dailiav.com/提供部分資料本資料由-校園大學(xué)生創(chuàng)業(yè)網(wǎng)-提供http://www.chuangyw.com/}這是一個(gè)標(biāo)準(zhǔn)的Windows程序代碼,程序被啟動(dòng)后,填寫(xiě)一個(gè)窗口類,然后調(diào)用RegisterClass將該類注冊(cè),接著創(chuàng)建該窗口,最后顯示窗口和進(jìn)入消息循環(huán)。三.MFC中的窗口類當(dāng)你看到這里,也許你可能會(huì)感到奇怪:我在用MFC向?qū)ё龀绦驎r(shí),并沒(méi)有進(jìn)行什么窗口類的填寫(xiě)和注冊(cè)嗎?是的,你沒(méi)有,但是向?qū)湍阕隽?。在展示向?qū)窃趺醋龅闹?,?qǐng)讓我先介紹一下預(yù)先知識(shí)。在MFC系統(tǒng)中定義了五個(gè)默認(rèn)的窗口類(這里

10、不包括AFX_WNDCOMMCTLS_REG),分別定義在AFXIMPL.h中:

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。