按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
。。。
BOOL CGraphApp::InitInstance()
{
。。。
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_GRAPHTYPE;
RUNTIME_CLASS(CGraphDoc);
RUNTIME_CLASS(CChildFrame); // custom MDI child frame
739
…………………………………………………………Page 802……………………………………………………………
第篇 深入 MFC 程式設計
RUNTIME_CLASS(CGraphView));
AddDocTemplate(pDocTemplate);
pDocTemplate = new CMultiDocTemplate(
IDR_NEWTYPE;
RUNTIME_CLASS(CNewDoc);
RUNTIME_CLASS(CMDIChildWnd); // use directly
RUNTIME_CLASS(CEditView));
AddDocTemplate(pDocTemplate);
。。。
}
CMultiDocTemplate 的第一个参数(resource ID )也不能再延用Graph 文件类型所使用的
IDR_GRAPHTYPE 了。要知道,这个ID 值关系非常重大。我们得自行设计一套适用于
NewDoc 文件类型的UI 系统出来(包括菜单、工具栏、文件存取对话框的内容、文件
图标、窗口标题。。。)。
怎么做?第7章的深入讨论将在此开花结果!请务必回头复习复习「Document Template
的意义」一节,我将直接动作,不再多做说明。
新的 UI 系统
下面就是为了这新的 NewDoc 文件型态所对应的 UI 系统,新添的文件內容 (没有什么
好工具可以帮忙,一般文字编辑器的 copy/paste 最快):
// in RESOURCE。H
#define IDD_ABOUTBOX 100
#define IDR_MAINFRAME 128
#define IDR_GRAPHTYPE 129
#define IDR_NEWTYPE 130
。。。
// in GRAPH。RC
IDR NEWTYPE ICON
_ DISCARDABLE 〃resNewDoc。ico〃 // 此icon 需自行备妥
IDR NEWTYPE MENU
_ PRELOAD DISCARDABLE
BEGIN
POPUP 〃&File〃
BEGIN
740
…………………………………………………………Page 803……………………………………………………………
第 13 章 多重文件與多重顯示
MENUITEM 〃&NewtCtrl+N〃; ID_FILE_NEW
MENUITEM 〃&Open。。。tCtrl+O〃; ID_FILE_OPEN
MENUITEM 〃&Close〃; ID_FILE_CLOSE
MENUITEM 〃&SavetCtrl+S〃; ID_FILE_SAVE
MENUITEM 〃Save &As。。。〃; ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM 〃&Print。。。tCtrl+P〃; ID_FILE_PRINT
MENUITEM 〃Print Pre&view〃; ID_FILE_PRINT_PREVIEW
MENUITEM 〃P&rint Setup。。。〃; ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM 〃Recent File〃; ID_FILE_MRU_FILE1; GRAYED
MENUITEM SEPARATOR
MENUITEM 〃E&xit〃; ID_APP_EXIT
END
POPUP 〃&Edit〃
BEGIN
MENUITEM 〃&UndotCtrl+Z〃; ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM 〃Cu&ttCtrl+X〃; ID_EDIT_CUT
MENUITEM 〃&CopytCtrl+C〃; ID_EDIT_COPY
MENUITEM 〃&PastetCtrl+V〃; ID_EDIT_PASTE
END
POPUP 〃&View〃
BEGIN
MENUITEM 〃&Toolbar〃; ID_VIEW_TOOLBAR
MENUITEM 〃&Status Bar〃; ID_VIEW_STATUS_BAR
END
POPUP 〃&Window〃
BEGIN
MENUITEM 〃&New Window〃; ID_WINDOW_NEW
MENUITEM 〃&Cascade〃; ID_WINDOW_CASCADE
MENUITEM 〃&Tile〃; ID_WINDOW_TILE_HORZ
MENUITEM 〃&Arrange Icons〃; ID_WINDOW_ARRANGE
MENUITEM 〃S&plit〃; ID_WINDOW_SPLIT
END
POPUP 〃&Help〃
BEGIN
MENUITEM 〃&About Graph。。。〃; ID_APP_ABOUT
END
END
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_MAINFRAME 〃Graph〃
IDR_GRAPHTYPE 〃GraphnGraphnGraphnGraph Files
(*。fig)n。FIGnGraph。DocumentnGraph Document〃
741
…………………………………………………………Page 804……………………………………………………………
第篇 深入 MFC 程式設計
IDR NEWTYPE
_ 〃NewDocnNewDocnNewDocnNewDoc Files
(*。txt)n。TXTnNewDoc。DocumentnNewDoc Document〃
END
新文件的文件读写动作
你大概还没有忘记,第7章最后曾经介绍过,当我们在AppWizard 中选择CEditView (而
不是CView)作为我们的View 类别基础时,AppWizard 会为我们在CMyDoc::Serialize
函数中放入这样的码:
void CMyDoc::Serialize(CArchive& ar)
{
// CEditView contains an edit control which handles all serialization
((CEditView*)m_viewList。GetHead())…》SerializeRaw(ar);
}
当你使用CEditView,编辑器窗口所承载的文字是放在Edit 控制组件自己的一个内存
区块中,而不是切割到Document 中。所以,文件的文件读写动作只要调用CEditView 的
SerializeRaw 函数即可。
为了这NewDoc 文件类型能够读写文件,�