
---- 当前,用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 rcGetClientRect(&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不同.仅当用户点击了"文件"- >"新建"菜单 项时,才会出现"新建"对话框.STL是标准模板库的简称,从94年7月开始纳入C++标准后得到迅速发展,形成了不同的版
本。目前使用最广的是SGI STL和STLport。SGI
STL本质上是为了配合SGI自作的UNIX变体IRIX所量身定做,好在STL都是一些标准接口和实现的头文件,随着大师们的不断改进,移植起来不太复
杂。目前最新版本是3.3(目前是指2005年1月19日)。在VC6下安装采用下面方式(来源于淡蓝随笔blog):
将stl.zip解压到一个目录,比如C:/SGISTL,然后在VC6的IDE环境
下,ools->options->Directories->Include
files,将C:/SGISTL(你解压的目录)添加进去,然后,将这个路径移到最顶端,就了。还要注意的是,用使用SGI-STL,文件中不能包
含<iostream>,要用<iostream.h>代替。如果你想用VC6的STL,只需要将C:/SGIST移到底端就可
以了。
STLport的下载地址,目前最新版本是4.6.2(目前是指2005年1月19日)。
STLport 移植起来稍微负责一些,详细参见孟岩先生的文章在 Borland C++ 及 Visual C++ 环境中使用 STLport,介绍得非常详细。
对于VC7,前两天有个台湾得同事在移植SGI
STL的时候遇到问题,不过专家们的建议是,如果你使用的VC7,那么最好使用VC7自带由Dinkumware公司提供的STL(作者仍旧是P.J.
Plauger),比VC6中自带的版本有了很好的改进。而且经过了大量的测试,在多线程安全方面也有保证。Winter没有VC7的环境,也只能相信专
家了:)。
Carpicorn:我在自己的电脑上试验了前面的例子。是ok的。我觉得应该也能够使用microsoft的进行STL编程的
一句话两句话说不清楚,尤其是一些理论。不知道你的c语言基础如何。个人推荐你看这本书《VC++编程技巧与范例》,例子很详细,讲解深入浅出,适合初学者使用。还是自己理解一下比较好。看过之后应该自己能编写出来。
http://www.7880.com/Download/VC++-9747.html
评论列表(0条)