六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Visual C++應(yīng)用框架揭密

[摘要]北京理工大學(xué)光電工程系 盧英威Visual C++應(yīng)用框架提供的強大功能,為我們的程序開發(fā)提供了極大的方便,利用其應(yīng)用生成器可以很輕松地生成應(yīng)用程序的框架.許多常用功能,例如文檔的創(chuàng)建,文件的打開,...
北京理工大學(xué)光電工程系 盧英威

Visual C++應(yīng)用框架提供的強大功能,為我們的程序開發(fā)提供了極大的方便,利用其應(yīng)用生成器可以很輕松地生成應(yīng)用程序的框架.許多常用功能,例如文檔的創(chuàng)建,文件的打開,保存等操作的大部分代碼都由應(yīng)用框架來完成.這些操作對于開發(fā)軟件的用戶而言,是透明的. Microsoft公司的設(shè)計Visual C++的初衷是盡量向用戶提供盡可能簡單的接口,但是,正是因為應(yīng)用框架的這一透明性,使Visual C++的運行流程顯得非常神秘,當涉及這些Visual C++已經(jīng)提供的功能模塊的軟件開發(fā)時,用戶(特別是那些剛剛接觸Visual C++的)不知道什么時候該使用什么接口函數(shù),想改變Visual C++的一些默認操作時也不知道該從哪兒下手,使開發(fā)的難度增加.
本人在編程實踐中發(fā)現(xiàn),可以通過Visual C++自帶的強大的Debug調(diào)試工具,跟蹤應(yīng)用框架代碼,從而得出應(yīng)用框架操作的部分流程.具體實現(xiàn)是:利用Visual C++應(yīng)用生成器生成應(yīng)用框架代碼,啟動 Classwizard,在各個類中加入欲跟蹤的接口函數(shù),編輯接口函數(shù),設(shè)置斷點,再啟動Debug進行單步跟蹤調(diào)試.利用這一方法,我們還可以跟蹤 Visual C++提供的例子代碼.在跟蹤過程中,Visual C++的核心代碼是禁止跟蹤調(diào)試的,我們只要跳過就行.
以下是本人對多文檔應(yīng)用程序的文檔創(chuàng)建,文件的打開, 保存(另存為)操作的跟蹤結(jié)果,單文檔應(yīng)用與多文檔應(yīng)用的操作流程基本相似,只是用CSingleDocTemplate類的同名函數(shù)來替代對 CMultiDocTemplate類同名函數(shù)的調(diào)用.以下說明中,"應(yīng)用程序"均指用戶生成的基于應(yīng)用框架的實際程序,"用戶代碼"指用戶在接口函數(shù)中加入的代碼.
一.創(chuàng)建文檔
ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)
入口:CWinApp::OnFileNew
調(diào)用:CdocManager::OnFileNew()
1.判斷有無文檔模板,無則函數(shù)返回;
2.判斷是否有多個文檔模板,如有則啟動文檔模板選擇對話框, 讓用戶選擇一個模板后,返回模板指針.
3.由模板指針訪問CMultiDocTemplate::OpenDocumentFile()
31.創(chuàng)建新文檔對象
32.創(chuàng)建與新文檔對象對應(yīng)的子框架,構(gòu)筑子框架,文檔和視窗之間的關(guān)系
33.調(diào)用應(yīng)用程序的OnNewDocument()
a.調(diào)用CDocument::OnNewDocument()
調(diào)用應(yīng)用程序的DeleteContents();
b.用戶代碼
34.調(diào)用InitialUpdateFrame()顯示視窗
35.返回文檔指針
4.返回

二.打開文檔
ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)
入口:CWinApp::OnFileOpen
調(diào)用:CDocManager::OnFileOpen()
1.彈出對話框讓用戶選擇待打開的文件,返回該文件的全路徑名稱, 供下面函數(shù)調(diào)用時使用.
2.調(diào)用應(yīng)用程序的OpenDocumentFile(LPCTSTR lpszFileName)
21.用戶代碼
22.調(diào)用CWinApp::OpenDocumentFile(lpszFileName),
調(diào)用CWinApp::OpenDocumentFile(lpszFileName),
調(diào)用CDocManager::OpenDocumentFile
a.判斷有無該文件的打開文檔對象,有則激活該窗口并返回
b.調(diào)用CMultiDocTemplate::OpenDocumentFile()
b1.創(chuàng)建新的文檔對象,創(chuàng)建新文檔對象對應(yīng)的子框架
b2.調(diào)用應(yīng)用程序的OnOpenDocument()
(1)調(diào)用CDocument::OnOpenDocument()
.打開文件對象
.調(diào)用應(yīng)用程序的DeleteDontents();
.建立與此文件對象相關(guān)聯(lián)的CArchive對象
.調(diào)用應(yīng)用程序文檔對象的Serialize()函數(shù)
.關(guān)閉CArchive對象,文件對象
(2)顯示該文件窗口
b3.返回

三.文件保存
ON_COMMAND(ID_FILE_SAVE,CDocument::OnFileSave)
入口:CDocument::OnFileSave()
調(diào)用:CDocument::DoFileSave()
如果當前文檔對應(yīng)的文件名為空或者為只讀文件,以NULL 為參數(shù)調(diào)用CDocument::DoSave(NULL),否則,以當前文檔對應(yīng)的文件名為參數(shù)調(diào)用CDocument::DoSave(m_strPathName);

ON_COMMAND(ID_FILE_SAVEAS,CDocument::OnFileSaveAs)
入口:CDocument::OnFileSaveAs()
以NULL為參數(shù)直接調(diào)用CDocument::DoSave(NULL);
CDocument::DoSave(LPCTSTR lpszPathName,BOOL bReplace);
如果lpszPathName為NULL,
1.設(shè)定應(yīng)用程序默認的文件名
2.打開通用文件保存對話框,由用戶設(shè)定保存文件的名字,并返回該文件名
如果lpszPahtName不為NULL,則跳為以上兩步,直接進入下一步
3.調(diào)用應(yīng)用程序的OnSaveDocument()
31.用戶代碼
32.調(diào)用CDocument::OnSaveDocument()
a.創(chuàng)建或打開文件對象
b.建立相對應(yīng)的CArchive對象
c.調(diào)用應(yīng)用程序文檔對象的序列化函數(shù)Serialize()
d.關(guān)閉文件對象,CArchive對象
e.設(shè)置文件未修改標志
4.返回


主站蜘蛛池模板: 欧美一级www| 香蕉91| 色综合天天色 | 四虎免费影院ww4164h | 最新国产中文字幕 | 在线免费黄 | 青春久草 | 欧洲天堂网 | 日韩美女一级片 | 五月婷激情 | 日本草草视频在线观看 | 午夜亚洲精品 | 最近新的免费韩国视频 | 日本亚洲欧美国产日韩ay高清 | 五月婷婷丁香综合网 | 日韩免费在线视频观看 | 青青青国产在线观看免费网站 | 日韩精品欧美国产精品忘忧草 | 日韩毛片在线视频 | 特色一级片 | 天天做天天做天天综合网 | 亚洲欧美精品一区二区 | 色香欲亚洲天天综合网 | 青青青国产免费 | 日本一区二区高清免费不卡 | 色在线网 | 天天射天天爱天天干 | 日本系列 1页 亚洲系列 | 四虎免费在线播放 | 伊人色播| 一级女人18毛片免费 | 天天干天天天天 | 青青精品| 青青视频免费看 | 四虎精品永久在线网址 | 日产日韩亚洲欧美综合搜索 | 中文字幕在线看视频一区二区三区 | 午夜性福利 | 在线 v亚洲 v欧美v 专区 | 日日摸夜夜添夜夜添特色大片 | 午夜色站 |