友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

C语言实例教程(PDF格式)-第57部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




SetScrollPos(SB_VERT; d_iTopLine; TRUE);  



}  



//………………………………………………………………………………………………………………………………………………………………………………………………………… 



// WM_WININICHANGE message handler。  



void DMainFrame::OnWinIniChange(LPCTSTR lpszSection)   



{  



CFrameWnd::OnWinIniChange(lpszSection);  



// Get new background & foreground colors in case these have changed。  



d_crForeground = GetSysColor(COLOR_WINDOWTEXT);  



d_crBackground = GetSysColor(COLOR_WINDOW);  



// Force redraw of window。  



Invalidate();   



}  


…………………………………………………………Page 486……………………………………………………………

//Microsoft Developer Studio generated resource script。  



//  



#include 〃resource。h〃  



#define APSTUDIO_READONLY_SYMBOLS  



/////////////////////////////////////////////////////////////////////////////  



//  



// Generated from the TEXTINCLUDE 2 resource。  



//  



#include 〃afxres。h〃  



/////////////////////////////////////////////////////////////////////////////  



#undef APSTUDIO_READONLY_SYMBOLS  



/////////////////////////////////////////////////////////////////////////////  



// Chinese (P。R。C。) resources  



#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)  



#ifdef _WIN32  



LANGUAGE LANG_CHINESE; SUBLANG_CHINESE_SIMPLIFIED  



#pragma code_page(936)  



#endif //_WIN32  



#ifdef APSTUDIO_INVOKED  



/////////////////////////////////////////////////////////////////////////////  



//  



// TEXTINCLUDE  



//  



1 TEXTINCLUDE DISCARDABLE   



BEGIN  



〃resource。h0〃  


…………………………………………………………Page 487……………………………………………………………

END  



2 TEXTINCLUDE DISCARDABLE   



BEGIN  



〃#include 〃〃afxres。h〃〃rn〃  



〃0〃  



END  



3 TEXTINCLUDE DISCARDABLE   



BEGIN  



〃#include 〃〃resfilelist。rc2〃〃 // non…Microsoft Visual C++ edited resourcesrn〃  



〃rn〃  



〃#define _AFX_NO_SPLITTER_RESOURCESrn〃  



〃#define _AFX_NO_OLE_RESOURCESrn〃  



〃#define _AFX_NO_TRACKER_RESOURCESrn〃  



〃#define _AFX_NO_PROPERTY_RESOURCESrn〃  



〃#include 〃〃afxres。rc〃〃 t// Standard ponentsrn〃  



〃0〃  



END  



#endif // APSTUDIO_INVOKED  



/////////////////////////////////////////////////////////////////////////////  



//  



// Icon  



//  



// Icon with lowest ID value placed first to ensure application icon  



// remains consistent on all systems。  



IDR_MAINFRAME ICON DISCARDABLE 〃resfilelist。ico〃  



/////////////////////////////////////////////////////////////////////////////  


…………………………………………………………Page 488……………………………………………………………

//  



// Menu  



//  



IDR_MAINFRAME MENU PRELOAD DISCARDABLE   



BEGIN  



POPUP 〃&File〃  



BEGIN  



MENUITEM 〃&Open。。。〃; ID_FILE_OPEN  



MENUITEM SEPARATOR  



MENUITEM 〃E&xit〃; ID_APP_EXIT  



END  



POPUP 〃&Format〃  



BEGIN  



MENUITEM 〃&Font。。。〃; ID_FORMAT_FONT  



MENUITEM SEPARATOR  



MENUITEM 〃&Expand Tabs〃; ID_FORMAT_TABS  



END  



POPUP 〃&Help〃  



BEGIN  



MENUITEM 〃&About FileList。。。〃; ID_APP_ABOUT  



END  



END  



/////////////////////////////////////////////////////////////////////////////  



//  



// Dialog  



//  


…………………………………………………………Page 489……………………………………………………………

IDD_ABOUTBOX DIALOG DISCARDABLE 34; 22; 217; 55  



STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU  



CAPTION 〃About filelist〃  



FONT 8; 〃MS Sans Serif〃  



BEGIN  



LTEXT 〃filelist Version 1。0〃;IDC_STATIC;40;10;119;8  



LTEXT 〃Copyright 〃;IDC_STATIC;40;25;119;8  



DEFPUSHBUTTON 〃OK〃;IDOK;176;6;32;14;WS_GROUP  



CONTROL 〃〃;IDC_STATIC;〃Static〃;SS_BLACKFRAME;8;8;22;19  



ICON IDR_MAINFRAME;IDC_STATIC;8;8;21;20  



END  



#ifndef _MAC  



/////////////////////////////////////////////////////////////////////////////  



//  



// Version  



//  



VS_VERSION_INFO VERSIONINFO  



FILEVERSION 1;0;0;1  



PRODUCTVERSION 1;0;0;1  



FILEFLAGSMASK 0x3fL  



#ifdef _DEBUG  



FILEFLAGS 0x1L  



#else  



FILEFLAGS 0x0L  



#endif  



FILEOS 0x4L  


…………………………………………………………Page 490……………………………………………………………

FILETYPE 0x1L  



FILESUBTYPE 0x0L  



BEGIN  



BLOCK 〃StringFileInfo〃  



BEGIN  



BLOCK 〃040904b0〃  



BEGIN  



VALUE 〃panyName〃; 〃0〃  



VALUE 〃FileDescription〃; 〃FILELIST MFC Application0〃  



VALUE 〃FileVersion〃; 〃1; 0; 0; 10〃  



VALUE 〃InternalName〃; 〃FILELIST0〃  



VALUE 〃LegalCopyright〃; 〃Copyright 0〃  



VALUE 〃OriginalFilename〃; 〃FILELIST。EXE0〃  



VALUE 〃ProductName〃; 〃FILELIST Application0〃  



VALUE 〃ProductVersion〃; 〃1; 0; 0; 10〃  



END  



END  



BLOCK 〃VarFileInfo〃  



BEGIN  



VALUE 〃Translation〃; 0x409; 1200  



END  



END  



#endif // !_MAC  



/////////////////////////////////////////////////////////////////////////////  



//  



// String Table  


…………………………………………………………Page 491……………………………………………………………

//  



STRINGTABLE PRELOAD DISCARDABLE   



BEGIN  



IDR_MAINFRAME 〃FileListnnFilelinnnFilelist。DocumentnFileli Document〃  



END  



STRINGTABLE PRELOAD DISCARDABLE   



BEGIN  



AFX_IDS_APP_TITLE 〃FileList〃  



END  



#endif // Chinese (P。R。C。) resources  



/////////////////////////////////////////////////////////////////////////////  



#ifndef APSTUDIO_INVOKED  



/////////////////////////////////////////////////////////////////////////////  



//  



// Generated from the TEXTINCLUDE 3 resource。  



//  



#include 〃resfilelist。rc2〃 // non…Microsoft Visual C++ edited resources  



#define _AFX_NO_SPLITTER_RESOURCES  



#define _AFX_NO_OLE_RESOURCES  



#define _AFX_NO_TRACKER_RESOURCES  



#define _AFX_NO_PROPERTY_RESOURCES  



#include 〃afxres。rc〃 // Standard ponents  



/////////////////////////////////////////////////////////////////////////////  



#endif // not APSTUDIO_INVOKED  



//{{NO_DEPENDENCIES}}  



// Microsoft Visual C++ generated include file。  


…………………………………………………………Page 492……………………………………………………………

// Used by filelist。rc  



//  



#define IDD_ABOUTBOX 100  



#define IDR_MAINFRAME 128  



#define ID_FORMAT_FONT 32771  



#define ID_FORMAT_TABS 32772  



// Next default values for new objects  



//   



#ifdef APSTUDIO_INVOKED  



#ifndef APSTUDIO_READONLY_SYMBOLS  



#define _APS_3D_CONTROLS 1  



#define _APS_NEXT_RESOURCE_VALUE 130  



#define _APS_NEXT_MAND_VALUE 32773  



#define _APS_NEXT_CONTROL_VALUE 1000  



#define _APS_NEXT_SYMED_VALUE 101  



#endif  



#endif  



// stdafx。h : include file for standard system include files;  



// or project specific include files that are used frequently; but  



// are changed infrequently  



//  



#include  // MFC core and standard ponents  



#include  // MFC extensions  



// stdafx。cpp : source file that includes just the standard includes  



// filelist。pch will be the pre…piled header  



// stdafx。obj will contain the pre…piled type information  


…………………………………………………………Page 493……………………………………………………………

#include 〃stdafx。h〃  



                 第五节 视类  



在本章的前面部分,我们已经涉及到了一些视类及其派生类的用法, 

在本章的后面几节中,我们还结合例程讲解了一些常用的类,由此, 

在本节中,我们计划仅就各类作一简明的介绍,至于各类的具体应 

用,我们认为,通过例程来了解,熟悉各类的使用,远较简单地讲解 

原理更容易掌握。但我们也需要提醒读者的是,由于我们的篇幅原 

因,我们的讲解只可能涉及其中的最主要的部分,至于读者如果希望 

更深入地对系统的体系结构作了解的话,参考系统的随机帮助文件是 

一个相当重要,也相当方便的途径。  



在这一节中,我们会按照各类在MFC中的层次讲解,由于面向对象语 

言的自身特性,父类所具有的特征,其派生出来的子类一般也具有该 

特性,因此,掌握各类的派生关系,往往是深刻理解其行为的一个捷 

径。同时,我们也应该看到,由于各类与其父类的差别,它们又具有 

各式各样的自身的特性,而把握这些特性,又成为进一步理解其独特 

特征的必由之路。下面,我们分类简单地讲解一下视类及各视类派生 

类。  



首先,我们看看处于这些派生类基类位置的CView类在整个系统类体 

系中的位置。  



                              



               图8。17 类CView的继承示意图  



由图8。17我们可以看出,类CWnd为类CView的直接基类。从这里,我 

们至少可以得到的一个最基本的概念就是,视类的对象具有窗口的一 

些基本特性。视类CView是一个用户定义视类的常用基类。一个视类 

与一个文档相连接,在文档与用户之间起了一个桥梁的作用。视类, 

文档,窗口之间的关系有对象CDocTemplate刻画。当用户新开一个窗 

口或将一个窗口进行分割时,程序框架就构造一个与其文档相联系的 

视类。一个视只能对应于一个文档,但一个文档可以拥有多个视,因 

此,就使一个文档,多个视图的程序可以轻易地实现。在本章的稍后 

几节中,读者会发现几个这方面的例程,读者可以看看它们的实现是 

多么的轻松。视的主要功能在于显示和修改文档的数据,但它对文档 


…………………………………………………………Page 494……………………………………………………………

数据的存储没有什么支持。  



一个视类可以直接地接受文档的数据,也可以通过成员函数的调用来 

实现。  



当一个类的数据发生变化时,该文档所关联的视类通常通过调用函数 

CDocument::UpdateAllViews来作出响应。这个函数是维护数据正确 

显示的常用手段。  



视类CView具有为数不多的成员函数。但这些成员函数中的很多个是 

有着重要的意义的。函数OnBeginPrinting初始化打印, 

OnEndPrinting结束一个打印任务,而OnEndPrintPreview则更是关于 

打印预览操作的一个重要函数,而函数OnPreparePrinting则负责了 

对打印以及打印预览的全面支持。  



另外,视类中的两个成员函数OnDraw (该函数在屏幕发生变化或因为 

焦点的变易需要重绘时调用,没有该函数,就不可能在程序的切换后 

保证屏幕的正确显示),OnUpdate则对维护程序的正确显示负有重要 

的责任。(当一个文档发生变化时,绝大多数情况下总是希望其各个 

视图中的数据能得到同步的正确显示的。)函数UpdateAllViews则是 

实现单文档多视图程序不可缺少的手段。(在一个文档的任一视发生 

变化时,通过该类实现各视图的正确显示。)  



接下来我们看看视类各派生类的继承及成员函数情况。但是,在这 

里,我们不再准备对各派生类作详细介绍。但是,我们会尽量简捷地 

告诉读者,怎样从系统的庞大帮助数据库中,查到自己所需要的信 

息。  



   (1) 类CEditView  



其继承关系如图8。18。注意,该类的直接基类不是CView类,而是类 

CCtrlView。  



                                  



               图8。18 类CEditView的继承图解  


…………………………………………………………Page 495……………………………………………………………

类CEditView主要被设计来支持类似编辑控件所要实现的功能,通过 

打印,查找/替换的支持。它们拥有自己的内存,可以在程序中被任 

意正确地使用。我们常见的文本操作,基本上都是由该类支持实现 

的。  



    (2) 类CRichEditView  



类CRichEditView的继承层次如图8。19。  



该类主要提供Rich文本操作的支持 (Rich文本是既可以为文本,也可 

以为图形的一种特殊
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!