按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
};
// in TEXT。CPP
。。。
#include 〃TextView。h〃
#include 〃HexView。h〃
。。。
BOOL CTextApp::InitInstance()
{
。。。
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_TEXTTYPE;
RUNTIME_CLASS(CTextDoc);
RUNTIME_CLASS(CChildFrame); // custom MDI child frame
RUNTIME_CLASS(CTextView));
AddDocTemplate(pDocTemplate);
m_pTemplateTxt = new CMultiDocTemplate(
IDR_TEXTTYPE;
RUNTIME_CLASS(CTextDoc);
RUNTIME_CLASS(CChildFrame); // custom MDI child frame
RUNTIME_CLASS(CTextView));
m_pTemplateHex = new CMultiDocTemplate(
729
…………………………………………………………Page 792……………………………………………………………
第篇 深入 MFC 程式設計
IDR_TEXTTYPE;
RUNTIME_CLASS(CTextDoc);
RUNTIME_CLASS(CChildFrame); // custom MDI child frame
RUNTIME_CLASS(CHexView));
。。。
}
int CTextApp::ExitInstance()
{
delete m_pTemplateTxt;
delete m_pTemplateHex;
return CWinApp::ExitInstance();
}
修改CTextDoc 程序代码,添加成员变量。Document 的数据是10 笔字符串:
// in TEXTDOC。H
class CTextDoc : public CDocument
{
public:
CStringArray m_stringArray;
。。。
};
// in TEXTDOC。CPP
BOOL CTextDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
m_stringArray。SetSize(10);
m_stringArray'0' = 〃If you love me let me know; 〃;
m_stringArray'1' = 〃if you don't then let me go; 〃;
m_stringArray'2' = 〃I can take another minute 〃;
m_stringArray'3' = 〃 of day without you in it。 〃;
m_stringArray'4' = 〃 〃;
m_stringArray'5' = 〃If you love me let it be; 〃;
m_stringArray'6' = 〃if you don't then set me free〃;
m_stringArray'7' = 〃。。。 〃;
m_stringArray'8' = 〃SORRY; I FORGET IT! 〃;
m_stringArray'9' = 〃 J。J。Hou 1995。03。22 19:26〃;
return TRUE;
}
730
…………………………………………………………Page 793……………………………………………………………
第 13 章 多重文件與多重顯示
修改CTextView::OnDraw 函数码,在其中取得Document 对象指针,然后把文
字显现出来:
// in TEXTVIEW。CPP
void CTextView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int i; j; nHeight;
TEXTMETRIC tm;
pDC…》GetTextMetrics(&tm);
nHeight = tm。tmHeight + tm。tmExternalLeading;
j = pDoc…》m_stringArray。GetSize();
for (i = 0; i 《 j; i++) {
pDC…》TextOut(10; i*nHeight; pDoc…》m_stringArray'i');
}
}
修改CHexView 程序代码, 在OnDraw 函数中取得Document 对象指针, 把
ASCII 转换为Hex 码,再以文字显示出来:
#0001 #include 〃stdafx。h〃
#0002 #include 〃Text。h〃
#0003 #include 〃TextDoc。h〃
#0004 #include 〃HexView。h〃
#0005 。。。
#0006 void CHexView::OnDraw(CDC* pDC)
#0007 {
#0008 // CDocument* pDoc = GetDocument();
#0009 CTextDoc* pDoc = (CTextDoc*)GetDocument();
#0010
#0011 int i; j; k; l; nHeight;
#0012 long n;
#0013 char temp'10';
#0014 CString Line;
#0015 TEXTMETRIC tm;
#0016
#0017 pDC…》GetTextMetrics(&tm);
#0018 nHeight = tm。tmHeight + tm。tmExternalLeading;
#0019
#0020 j = pDoc…》m_stringArray。GetSize();
731
…………………………………………………………Page 794……………………………………………………………
第篇 深入 MFC 程式設計
#0021 for(i = 0; i 《 j; i++) {
#0022 wsprintf(temp; 〃%02x 〃; i);
#0023 Line = temp;
#0024 l = pDoc…》m_stringArray'i'。GetLength();
#0025 for(k = 0; k 《 l; k++) {
#0026 n = pDoc…》m_stringArray'i''k' & 0x00FF;
#0027 wsprintf(temp; 〃%02lx 〃; n);
#0028 Line += temp;
#0029 }
#0030 pDC…》TextOut(10; i*nHeight; Line);
#0031 }
#0032 }
定义CMainFrame 的两个命令处理例程:OnWindowText 和OnWindowHex,使选
单命令项目和工具栏按钮得以发挥效用。函数内容直接拷贝自图13…5,只要
修改其中第14 行即可。这两个函数是本节的技术重点。
#0001 void CMainFrame::OnWindowText()
#0002 {
#0003 CMDIChildWnd* pActiveChild = MDIGetActive();
#0004 CDocument* pDocument;
#0005 if (pActiveChild == NULL ||
#0006 (pDocument = pActiveChild…》GetActiveDocument()) == NULL)
#0007 {
#0008 TRACE0(〃Warning: No active document for WindowNew mandn〃);
#0009 AfxMessageBox(AFX_IDP_MAND_FAILURE);
#0010 return; // mand failed
#0011 }
#0012
#0013 // otherwise we have a new frame!
#0014 CDocTemplate* pTemplate = ((CTextApp*) AfxGetApp())…》m_pTemplateTxt;
#0015 ASSERT_VALID(pTemplate);
#0016 CFrameWnd* pFrame = pTemplate…》CreateNewFrame(pDocument; pActiveChild);
#0017 if (pFrame == NULL)
#0018 {
#0019 TRACE0(〃Warning: failed to create new framen〃);
#0020 AfxMessageBox(AFX_IDP_MAND_FAILURE);
#0021 return; // mand failed
#0022 }
#0023
#0024 pTemplate…》InitialUpdateFrame(pFrame; pDocument);
#0025 }
#0026
#0027 void CMainFrame::OnWindowHex()
732
…………………………………………………………Page 795……………………………………………………………
第 13 章 多重文件與多重顯示
#