久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: MFC 程序 [打印本頁(yè)]

作者: heise    時(shí)間: 2014-8-18 01:09
標(biāo)題: MFC 程序
MFC中,各控件的類(lèi)都是從窗口類(lèi)CWnd派生出來(lái)的,所以控件是一窗口的一種;

[size=133%]Ø什么是對(duì)話(huà)框?
Ø對(duì)話(huà)框就是一個(gè)Dialog控件,和其他的控件不同的是,Dialog控件有自己的消息循環(huán)和Dialog回調(diào)處理程序。




Win32的應(yīng)用程序有一條很明確的主線(xiàn):  1:進(jìn)入WinMain函數(shù)
  2:設(shè)計(jì)窗口類(lèi)、注冊(cè)窗口類(lèi)
  3:產(chǎn)生窗口、顯示窗口、更新窗口
  4:進(jìn)入消息循環(huán),將消息路由到窗口過(guò)程函數(shù)(xxxProc)中去處理;
在消息處理函數(shù)中,根據(jù)消息的類(lèi)型與各控件的屬性,點(diǎn)綴整個(gè)窗口;

在MFC程序設(shè)計(jì)中,為了設(shè)計(jì)的方便,在MFC的“底層框架類(lèi)”中封裝了每一個(gè)窗口應(yīng)用程序都需要的各步驟;

窗口的創(chuàng)建: CWnd類(lèi)的CreateEx函數(shù)實(shí)現(xiàn)【CFrameWnd類(lèi)的Create函數(shù) 調(diào)用 CreateEx函數(shù); CFrameWnd類(lèi)的LoadFrame函數(shù)調(diào)用Create函數(shù)】,CWnd類(lèi)派生出CFrameWnd類(lèi)。

Wnd對(duì)象與Windows的窗口不同,但是兩者有緊密聯(lián)系。CWnd對(duì)象是由CWnd的構(gòu)造函數(shù)析構(gòu)函數(shù)創(chuàng)建或銷(xiāo)毀的。另一方面,Windows的窗口是Windows的一種內(nèi)部數(shù)據(jù)結(jié)構(gòu),它是由CWnd的Create成員函數(shù)創(chuàng)建的,而由CWnd的虛擬析構(gòu)函數(shù)銷(xiāo)毀。DestroyWindow函數(shù)銷(xiāo)毀Windows的窗口,但是不銷(xiāo)毀對(duì)象。


顯示窗口與更新窗口:ShowWindow(SW_SHOW);
                UpdateWindow();
    【UpdateWindow 將WM_PAINT消息直接發(fā)送給窗口過(guò)程處理函數(shù)進(jìn)行處理,對(duì)窗口進(jìn)行刷新;當(dāng)窗口從無(wú)到有、改變尺寸、最小化后再恢復(fù)、被其他窗口遮蓋后再顯示時(shí),窗口的客戶(hù)區(qū)都將變?yōu)闊o(wú)效,此時(shí)系統(tǒng)會(huì)給應(yīng)用程序發(fā)送WM_PAINT消息,我們也可以手動(dòng)調(diào)用UpdateWindow函數(shù)(該函數(shù)會(huì)發(fā)送),我們呢也可以調(diào)用Invalidate(使整個(gè)窗口的客戶(hù)區(qū)或者窗口上的某個(gè)控件無(wú)效,具體的名字與參數(shù)因場(chǎng)合不同 可能有不同)

【CFrameWnd類(lèi)派生于CWnd類(lèi)】
【各控件類(lèi)CEdit、CBotton等都是派生于CWnd,所以控件其實(shí)也是窗口,所以他們其實(shí)也是通過(guò)Create函數(shù)創(chuàng)建,創(chuàng)建的過(guò)程是類(lèi)似的】

消息循環(huán):CWinThread類(lèi)的Run函數(shù)就是完成消息循環(huán)這一任務(wù);該函數(shù)的主要結(jié)構(gòu)是一個(gè)for循環(huán),該循環(huán)在接收到一個(gè)WM_QUIT消息時(shí)退出。

窗口過(guò)程函數(shù):

CWnd類(lèi):CWnd是MFC窗口類(lèi)的基類(lèi),提供了微軟基礎(chǔ)類(lèi)庫(kù)中所有窗口類(lèi)的基本功能。CWnd對(duì)象與Windows的窗口不同,但是兩者有緊密聯(lián)系。CWnd對(duì)象是由CWnd的構(gòu)造函數(shù)和析構(gòu)函數(shù)創(chuàng)建或銷(xiāo)毀的。另一方面,Windows的窗口是Windows的一種內(nèi)部數(shù)據(jù)結(jié)構(gòu),它是由CWnd的Create成員函數(shù)創(chuàng)建的,而由CWnd的虛擬析構(gòu)函數(shù)銷(xiāo)毀。DestroyWindow函數(shù)銷(xiāo)毀Windows的窗口,但是不銷(xiāo)毀對(duì)象。
CFrameWnd類(lèi):CFrameWnd類(lèi)往往用于創(chuàng)建應(yīng)用程序的主窗口,因?yàn)樗芎芎玫刂С窒到y(tǒng)菜單和控制條(工具條、狀態(tài)條等),為此定義了大量的成員函數(shù)和變量。在編寫(xiě)文檔/視圖結(jié)構(gòu)的應(yīng)用程序時(shí),CFrameWnd作為主窗口管理視圖和文檔對(duì)象。視圖對(duì)象和控制條都成為CFrameWnd的子窗口,它們分享客戶(hù)區(qū),其位置被CFrameWnd有效地排列。CFrameWnd直接支持單文檔界面(SDI),對(duì)于多文檔界面(MDI),使用其派生類(lèi)CMDIFrameWnd和CMDIChildWnd。該類(lèi)定義了兩個(gè)成員函數(shù)用于創(chuàng)建主窗口,即Create()和LoadFrame()。前者主要通過(guò)CWnd::CreateEx()創(chuàng)建窗口;而后者首先組織參數(shù),再調(diào)用前者。它們的定義如下:







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 伊人手机在线视频 | 亚洲综合视频 | 久久国内精品 | 日韩免费网站 | 久久在线 | 97久久精品午夜一区二区 | 国产精品视频久久 | 亚洲人成网站777色婷婷 | 亚洲欧美一区二区三区情侣bbw | 国产精品久久国产精品 | 中国黄色在线视频 | 日韩中文字幕视频 | 97久久国产 | 精品国产99 | 欧美一级免费看 | 欧美精品一区二区三区一线天视频 | 在线播放一区二区三区 | 久久久久国产一区二区三区 | 国产永久免费 | 久久精品色欧美aⅴ一区二区 | 国产精品久久九九 | 综合久久综合久久 | 中文二区| 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 毛片区 | 精品一区二区久久久久久久网站 | 国产免费观看视频 | 国产资源在线播放 | 久久久成| 免费成人高清在线视频 | 中文字幕在线观看视频一区 | 久久综合一区 | 成人h视频在线观看 | 日韩国产中文字幕 | 91极品视频 | 国产精品久久99 | 国产在线视频一区二区董小宛性色 | 九九热精品视频 | 美女天天操 | 韩日av在线 | 午夜电影福利 |