程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 如何用VC6.0的SDI實現兩個文檔模板

如何用VC6.0的SDI實現兩個文檔模板

編輯:vc教程

當前,用AppWizard新建的支持文檔/視的SDI項目,只含有從CWinApp,CFrameWnd,CDocument,CView或CVIEw的子類派生的4個類,在CWinApp的InitInstance函數中只實現了一個管理文檔/普通視的文檔模板.

若想實現管理文檔/滾動視,及管理文檔/兩行一列可編輯分隔器這樣兩個文檔模板,只需做:

(1) 用AppWizard新建名為T2的支持文檔/視的SDI項目,建立的最後一步,選擇CScrollView派生視類. 建立完後,此項目的文件名及類名為: T2App.h,T2App.cpp: 含CT2App類的聲明及實現MainFrame.h,MainFrame.cpp: 含CMainFrame類的聲明及實T2Doc.h,T2Doc.cpp: 含CT2Doc類的聲明及實現T2View.h,T2View.cpp: 含CT2VIEw類的聲明及實現

(2) 用ClassWizard從CFrameWnd生成名為F2的框架類,從CEditVIEw生成名為V的視類.

(3) 新建一菜單,其ID值為M2,然後新建一串表條目,其ID,VALUE,CAPTION域分別等於M2,M2的值(在resource.h可找到)," TEMPLATE2".

(4) 在CWinApp.cpp中,加入#include "F2.h"及#include "V.h". 在InitInstance函數的AddDocTemplate(pDocTemplate)語句後,加入以下語句,以生成 與M2菜單及串表相關的第2個文檔模板:
pDocTemplate=new CSingleDocTemplate(
M2,
RUNTIME_CLASS(CT2Doc),
RUNTIME_CLASS(F2),
RUNTIME_CLASS(V));
AddDocTemplate(pDocTemplate);
(5) 在F2.h中,加入成員變量private:
CSplitterWnd m_splitter;在F2.cpp中,加入 #include "V.h".

重載框架類F2的成員函數F2::OnCreateClIEnt:
CRect rc;
GetClIEntRect(&rc);
m_splitter.CreateStatic(this,2,1);
//建立兩行一列分隔器
m_splitter.CreateVIEw(0,0,pContext- >
m_pNewVIEwClass,CSize
(rc.Width(),rc.Height()/2),pContext);

m_splitter.CreateVIEw(1,0,RUNTIME_CLASS
(V),CSize(0,0),pContext);
SetActiveView((CVIEw*)m_splitter.GetPane(0,0));
return TRUE;

初啟此SDI,或用戶點擊了"文件"- >"新建"菜單項時,將出現要求選定模板類型的"新建"對話框,選定"T2"將運行滾動視模板,而點擊"TEMPLATE2"將運行兩行一列可編輯分隔器模板.

要使滾動視中的水平和垂直滾動條可見,可在CT2VIEw::OnInitialUpdate()中,將sizeTotal.cx,sizeTotal.cy置為大於600的值.
對支持文檔/視的MDI項目,可照搬以上的做法,但要從CMDIChildWnd派生F2框架類.初啟此MDI時,不會出現"新建"對話框,這點與SDI不同.僅當用戶點擊了"文件"- >"新建"菜單 項時,才會出現"新建"對話框.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved