• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 改變MFC默認文檔操作方式

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    當利用MFC編程時,其文檔/視圖結構為我們自動生成了文件新建,打開,保存的代碼。這為我們省去了很多麻煩。但當操作對象是ODBC 數據庫 等非文本文件時,問題出現了,如何改變其默認文檔操作過程了? 經過分析MFC源代碼可知。其默認菜單中的新建打開消息分別
    當利用MFC編程時,其文檔/視圖結構為我們自動生成了文件新建,打開,保存的代碼。這為我們省去了很多麻煩。但當操作對象是ODBC數據庫等非文本文件時,問題出現了,如何改變其默認文檔操作過程了?

    經過分析MFC源代碼可知。其默認菜單中的"新建""打開"消息分別對應CwinApp::OnFileNew()與CwinApp::OnFileOpen(),而這兩個函數又直接調用CDocManager::OnFileNew與CDocManager::OnFileOpen。CDocManager::OnFileOpen的工作過程如下:

    1. 調用CDocManager::DoPromptFileName,而DoPromptFileName的作用是顯示文件打開對話框獲得文件名。

    2. 調用CWinApp::OpenDocumentFile(LPCTSTR lpszfileName)。

    如果我們要改變文檔打開方式,只需在CWinApp的繼承類中重載DoPromptFileName與OpenDocumentFile即可。例如要改變默認的文件打開對話框。只需自建一個文件打開對話框,在重載的DoPromptFileName中調用他,獲得一個文件名。

    下面分析CWinApp::OpenDocumentFile。OpenDocumentFile的工作過程是:

    1. 由參數lpszFileName的后綴判斷用哪個文檔模板。

    2. 對該文檔模板的的文檔,視圖,框架窗口作出調整。

    3. 調用CDocTemplate::OpenDocumentFile

    CDocTemplate::OpenDocumentFile是純虛函數,由其派生類CsingleDocTemplate及CMultiDocTemplate實現,以CSingleDocTemplate::OpenDocumentFile舉例說明之。

    1. 判斷有無現存文檔,有則判斷其是否已保存。

    2. 新建框架窗口。

    3. 由文件名路徑判斷該文件是否存在,存在則調用自定義的CMyDoc::OnOpenDocument,否則調用CMyDoc::OnNewDocument。

    從以上分析我們可以對MFC默認的文檔操作方式做多種改變,如改變文件打開保存方式,改變文件打開保存對話框等。

    以上所示的各種源代碼都可以從VC安裝目錄下的MFC\include及mfc\src子目錄下得到。CWinApp類及CDocManager類CDocTemplate類及CsingleDocManager,CDocument類的頭文件是afxwin.h,CWinApp類的源代碼在AppCore.cpp中,CDocManager源代碼在Docmgr.cpp中,CDocTemplate類及CSingleDocManager類的源代碼分別位于doctempl.cpp與docsingl.cpp中。

    總之,要學好MFC文檔視圖結構的最好方法就是多看看MFC源代碼。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>