<4D F736F F D20A1B6BCC6CBE3BBFAB5D8CDBCD6C6CDBCA1B7C9CFBBFACAB5D1E9D6B8B5BCCAE92E646F63>

Size: px
Start display at page:

Download "<4D F736F F D20A1B6BCC6CBE3BBFAB5D8CDBCD6C6CDBCA1B7C9CFBBFACAB5D1E9D6B8B5BCCAE92E646F63>"

Transcription

1 计算机地图制图 上机实验指导书 康 建 荣 2010 年 10 月

2 实验内容 在 VC 开发环境下, 编制绘制世界地图程序 一 实验步骤 1. 建立工程 DrawProjection (1) 选择文件菜单下的 New 命令, 如图 1 所示 工程名 :DrawProjection 选择工程目录路径 图 2.2 新建工程 (2) 从 New 对话框中选择 Project 选项卡 在 Project name 处输入工程名, 一般来说, 工程的命名在一定程度上是任意的, 这里我们假定工程名为 DrawProjection, 在 Location 处输入保存工程的文件夹 然后在左边的列表中确信选择了 MFC AppWizard (exe), 在 Platform 列表中确信选择了 Win32 完成之后单击 OK 进入下一步 (3) 在 AppWizard 新建程序的第一步 ( 如图 2) 中在 Application Type 选择时选择 Single document 即可 1

3 图 2 建立单文档界面程序 :Step1 (4) 在第二步 ( 如图 3 所示 ) 中, 由于我们现在建立的只是简单的单文档程序, 我们选择不需要任何数据库支持 图 3 建立单文档界面程序 Step 2 (5) 在第三步 ( 如图 4 所示 ) 中, 我们将设定生成的标准程序中的文档支持 AppWizard 提供有容器类 (Container) 与服务类 (Server) 应用, 我们保持缺省设置 ( 不需要容器类与服务类支持, 但保留 ActiveX Control 控件支持 ) 2

4 图 4 建立单文档界面程序 Step 3 (6) 在第四步 ( 如图 5) 中, 我们去除掉打印预览及打印支持 但我们保持工具条, 状态条, 三维控制支持 对刚使用的文件列表数设置为四 图 5 建立单文档界面程序 Step 4 (7) 在第五步 ( 如图 6) 中, 我们将设定是否设置提示及怎样使用 MFC 库 在刚开始时, 我们设定需要提示, 同时, 动态链接 MFC 库 3

5 图 6 建立单文档界面程序 Step 5 (8) 在最后一步中 ( 如图 7) 中, 我们将设定 AppWizard 将要为我们生成的类 图 7 建立单文档界面程序 Step 6 这样, 我们就建立起一个具有 Document/View 结构的简单的应用程序 2. 增加新类 (1) 类 :CShape 方法 : 4

6 图 8 增加类界面 (a) 在图 8 所示情况下, 鼠标左键点击类视图, 出现如图所示情形, 选中 DrawProjection classes 后点右键, 出现弹出式菜单, 然后选择 New Class 项 (b) 出现图 9 所示对话框后, 在 Class type 项中选择 Generic Class, 在 Name 项中键 图 9 增加类对话框 5

7 入 CShape, 在 Base class(es) 项中键入 CObject, 然后点击 OK 这样就新增加了类名 (c) 在 CShape 类的头文件中增加内容 在类视图中双击类名 CShape 即进入类定义头文件 增加后完整的内容如下 : // Shape.h: interface for the CShape class. // ////////////////////////////////////////////////////////////////////// #if!defined(afx_shape_h D3ED0500_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_) #define AFX_SHAPE_H D3ED0500_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "math.h" #define MAXPOINTS typedef struct double x; double y; Bpoint; typedef struct long PtNo; double hzz; Bpoint *Pt; int bz; Spline; class CShape : public CObject protected: CShape(); DECLARE_SERIAL(CShape) //Attributes protected: COLORREF m_color;// 线的颜色 UINT m_npenwidth;// 线宽 public: BOOL m_bdelete; int m_sort;// 图形类别 : 直线 :0; 矩形 :1; 圆 :2; 文本 :3; 多义线 :4 CRect m_rectbounding;// 图形元素的最小包围框 public: CRect& GetBoundingRect()return m_rectbounding;// 取得包围框 //Operations 6

8 public: BOOL IsLine()return (this->m_sort==0);;// 判断是否直线 BOOL IsPline()return (this->m_sort==1);;// 判断是否多义线 BOOL IsRect()return (this->m_sort==3);;// 判断是否点 BOOL IsPoint()return (this->m_sort==2);;// 判断是矩形 BOOL IsText()return (this->m_sort==4);;// 判断是否文本 BOOL IsTIN()return (this->m_sort==5);;// 判断是否 TIN BOOL IsBSpline()return (this->m_sort==6);;// 判断是否 B 样条曲线 BOOL IsZSpline()return (this->m_sort==7);;// 判断是否张力样条曲线 virtual BOOL Draw(CDC* pdc,double xmin,double xmax,double ymin,double ymax,double blc,colorref cr,int type);// 绘制图形 virtual void FinishShape();// 计算包围框 void SetPenAttr(UINT penw,colorref color);// 设置画笔属性 void SetDrawSort(int kind)// 设置当前图形类别 this->m_sort=kind; public: double CalDisp(double x1, double y1, double x2, double y2); double PointLine(double xx, double yy, double x1, double y1, double x2, double y2); BOOL PointRgn(float x,float y,int Numble,double *XX,double *YY,float blc); virtual void OffsetPoint(CPoint &p);// 偏移图形元素位置 virtual void Serialize(CArchive &ar);// 保存元素 ; #endif //!defined(afx_shape_h D3ED0500_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_) (d) 完成 CShape 类中各成员函数的定义, 完整的内容如下 : // Shape.cpp: implementation of the CShape class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Shape.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]= FILE ; #define new DEBUG_NEW #endif #ifndef M_PI #define M_PI #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// IMPLEMENT_SERIAL(CShape, CObject, 2) 7

9 CShape::CShape() m_rectbounding.setrectempty(); this->m_npenwidth=1; this->m_color=rgb(0,0,0); void CShape::SetPenAttr(UINT penw,colorref color) this->m_npenwidth=penw; this->m_color=color; void CShape::FinishShape() return; void CShape::Serialize(CArchive &ar) if(ar.isstoring()) ar<<m_rectbounding; ar<<(word)m_npenwidth; ar<<m_color; ar<<m_sort; ar>>m_rectbounding; WORD w; ar>>w; m_npenwidth=w; ar>>m_color; ar>>m_sort; BOOL CShape::Draw(CDC *pdc,double xmin,double xmax,double ymin,double ymax,double blc,colorref cr,int type) return TRUE; void CShape::OffsetPoint(CPoint &p) return; double CShape::PointLine(double xx, double yy, double x1, double y1, double x2, double y2) 8

10 double aa,bb,cc,ang1,ang2,ang; // 计算三条边的距离 aa=caldisp(x1,y1,xx,yy); if(aa==0.0) return 0.0; bb=caldisp(x2,y2,xx,yy); if(bb==0.0) return 0.0; cc=caldisp(x1,y1,x2,y2); // 如果 (x1,y1) 和 (x2,y2) 是一个点, 即线段是一个点, 退出函数并返回距离 if(cc==0.0) return aa; if(aa<bb)// 如果 (xx,yy) 到 (x1,y1) 的这条边较短 if(y1==y2) if(x1<x2) ang1=0.0; ang1=m_pi;//pi ang1=acos((x2-x1)/cc); if(y1>y2) ang1=2.0*m_pi-ang1;// 直线 (x1,y1)->(x2,y2) 斜率的弧度 ang2=acos((xx-x1)/aa); if(y1>yy) ang2=2.0*m_pi-ang2;// 直线 (x1,y1)->(xx,yy) 斜率的弧度 ang=ang2-ang1; if(ang<0.0) ang=-ang; if(ang>m_pi) ang=2.0*m_pi-ang;// 交角的大小 if(ang>0.5*m_pi) return aa;// 如果为钝角, 直接返回距离 return(aa*sin(ang));// 否则返回计算得到的距离 // 如果 (xx,yy) 到 (x2,y2) 的这条边较短 if(y1==y2) if(x1<x2) ang1=m_pi; ang1=0.0; ang1=acos((x1-x2)/cc); if(y2>y1) ang1=2.0*m_pi-ang1; ang2=acos((xx-x2)/bb); if(y2>yy) ang2=2.0*m_pi-ang2; 9

11 ang=ang2-ang1; if(ang<0.0) ang=-ang; if(ang>m_pi) ang=2.0*m_pi-ang; if(ang>0.5*m_pi) return bb; return(bb*sin(ang)); double CShape::CalDisp(double x1, double y1, double x2, double y2) return(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); // 函数 PointRgn 作用 : 判断一个点是否在任意多边形区域内 // 参数 :Numble- 边界点数,x,y 是点的坐标, 多边形顶点的坐标在结构数组 PointList 中 // 返回 :1- 点在多边形区域 0- 不在 BOOL CShape::PointRgn(float x,float y,int Numble,double *XX,double *YY,float blc) CRgn rgn; // 定义一个 CRgn 对象 int x1,y1,i; CPoint bbcc[500]; if(numble<3) return 0;// 如果点的数目 <3 即不是一个区域返回不成功标志 // 将点的坐标转变成屏幕坐标 x1=(int)(x/blc); y1=(int)(y/blc); // 将封闭区域各点的坐标转成屏幕坐标 for(i=0;i<numble;i++) bbcc[i].x=(int)((xx[i])/blc); bbcc[i].y=(int)((yy[i])/blc); rgn.createpolygonrgn(bbcc,numble,1);// 初试化一个多边形区域 i=(rgn.ptinregion(x1,y1)!=0); // 如果在区域内 j=1, 否则 j=0; rgn.deleteobject(); // 删除定义的 rgn 对象 return i; (2) 增加类 CPline 方法同上, 类的类型同上, 类的基类为 :CShape 完整的头文件和 CPP 文件如下 : // Pline.h: interface for the CPlines class. // ////////////////////////////////////////////////////////////////////// #if!defined(afx_pline_h D3ED0501_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_) #define AFX_PLINE_H D3ED0501_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER >

12 #include "Shape.h" class CPlines : public CShape DECLARE_SERIAL(CPlines) public: void GetRect(double *minx,double *miny,double *maxx,double *maxy); BOOL IsPoint(double x,double y,double jl,double blc); CPlines(); CPlines(Spline sline,uint penw,colorref color); CPlines(CPlines &sline); CPlines operator=(cplines &sline); virtual ~CPlines(); virtual BOOL Draw(CDC *pdc,double xmin,double xmax,double ymin,double ymax,double blc,colorref cr,int type); virtual void FinishShape(); virtual void OffsetPoint(CPoint &p);// 偏移图形元素位置 virtual void Serialize(CArchive &ar);// 保存元素 ; double minx0,miny0,maxx0,maxy0; Spline m_line; #endif //!defined(afx_pline_h D3ED0501_AEF7_11D7_A6BC_00A0CCCF0ED3 INCLUDED_) // Pline.cpp: implementation of the CPlines class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Pline.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]= FILE ; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// IMPLEMENT_SERIAL(CPlines,CShape,2) CPlines::CPlines() this->m_color=rgb(0,0,0); this->m_npenwidth=1; this->m_bdelete=false; 11

13 CPlines::~CPlines() if(m_line.pt!=null) delete []m_line.pt; CPlines::CPlines(Spline sline,uint penw,colorref color) this->m_color=color; this->m_npenwidth=penw; this->m_line.ptno=sline.ptno; this->m_line.bz=sline.bz; this->m_line.hzz=sline.hzz; int n; this->m_line.pt=new Bpoint[sLine.PtNo]; this->minx0=this->maxx0=sline.pt[0].x; this->miny0=this->maxy0=sline.pt[0].y; for(n=0;n<sline.ptno;n++) this->m_line.pt[n].x=sline.pt[n].x; this->m_line.pt[n].y=sline.pt[n].y; this->minx0=this->minx0<sline.pt[n].x?this->minx0:sline.pt[n].x; this->maxx0=this->maxx0>sline.pt[n].x?this->maxx0:sline.pt[n].x; this->miny0=this->miny0<sline.pt[n].y?this->miny0:sline.pt[n].y; this->maxy0=this->maxy0>sline.pt[n].y?this->maxy0:sline.pt[n].y; CPlines::CPlines(CPlines &sline) if(&sline!=this) this->m_color=sline.m_color; this->m_npenwidth=sline.m_npenwidth; this->m_line.ptno=sline.m_line.ptno; this->m_line.bz=sline.m_line.bz; this->m_line.hzz=sline.m_line.hzz; int n; this->m_line.pt=new Bpoint[sLine.m_line.PtNo]; this->minx0=this->maxx0=sline.m_line.pt[0].x; this->miny0=this->maxy0=sline.m_line.pt[0].y; for(n=0;n<sline.m_line.ptno;n++) this->m_line.pt[n].x=sline.m_line.pt[n].x; this->m_line.pt[n].y=sline.m_line.pt[n].y; this->minx0=this->minx0<sline.m_line.pt[n].x?this->minx0:sline.m_line.pt[n].x; this->maxx0=this->maxx0>sline.m_line.pt[n].x?this->maxx0:sline.m_line.pt[n].x; 12

14 this->miny0=this->miny0<sline.m_line.pt[n].y?this->miny0:sline.m_line.pt[n].y; this->maxy0=this->maxy0>sline.m_line.pt[n].y?this->maxy0:sline.m_line.pt[n].y; CPlines CPlines::operator=(CPlines &sline) if(&sline!=this) this->m_color=sline.m_color; this->m_npenwidth=sline.m_npenwidth; this->m_line.ptno=sline.m_line.ptno; this->m_line.bz=sline.m_line.bz; this->m_line.hzz=sline.m_line.hzz; this->m_line.pt=new Bpoint[sLine.m_line.PtNo]; int n; this->minx0=this->maxx0=sline.m_line.pt[0].x; this->miny0=this->maxy0=sline.m_line.pt[0].y; for(n=0;n<sline.m_line.ptno;n++) this->m_line.pt[n].x=sline.m_line.pt[n].x; this->m_line.pt[n].y=sline.m_line.pt[n].y; this->minx0=this->minx0<sline.m_line.pt[n].x?this->minx0:sline.m_line.pt[n].x; this->maxx0=this->maxx0>sline.m_line.pt[n].x?this->maxx0:sline.m_line.pt[n].x; this->miny0=this->miny0<sline.m_line.pt[n].y?this->miny0:sline.m_line.pt[n].y; this->maxy0=this->maxy0>sline.m_line.pt[n].y?this->maxy0:sline.m_line.pt[n].y; return *this; BOOL CPlines::Draw(CDC *pdc,double xmin,double xmax,double ymin,double ymax,double blc,colorref cr,int type) int i; CString cs; if(type==0) double xx,yy,dl; dl=(xmax-xmin)>(ymax-ymin)?(xmax-xmin):(ymax-ymin); blc=blc*4; xx=(m_line.pt[0].x-xmin)*blc+100; yy=(ymax-m_line.pt[0].y)*blc+100; pdc->moveto(int(xx),int(yy)); 13

15 for(i=1;i<m_line.ptno;i++) xx=(m_line.pt[i].x-xmin)*blc+100; yy=(ymax-m_line.pt[i].y)*blc+100; pdc->lineto(int(xx),int(yy)); CPoint pt[10000]; CBrush brush,*oldbrush; brush.createsolidbrush(cr); oldbrush=pdc->selectobject(&brush); double dl; dl=(xmax-xmin)>(ymax-ymin)?(xmax-xmin):(ymax-ymin); blc=blc*4; pt[0].x=int((m_line.pt[0].x-xmin)*blc+100); pt[0].y=int((ymax-m_line.pt[0].y)*blc+100); for(i=1;i<m_line.ptno;i++) pt[i].x=int((m_line.pt[i].x-xmin)*blc+100); pt[i].y=int((ymax-m_line.pt[i].y)*blc+100); pdc->polygon(pt,m_line.ptno); return TRUE; void CPlines::FinishShape() int i; minx0=maxx0=m_line.pt[0].x; miny0=maxy0=m_line.pt[0].y; for(i=1;i<m_line.ptno;i++) minx0=minx0<m_line.pt[i].x?minx0:m_line.pt[i].x; maxx0=maxx0>m_line.pt[i].x?maxx0:m_line.pt[i].x; miny0=miny0<m_line.pt[i].y?miny0:m_line.pt[i].y; maxy0=maxy0>m_line.pt[i].y?maxy0:m_line.pt[i].y; m_rectbounding=crect(int(minx0),int(miny0),int(maxx0),int(maxy0)); m_rectbounding.inflaterect(csize(m_npenwidth,(int)m_npenwidth)); return; void CPlines::OffsetPoint(CPoint &p) CRect rect(int(this->minx0),int(this->miny0),int(this->maxx0),int(this->maxy0)); 14

16 rect.offsetrect(p); this->minx0=double(rect.left); this->miny0=double(rect.bottom); this->maxx0=double(rect.right); this->maxy0=double(rect.top); return; void CPlines::Serialize(CArchive &ar) CShape::Serialize(ar); int i; if(ar.isstoring()) ar<<m_line.bz<<m_line.hzz<<m_line.ptno; for(i=0;i<m_line.ptno;i++) ar<<m_line.pt[i].x<<m_line.pt[i].y; ar>>m_line.bz>>m_line.hzz>>m_line.ptno; m_line.pt=new Bpoint[m_line.PtNo]; for(i=0;i<m_line.ptno;i++) ar>>m_line.pt[i].x>>m_line.pt[i].y; BOOL CPlines::IsPoint(double x, double y, double jl, double blc) int i; double xx,x1,x2,y1,y2; CString cs; if(this->m_bdelete) return FALSE; GetRect(&x1,&y1,&x2,&y2); if(!(x>=x1-jl&&x<=x2+jl&&y>=y1-jl&&y<=y2+jl)) return FALSE; for(i=0;i<m_line.ptno-1;i++) xx=pointline(x,y,m_line.pt[i].x,m_line.pt[i].y,m_line.pt[i+1].x,m_line.pt[i+1].y); if(xx<jl) return TRUE; return FALSE; void CPlines::GetRect(double *minx, double *miny, double *maxx, double *maxy) double x1,y1,x2,y2; x1=x2=m_line.pt[0].x; 15

17 y1=y2=m_line.pt[0].y; for(int i=0;i<m_line.ptno;i++) x1=x1<m_line.pt[i].x?x1:m_line.pt[i].x; y1=y1<m_line.pt[i].y?y1:m_line.pt[i].y; x2=x2>m_line.pt[i].x?x2:m_line.pt[i].x; y2=y2>m_line.pt[i].y?y2:m_line.pt[i].y; *minx=x1;*maxx=x2;*miny=y1;*maxy=y2; (3) 增加类 CGeoLayer 方法同前 类的类型同 CShape, 类的基类为 :CObject 类的定义如下 : // GeoLayer.h: interface for the CGeoLayer class. // ////////////////////////////////////////////////////////////////////// #if!defined(afx_geolayer_h _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_) #define AFX_GEOLAYER_H _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CGeoLayer : public CObject public: virtual BOOL LoadSave(FILE *fl,bool yn); virtual BOOL Draw(CDC *pdc,double xmin,double ymin,double xmax,double ymax,double blc); void SetLayerPenColor(COLORREF pencolor); void SetLayerBrushColor(COLORREF brushcolor,int brushtype); void SetLayerLineType(int linetype,int linewide); CGeoLayer(); CGeoLayer(CString LayerName,CString LayerType,CRect LayerRect); virtual ~CGeoLayer(); protected: CString m_layername;// 图层名 CString m_layertype;// 图层类型 CRect m_layerrect;// 图层最大区域 COLORREF m_colorpen;// 笔颜色 COLORREF m_colorbrush;// 充填刷颜色 int m_brushtype;// 画刷类型 ;0: 原色 ;1: 阴影 ;2: 图案 int m_linewide;// 线宽 int m_linetype;// 线型 ; #endif //!defined(afx_geolayer_h _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_) // GeoLayer.cpp: implementation of the CGeoLayer class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "DrawProjection.h" 16

18 #include "GeoLayer.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]= FILE ; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CGeoLayer::CGeoLayer() m_layername="0"; m_layertype=" 等高线 "; m_layerrect=crect(0,0,500,500); m_colorpen=rgb(0,0,0); m_colorbrush=rgb(0,0,0); m_linewide=1; m_linetype=ps_solid; CGeoLayer::CGeoLayer(CString LayerName,CString LayerType,CRect LayerRect) m_layername=layername; m_layertype=layertype; m_layerrect=layerrect; CGeoLayer::~CGeoLayer() void CGeoLayer::SetLayerPenColor(COLORREF pencolor) m_colorpen=pencolor; void CGeoLayer::SetLayerBrushColor(COLORREF brushcolor,int brushtype) m_colorbrush=brushcolor; void CGeoLayer::SetLayerLineType(int linetype,int linewide) m_linewide=linewide; m_linetype=linetype; BOOL CGeoLayer::LoadSave(FILE *fl, BOOL yn) if(!yn) char ln[80],lt[80]; fscanf(fl,"%s%s",ln,lt); m_layername.format("%s",ln); m_layertype.format("%s",lt); 17

19 fscanf(fl,"%d%d%d%d",&m_layerrect.left,&m_layerrect.bottom, &m_layerrect.right,&m_layerrect.top); fscanf(fl,"%d%d%d",&m_colorpen,&m_colorbrush,&m_brushtype); fscanf(fl,"%d%d",&m_linetype,&m_linewide); fprintf(fl,"%s %s",m_layername,m_layertype); fprintf(fl," %d %d %d %d",m_layerrect.left,m_layerrect.bottom,m_layerrect.right,m_layerrect.top); fprintf(fl," %d %d %d",m_colorpen,m_colorbrush,m_brushtype); fprintf(fl," %d %d\n",m_linetype,m_linewide); return TRUE; BOOL CGeoLayer::Draw(CDC *pdc,double xmin,double ymin,double xmax,double ymax,double blc) return TRUE; (3) 增加类 CGeoLayerWithProjection 方法同前 类的类型同 CGeoLayer, 类的基类为 :CGeoLayer 类的定义如下 : // GeoLayerWithProjection.h: interface for the CGeoLayerWithProjection class. // ////////////////////////////////////////////////////////////////////// #if!defined(afx_geolayerwithprojection_h _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_) #define AFX_GEOLAYERWITHPROJECTION_H _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "Pline.h" #include "GeoLayer.h" #define MAXPOINTNUM class CGeoLayerWithProjection : public CGeoLayer public: int m_linenum; int m_ptnum; double m_xworldmin,m_yworldmin,m_xworldmax,m_yworldmax; CGeoLayerWithProjection(); virtual ~CGeoLayerWithProjection(); void SetProjectionType(int type,double scale); Bpoint CalProjection(int type,double l,double b); void SetMapExtent(double x1,double y1,double x2,double y2); void Resize(int ll,int tt,int ww,int hh); void AdjustScale(); void XYWorldToScreen(double x,double y,int xx[],int yy[]); void XYScreenToWorld(int x,int y,double xx[],double yy[]); void ZoomIn(); 18

20 void ZoomOut(); void ZoomInAt(int x,int y); void ZoomOutAt(int x,int y); void Pan(int x1,int y1,int x2,int y2); void ZoomWindow(int x1,int y1,int x2,int y2); virtual BOOL LoadSave(FILE *fl,bool yn); virtual BOOL Draw(CDC *pdc,double xmin,double ymin,double xmax,double ymax,double blc); protected: int m_projectiontype; double m_l,m_b; Bpoint m_pt[maxpointnum],m_pt0; double m_scale; int m_screenleft,m_screenright,m_screenbottom,m_screentop; ; #endif //!defined(afx_geolayerwithprojection_h _218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_) // GeoLayerWithProjection.cpp: implementation of the CGeoLayerWithProjection class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "DrawProjection.h" #include "GeoLayerWithProjection.h" #include "math.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]= FILE ; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CGeoLayerWithProjection::CGeoLayerWithProjection() // 初始化世界坐标和窗口坐标范围 // 世界坐标的极值为 X 轴 ( 经度 ) -180 至 +180,Y 轴 ( 纬度 ) -90 至 +90 // 窗口坐标总是从 (0, 0) 开始, 可绘图区域程序初始时暂定为 (640, 480) m_projectiontype=0; m_scale=1.0; m_xworldmin = -180; m_yworldmin = -90; m_xworldmax = 180; m_yworldmax = 90; m_screenleft = 0; m_screentop = 0; m_screenright = 1024; m_screenbottom = 768; 19

21 CGeoLayerWithProjection::~CGeoLayerWithProjection() void CGeoLayerWithProjection::SetProjectionType(int type,double scale) m_projectiontype=type; m_scale=scale; Bpoint CGeoLayerWithProjection::CalProjection(int type,double l,double b) Bpoint pt; pt.x=0.0; pt.y=0.0; static double Pi= ; static double er= ; l=l*pi/180.0;// 经度 b=b*pi/180.0;// 纬度 double x,y; if(type==1)// 正轴等角方位投影 ( 球面投影 ) x=(pi/2.0-b)/2.0; if(x==pi/2.0) x=x ; if(x==-pi/2.0) x=x ; pt.x=2.0*er*cos(l)*tan(x)/m_scale; pt.y=2.0*er*sin(l)*tan(x)/m_scale; if(type==2)// 正轴等积方位投影 ( 兰勃特投影 ) pt.x=2.0*er*cos(l)*sin((pi/2.0-b)/2.0)/m_scale; pt.y=2.0*er*sin(l)*sin((pi/2.0-b)/2.0)/m_scale; if(type==3)// 正轴等距方位投影 ( 波斯托投影 ) pt.x=er*cos(l)*((pi/2.0-b)/2.0)/m_scale; pt.y=er*sin(l)*((pi/2.0-b)/2.0)/m_scale; if(type==4)// 等角正轴切圆柱投影 ( 墨卡托投影 ) x=pi/4.0+b/2.0; if(x==pi/2.0) x=x ; if(x==-pi/2.0) x=x ; if(fabs(tan(x))< ) y= ; y=fabs(tan(x)); pt.x=er*l/m_scale; 20

22 pt.y=er*log(y)/m_scale; if(type==5)// 高斯 - 克吕格投影 double s,n,ita; if(b==pi/2.0) b=b ; if(b==-pi/2.0) b=b ; s= *b+( *sin(2.0*b)+20.0*sin(4.0*b)-0.022*sin(6.0*b) *sin(8.0*b)); n= /sqrt( *sin(b)*sin(b)); ita= *cos(b)*cos(b); pt.x=l*n*cos(b)+n*l*l*l*cos(b)*cos(b)*cos(b)*(1.0-tan(b)*tan(b) +ita)/6.0+n*l*l*l*l*l*cos(b)*cos(b)*cos(b)*cos(b)*cos(b)*(5.0-18*tan(b) *tan(b)+tan(b)*tan(b)*tan(b)*tan(b)+14.0*ita-58.0*ita*tan(b)*tan(b))/120.0; pt.y=s+n*l*l*sin(b)*cos(b)/2.0+n*l*l*l*l*sin(b)*cos(b)*cos(b)*cos(b)*(5.0 -tan(b)*tan(b)+9.0*ita+4.0*ita*ita)/24.0+n*l*l*l*l*l*l*sin(b)*cos(b) *cos(b)*cos(b)*cos(b)*cos(b)*( *tan(b)*tan(b)+tan(b)*tan(b) *tan(b)*tan(b)+270.0*ita*ita-330.0*ita*tan(b)*tan(b))/720.0; pt.x=pt.x/m_scale; pt.y=pt.y/m_scale; if(type==6)// 桑生投影 pt.x=er*l*cos(b)/m_scale; pt.y=er*b/m_scale; if(type==7)// 摩尔威特投影 pt.x=2.0*sqrt(2.0)*er*l*cos(b)/m_scale; pt.y=sqrt(2.0)*er*sin(b)/m_scale; if(type==8)// 爱凯特正弦伪圆柱投影 pt.x=2.0*er*l*cos(b/2.0)*cos(b/2.0)/sqrt(2.0+pi)/m_scale; pt.y=2.0*er*b/sqrt(2.0+pi)/m_scale; if(type==9)// 爱凯特椭圆伪圆柱投影 pt.x=2.0*er*l*(cos(b)+1.0)/sqrt(pi*(4.0+pi))/m_scale; pt.y=2.0*er*sin(b)/sqrt(pi/(4.0+pi))/m_scale; if(type==10)// 等面积伪圆锥投影 ( 彭纳投影 ) double s,n,pp,rr,s1,n1,b1; b1=pi/6.0; s= *b *sin(2.0*b)+20.0*sin(4.0*b)-0.022*sin(6.0*b) *sin(8.0*b); n= /sqrt( *sin(b)*sin(b)); s1= *b *sin(2.0*b1)+20.0*sin(4.0*b1)-0.022*sin(6.0*b1) *sin(8.0*b1); n1= /sqrt( *sin(b1)*sin(b1)); 21

23 pp=n/tan(b1)+s1-s; rr=n*cos(b); pt.x=pp*sin(l*rr/pp)/m_scale; pt.y=-pp*cos(l*rr/pp)/m_scale; if(type==11)// 普通多圆锥投影 ( 美国多圆锥投影 ) double s,n; b=b+0.001*pi/180.0; s= *b *sin(2.0*b)+20.0*sin(4.0*b)-0.022*sin(6.0*b) *sin(8.0*b); n= /sqrt( *sin(b)*sin(b)); pt.x=n/tan(b)*sin(l*sin(b))/m_scale; pt.y=(s+n/tan(b)*(1-cos(l*sin(b))))/m_scale; m_pt0=pt; return pt; BOOL CGeoLayerWithProjection::LoadSave(FILE *fl,bool yn) return TRUE; BOOL CGeoLayerWithProjection::Draw(CDC *pdc,double xmin,double ymin,double xmax,double ymax,double blc) return TRUE; void CGeoLayerWithProjection::SetMapExtent(double x1,double y1,double x2,double y2)// 设置世界坐标范围 m_xworldmin = x1; m_yworldmin = y1; m_xworldmax = x2; m_yworldmax = y2; AdjustScale(); void CGeoLayerWithProjection::Resize(int ll,int tt,int ww,int hh)// 绘图区域坐标调整为新的宽度和高度 m_screenleft = ll; m_screentop = tt; m_screenright = ww + ll; m_screenbottom = hh + tt; AdjustScale(); void CGeoLayerWithProjection::AdjustScale()// 调整转换比例参数 22

24 // 计算坐标转换比例参数 double sx= (m_xworldmax - m_xworldmin) / (m_screenright - m_screenleft); double sy= (m_yworldmax - m_yworldmin) / (m_screenbottom- m_screentop); // 取比较大的一个参数以保证显示出尽可能多的图形 // X 轴和 Y 轴使用系统的参数, 以保证图形不变形 if (sx < sy ) m_scale = 1.0/sy; m_scale = 1.0/sx; // 同时更新世界坐标范围 m_xworldmax = m_xworldmin + (m_screenright - m_screenleft) / m_scale; m_yworldmin= m_yworldmax - (m_screenbottom- m_screentop) / m_scale; void CGeoLayerWithProjection::XYWorldToScreen(double x,double y,int xx[],int yy[])// 世界坐标转换为屏幕坐标 xx[0] = int ((x - m_xworldmin) *m_scale) + m_screenleft; yy[0] = int ((m_yworldmax - y) *m_scale) + m_screentop; void CGeoLayerWithProjection::XYScreenToWorld(int x,int y,double xx[],double yy[])// 屏幕坐标转换为世界坐标 xx[0]= (x - m_screenleft) / m_scale + m_xworldmin; yy[0]= m_yworldmax - (y-m_screentop) / m_scale; void CGeoLayerWithProjection::ZoomIn()// 放大 double xx = (m_xworldmax - m_xworldmin) / 4.0; double yy = (m_yworldmax - m_yworldmin) / 4.0; SetMapExtent(m_xWorldMin + xx, m_yworldmin + yy, m_xworldmax - xx, m_yworldmax - yy); void CGeoLayerWithProjection::ZoomOut()// 缩小 double xx = (m_xworldmax - m_xworldmin) / 4.0; double yy = (m_yworldmax - m_yworldmin) / 4.0; SetMapExtent(m_xWorldMin - xx, m_yworldmin - yy, m_xworldmax + xx, m_yworldmax + yy); void CGeoLayerWithProjection::ZoomInAt(int x,int y)// 在某点放大 int x1[1], y1[1], x2, y2; double x0[1], y0[1]; XYScreenToWorld(x, y, x0, y0); ZoomIn(); XYWorldToScreen(x0[0], y0[0], x1, y1); x2 = (m_screenright - m_screenleft) / 2; 23

25 y2 = (m_screenbottom- m_screentop) / 2; Pan(x1[0], y1[0], x2, y2); void CGeoLayerWithProjection::ZoomOutAt(int x,int y)// 在某点缩小 int x1[1], y1[1], x2, y2; double x0[1], y0[1]; XYScreenToWorld(x, y, x0, y0); ZoomOut(); XYWorldToScreen(x0[0], y0[0], x1, y1); x2 = (m_screenright - m_screenleft) / 2; y2 = (m_screenbottom- m_screentop) / 2; Pan(x1[0], y1[0], x2, y2); void CGeoLayerWithProjection::Pan(int x1,int y1,int x2,int y2)// 平移 double xx1[1], yy1[1], xx2[1], yy2[1], xx, yy; XYScreenToWorld(x1, y1, xx1, yy1); XYScreenToWorld(x2, y2, xx2, yy2); xx = xx2[0] - xx1[0]; yy = yy2[0] - yy1[0]; SetMapExtent(m_xWorldMin - xx, m_yworldmin - yy, m_xworldmax - xx, m_yworldmax - yy); void CGeoLayerWithProjection::ZoomWindow(int x1,int y1,int x2,int y2) double x, y, xx1[1], yy1[1], xx2[1], yy2[1]; if (x1 == x2 y1 == y2) ZoomInAt((x1+x2) / 2, (y1+y2) / 2); exit(0); XYScreenToWorld(x1, y1, xx1, yy1); XYScreenToWorld(x2, y2, xx2, yy2); if (xx1[0] > xx2[0]) x = xx1[0]; xx1[0]= xx2[0]; xx2[0]= x; if( yy1[0] > yy2[0]) y = yy1[0]; yy1[0]= yy2[0]; yy2[0]= y; SetMapExtent(xx1[0], yy1[0], xx2[0], yy2[0]); 3. 增加菜单项 24

26 (1) 点击资源视图, 出现如图 10 情形, 点 DrawProjection resource 前面 + 号展 图 10 增加菜单项界面开各资源项如图, 然后点击 Menu 前的 + 号出现主菜单资源的标志 :IDR_MAINFRAME, 双击标志后, 出现右面的菜单条, 将最后虚框拖至 查看 项之后 (2) 将鼠标移动到虚框上点右键出现图 11 菜单项, 选择 Properties 项, 后出现如图 12 的属性对话框 图 11 图 12 (3) 点击图 12 左上角的 Keep Visible 按钮, 保持属性对话框停留在屏幕上 (4) 如果是最上层菜单项, 则只在 Caption 项里填入相应内容, 其它项需在 ID 项中写入 ID, 一般 ID 均用大写英文字母, 并可用 _ 线相隔 本实验中增加的菜单项内容为 :( 参见图 10) 25

27 菜单 菜单项 (Caption) 命令 ID 导入数据 导入区域数据 ID_INPUT_REGION 导入线型数据 ID_INPUT_LINE 投影类型 没有投影 ID_NO_PROJECTION 球面投影 ID_SPHERE_PROJECTION 兰勃特投影 ID_LANBT_PROJECTION 波斯托投影 ID_BST_PROJECTION 墨卡托投影 ID_MKT_PROJECTION 高斯 - 克吕格投影 ID_GAUSS_PROJECTION 桑生投影 ID_SANSON_PROJECTION 摩尔威特投影 ID_MEW_PROJECTION 爱凯特正弦伪圆柱投影 ID_ECKERT_SIN 爱凯特椭圆伪圆柱投影 ID_ECKERT_TY 彭纳投影 ID_PENA_PROJECTION 美国多圆锥投影 ID_AMERICAN_PROJECTION 4. 加入命令消息控制函数 (1) 在输入完各菜单项后, 将鼠标移动到菜单条上点右键出现图 11 的菜单, 选择 ClassWizard 项后出现图 13 的标签式对话框, 在 Message Maps 项中的 Class name 项中选 图 13 26

28 择 CDrawProjectionView 后, 在 Object IDs 中找到上述所建立的菜单项 ID, 如 ID_ECKERT_SIN, 点击后会在 Messages 出现 COMMAND 项, 双击其并选择默认值, 即建立了命令消息控制函数 (2) 用同样的方法建立其它命令消息控制函数 5. 增加对话框资源 (1) 点击资源视图并展开各资源项 ( 方法同前 ) (2) 点击 Dialog 项, 并点右键出现弹出式菜单项如图 14, 选择 Insert Dialog 项后会在对话框资源中增加一项, 双击后出现对话框编辑界面如图 15 图 14 图 15 (3) 设计的对话框如图 15 其中对话框的 ID 为 :IDD_SELECT_COOR, 其它见图

29 图 16 图 17 28

30 图 18 图 19 (4) 设计好对话框后, 点右键出现如图 11 的弹出式菜单, 选择 ClassWizard 项后出现建立新类的对话框, 在类名中填入 :CSelectCoor0, 其它选择默认值 29

31 (5) 然后选择如图 13 中的 Member Variables 项, 加入控件变量如图 20 (6) 点 OK 确认 图 在 DrawProjectionDoc 的头文件中增加如下阴影内容 ( 注意位置 ): #include "Pline.h" class CDrawProjectionDoc : public CDocument protected: // create from serialization only CDrawProjectionDoc(); DECLARE_DYNCREATE(CDrawProjectionDoc) // Attributes public: CTypedPtrArray<CObArray,CPlines*>m_PLineArray; 的对象.. 7. 在 DrawProjectionDoc 类中增加虚函数 // 管理连续直线对象指针 30

32 方法见图 21, 选中 DrawProjectionDoc 类点右键出现弹出式菜单后, 选择 Add Virtual Function 项, 出现对话框后, 双击 DeleteContents 和 Serialize 图 21 在虚函数中增加内容 : // DrawProjectionDoc.cpp : implementation of the CDrawProjectionDoc class // void CDrawProjectionDoc::Serialize(CArchive& ar) if (ar.isstoring()) // TODO: add storing code here // TODO: add loading code here m_plinearray.serialize(ar); 31

33 void CDrawProjectionDoc::DeleteContents() long nn; nn=this->m_plinearray.getupperbound()+1; while(nn--) delete m_plinearray.getat(nn); m_plinearray.removeat(nn); this->updateallviews(null); this->setmodifiedflag(true); CDocument::DeleteContents(); CDocument::DeleteContents(); 8. 在 DrawProjectionView 类中增加变量和函数增加后的内容如下 : // DrawProjectionView.h : interface of the CDrawProjectionView class // ///////////////////////////////////////////////////////////////////////////// #if!defined(afx_drawprojectionview_h C_218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_) #define AFX_DRAWPROJECTIONVIEW_H C_218C_11D8_A6BC_00A0CCCF0ED3 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "GeoLayerWithProjection.h" class CDrawProjectionView : public CView protected: // create from serialization only CDrawProjectionView(); DECLARE_DYNCREATE(CDrawProjectionView) // Attributes public: CDrawProjectionDoc* GetDocument(); 32

34 // Operations public: // Overrides // ClassWizard generated virtual function overrides //AFX_VIRTUAL(CDrawProjectionView) public: virtual void OnDraw(CDC* pdc); // overridden to draw this view virtual BOOL PreCreateWindow(CREATESTRUCT& cs); protected: //AFX_VIRTUAL // Implementation public: void DrawGrid(CDC *pdc,int type); virtual ~CDrawProjectionView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: BOOL bshowprojection; int m_type; Spline m_line[3000]; Spline m_line0[3000]; Spline slines; BOOL bcoor; int LineNumber; double m_blc; double MaxX,MinX,MaxY,MinY,MaxH,MinH; // Generated message map functions protected: //AFX_MSG(CDrawProjectionView) afx_msg void OnNoProjection(); 33

35 ; afx_msg void OnSphereProjection(); afx_msg void OnLanbtProjection(); afx_msg void OnAmericanProjection(); afx_msg void OnBstProjection(); afx_msg void OnEckertSin(); afx_msg void OnEckertTy(); afx_msg void OnGaussProjection(); afx_msg void OnMewProjection(); afx_msg void OnMktProjection(); afx_msg void OnPenaProjection(); afx_msg void OnSansonProjection(); afx_msg void OnInputRegion(); afx_msg void OnInputLine(); //AFX_MSG DECLARE_MESSAGE_MAP() #ifndef _DEBUG // debug version in DrawProjectionView.cpp inline CDrawProjectionDoc* CDrawProjectionView::GetDocument() return (CDrawProjectionDoc*)m_pDocument; #endif ///////////////////////////////////////////////////////////////////////////// //AFX_INSERT_LOCATION // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif //!defined(afx_drawprojectionview_h C_218C_11D8_A6BC_00A0CCCF0ED3 I NCLUDED_) 增加后的 DrawProjectionView.cpp 文件为 : // DrawProjectionView.cpp : implementation of the CDrawProjectionView class // #include "stdafx.h" #include "DrawProjection.h" #include "DrawProjectionDoc.h" #include "DrawProjectionView.h" #include "SelectCoor0.h" 34

36 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = FILE ; #endif ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView IMPLEMENT_DYNCREATE(CDrawProjectionView, CView) BEGIN_MESSAGE_MAP(CDrawProjectionView, CView) //AFX_MSG_MAP(CDrawProjectionView) ON_COMMAND(ID_NO_PROJECTION, OnNoProjection) ON_COMMAND(ID_SPHERE_PROJECTION, OnSphereProjection) ON_COMMAND(ID_LANBT_PROJECTION, OnLanbtProjection) ON_COMMAND(ID_AMERICAN_PROJECTION, OnAmericanProjection) ON_COMMAND(ID_BST_PROJECTION, OnBstProjection) ON_COMMAND(ID_ECKERT_SIN, OnEckertSin) ON_COMMAND(ID_ECKERT_TY, OnEckertTy) ON_COMMAND(ID_GAUSS_PROJECTION, OnGaussProjection) ON_COMMAND(ID_MEW_PROJECTION, OnMewProjection) ON_COMMAND(ID_MKT_PROJECTION, OnMktProjection) ON_COMMAND(ID_PENA_PROJECTION, OnPenaProjection) ON_COMMAND(ID_SANSON_PROJECTION, OnSansonProjection) ON_COMMAND(ID_INPUT_REGION, OnInputRegion) ON_COMMAND(ID_INPUT_LINE, OnInputLine) //AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView construction/destruction CDrawProjectionView::CDrawProjectionView() // TODO: add construction code here bshowprojection=false; m_type=0; CDrawProjectionView::~CDrawProjectionView() BOOL CDrawProjectionView::PreCreateWindow(CREATESTRUCT& cs) // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs 35

37 return CView::PreCreateWindow(cs); ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView drawing void CDrawProjectionView::OnDraw(CDC* pdc) CDrawProjectionDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); COLORREF cr; for(int i=0;i<this->getdocument()->m_plinearray.getsize();i++) cr=rgb((i% ),(i%192+63),i%255); this->getdocument()->m_plinearray.getat(i)->draw(pdc,minx,maxx,miny,maxy,m_blc,cr,1); if(bshowprojection) DrawGrid(pDC,m_Type); ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView printing BOOL CDrawProjectionView::OnPreparePrinting(CPrintInfo* pinfo) // default preparation return DoPreparePrinting(pInfo); void CDrawProjectionView::OnBeginPrinting(CDC* /*pdc*/, CPrintInfo* /*pinfo*/) // TODO: add extra initialization before printing void CDrawProjectionView::OnEndPrinting(CDC* /*pdc*/, CPrintInfo* /*pinfo*/) // TODO: add cleanup after printing ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView diagnostics #ifdef _DEBUG void CDrawProjectionView::AssertValid() const CView::AssertValid(); void CDrawProjectionView::Dump(CDumpContext& dc) const CView::Dump(dc); 36

38 CDrawProjectionDoc* CDrawProjectionView::GetDocument() // non-debug version is inline ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDrawProjectionDoc))); return (CDrawProjectionDoc*)m_pDocument; #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CDrawProjectionView message handlers void CDrawProjectionView::DrawGrid(CDC *pdc,int type) CGeoLayerWithProjection Map1; if(type==7) Map1.Resize(100,200,400,600); Map1.Resize(100,20,800,600); int ii,jj,linenum; double lo,la,x,y,x1,y1; Bpoint ptt; int xx[1],yy[1]; CPoint pt0[5000]; CPen pen,pen1,pen2,*oldpen; pen1.createpen(ps_solid,1,rgb(128,128,128)); pen2.createpen(ps_solid,1,rgb(255,0,0)); oldpen=pdc->selectobject(&pen1); CBrush brush; double xmin,ymin,xmax,ymax; xmin=ymin=1.0e34; xmax=ymax=-1.0e34; if(!binputline) AfxMessageBox(" 请输入线型数据!"); OnInputLine(); for(ii=0;ii<linenumber;ii++) LineNum=this->GetDocument()->m_PLineArray.GetAt(ii)->m_line.PtNo; m_line0[ii].bz=this->getdocument()->m_plinearray.getat(ii)->m_line.bz; m_line0[ii].ptno=linenum; m_line0[ii].pt=new Bpoint[LineNum]; for(jj=0;jj<linenum;jj++) x=this->getdocument()->m_plinearray.getat(ii)->m_line.pt[jj].x; y=this->getdocument()->m_plinearray.getat(ii)->m_line.pt[jj].y; if(type>0) ptt=map1.calprojection(type,x,y); x1=ptt.x; y1=ptt.y; x1=x; 37

39 38 y1=y; m_line0[ii].pt[jj].x=x1; m_line0[ii].pt[jj].y=y1; xmin=min(xmin,x1); xmax=max(xmax,x1); ymin=min(ymin,y1); ymax=max(ymax,y1); if(type==1) Map1.SetMapExtent(xmin/4.5,ymin/4.5,xmax/4.5,ymax/4.5); if(type==4) Map1.SetMapExtent(xmin,ymin/6.0,xmax,ymax/5.0); if(type==5) Map1.SetMapExtent(xmin,ymin/4.0,xmax,ymax/4.0); Map1.SetMapExtent(xmin,ymin,xmax,ymax); for(ii=0;ii<linenumber;ii++) brush.createsolidbrush(rgb(ii% ,ii%192+63,ii%255)); pdc->selectobject(&brush); if(ii==linenumber-10 ii==linenumber-38) pdc->selectobject(&pen2); pdc->selectobject(&pen1); for(jj=0;jj<m_line0[ii].ptno;jj++) x=m_line0[ii].pt[jj].x; y=m_line0[ii].pt[jj].y; Map1.XYWorldToScreen(x,y,xx,yy); if(m_line0[ii].bz==1) if(jj==0) pdc->moveto(xx[0],yy[0]); pdc->lineto(xx[0],yy[0]); pt0[jj].x=xx[0]; pt0[jj].y=yy[0]; if(m_line0[ii].bz==2) pdc->polygon(pt0,m_line0[ii].ptno); brush.deleteobject(); pen1.deleteobject(); pen2.deleteobject(); pdc->selectobject(oldpen);

40 void CDrawProjectionView::OnNoProjection() m_type=0; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnSphereProjection() m_type=1; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnLanbtProjection() m_type=2; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnBstProjection() m_type=3; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnMktProjection() m_type=4; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnGaussProjection() m_type=5; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnSansonProjection() m_type=6; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnMewProjection() m_type=7; bshowprojection=true; Invalidate(); 39

41 void CDrawProjectionView::OnEckertSin() m_type=8; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnEckertTy() m_type=9; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnPenaProjection() m_type=10; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnAmericanProjection() m_type=11; bshowprojection=true; Invalidate(); void CDrawProjectionView::OnInputRegion() int plnn=this->getdocument()->m_plinearray.getsize(); if(plnn>0) this->getdocument()->m_plinearray.removeall(); CClientDC dc(this); this->onpreparedc(&dc); CFileDialog *d_popenfile=new CFileDialog(TRUE); if(!d_popenfile) return ; d_popenfile->m_ofn.lpstrfilter=_t("data Files(*.dat)\0*.dat\0" "Text Files(*.txt)\0*.txt\0" "All Files(*.*)\0*.*\0"); int iret=d_popenfile->domodal(); if(iret!=idok) return ; CString csfile=d_popenfile->getpathname(); if(csfile.getlength()<1) return ; FILE *fp1; if((fp1=fopen(csfile,"r"))==null) AfxMessageBox(_T("Can not Open File")); return ; 40

42 CString bl1,bl2; CSelectCoor0 cdlg; cdlg.m_coor=0; cdlg.m_blc="1:1"; if(cdlg.domodal()==idok) if(cdlg.m_coor==0) bcoor=false; bcoor=true; int finds=cdlg.m_blc.find(':'); if(finds>0) bl1=cdlg.m_blc.left(cdlg.m_blc.find(':')); bl2=cdlg.m_blc.right(cdlg.m_blc.getlength()-cdlg.m_blc.find(':')-1); bl1=cdlg.m_blc; bl2="1"; if(cdlg.m_coor==0) m_blc=atof(bl1)/atof(bl2); m_blc=1000.0*atof(bl1)/atof(bl2); double lsdataz,lsdatax,lsdatay; int ids,rds; long i=0; MaxX=MaxY=MaxH=-1.0e10; MinX=MinY=MinH=1.0e10; while(!feof(fp1)) rds=fscanf(fp1,"%d%lf",&ids,&lsdataz); if(rds>0) slines.ptno=ids; slines.hzz=lsdataz; slines.pt=new Bpoint[sLines.PtNo+1]; MaxH>lsdataz?MaxH:lsdataz; MinH<lsdataz?MinH:lsdataz; for(int jj=0;jj<slines.ptno;jj++) fscanf(fp1,"%lf,%lf",&lsdatax,&lsdatay); if(bcoor) slines.pt[jj].x=lsdatay; slines.pt[jj].y=lsdatax; slines.pt[jj].x=lsdatax; slines.pt[jj].y=lsdatay; MaxX=MaxX>lsdatax?MaxX:lsdatax; MinX=MinX<lsdatax?MinX:lsdatax; 41

43 MaxY=MaxY>lsdatay?MaxY:lsdatay; MinY=MinY<lsdatay?MinY:lsdatay; if(slines.pt[0].x==slines.pt[slines.ptno-1].x&&slines.pt[0].y==slines.pt[slines.ptno-1 ].y) slines.bz=2;// 闭曲线 slines.pt[slines.ptno].x=slines.pt[0].x; slines.pt[slines.ptno].y=slines.pt[0].y; slines.ptno=slines.ptno+1; slines.bz=2;// 开曲线 CPlines *lines=new CPlines(sLines,1,RGB(0,0,0)); lines->finishshape(); lines->m_bdelete=false; lines->setdrawsort(1); lines->m_sort=1; this->getdocument()->m_plinearray.add(lines); i++; LineNumber=i; fclose(fp1); CPen blackpen; blackpen.createpen(ps_solid, 1, RGB(0, 0, 0)); COLORREF cr; for(i=0;i<this->getdocument()->m_plinearray.getsize();i++) cr=rgb((i% ),(i%192+63),i%255); this->getdocument()->m_plinearray.getat(i)->draw(&dc,minx,maxx,miny,maxy,m_blc,cr,1); return ; void CDrawProjectionView::OnInputLine() CClientDC dc(this); this->onpreparedc(&dc); CFileDialog *d_popenfile=new CFileDialog(TRUE); if(!d_popenfile) return ; d_popenfile->m_ofn.lpstrfilter=_t("data Files(*.dat)\0*.dat\0" "Text Files(*.txt)\0*.txt\0" "All Files(*.*)\0*.*\0"); int iret=d_popenfile->domodal(); if(iret!=idok) return ; CString csfile=d_popenfile->getpathname(); if(csfile.getlength()<1) return ; FILE *fp1; if((fp1=fopen(csfile,"r"))==null) 42

44 AfxMessageBox(_T("Can not Open File")); return ; CString bl1,bl2; CSelectCoor0 cdlg; cdlg.m_coor=0; cdlg.m_blc="1:1"; if(cdlg.domodal()==idok) if(cdlg.m_coor==0) bcoor=false; bcoor=true; int finds=cdlg.m_blc.find(':'); if(finds>0) bl1=cdlg.m_blc.left(cdlg.m_blc.find(':')); bl2=cdlg.m_blc.right(cdlg.m_blc.getlength()-cdlg.m_blc.find(':')-1); bl1=cdlg.m_blc; bl2="1"; if(cdlg.m_coor==0) m_blc=atof(bl1)/atof(bl2); m_blc=1000.0*atof(bl1)/atof(bl2); double lsdataz,lsdatax,lsdatay; int ids,rds,id; long i=0; MaxX=MaxY=MaxH=-1.0e50; MinX=MinY=MinH=1.0e50; while(!feof(fp1)) rds=fscanf(fp1,"%d,%d",&id,&ids); if(rds>0) slines.ptno=ids; slines.hzz=0.0; slines.pt=new Bpoint[sLines.PtNo]; for(int jj=0;jj<slines.ptno;jj++) fscanf(fp1,"%lf,%lf",&lsdatax,&lsdatay); if(bcoor) slines.pt[jj].x=lsdatay; slines.pt[jj].y=lsdatax; slines.pt[jj].x=lsdatax; slines.pt[jj].y=lsdatay; MaxX=MaxX>lsdatax?MaxX:lsdatax; 43

45 MinX=MinX<lsdatax?MinX:lsdatax; MaxY=MaxY>lsdatay?MaxY:lsdatay; MinY=MinY<lsdatay?MinY:lsdatay; if(slines.pt[0].x==slines.pt[slines.ptno-1].x&&slines.pt[0].y==slines.pt[slines.ptno-1 ].y) slines.bz=2;// 闭曲线 slines.bz=1;// 开曲线 CPlines *lines=new CPlines(sLines,1,RGB(0,0,0)); lines->finishshape(); lines->m_bdelete=false; lines->setdrawsort(1); lines->m_sort=1; this->getdocument()->m_plinearray.add(lines); i++; LineNumber=i; fclose(fp1); double lo,la; int ii,jj; lo=-180.0; for(jj=0;jj<37;jj++) slines.ptno=19; slines.pt=new Bpoint[19]; slines.hzz=0.0; la=-90.0; for(ii=0;ii<19;ii++) slines.pt[ii].x=lo; slines.pt[ii].y=la; la=la+10.0; lo=lo+10.0; if(slines.pt[0].x==slines.pt[slines.ptno-1].x&&slines.pt[0].y==slines.pt[slines.ptno-1 ].y) slines.bz=2;// 闭曲线 slines.bz=1;// 开曲线 CPlines *lines=new CPlines(sLines,1,RGB(0,0,0)); lines->finishshape(); lines->m_bdelete=false; lines->setdrawsort(1); lines->m_sort=1; this->getdocument()->m_plinearray.add(lines); 44

46 la=-90.0; for(ii=37;ii<56;ii++) slines.ptno=37; slines.pt=new Bpoint[37]; slines.hzz=0.0; lo=-180.0; for(jj=0;jj<37;jj++) slines.pt[jj].x=lo; slines.pt[jj].y=la; lo=lo+10.0; la=la+10.0; if(slines.pt[0].x==slines.pt[slines.ptno-1].x&&slines.pt[0].y==slines.pt[slines.ptno-1 ].y) slines.bz=2;// 闭曲线 slines.bz=1;// 开曲线 CPlines *lines=new CPlines(sLines,1,RGB(0,0,0)); lines->finishshape(); lines->m_bdelete=false; lines->setdrawsort(1); lines->m_sort=1; this->getdocument()->m_plinearray.add(lines); LineNumber=LineNumber+56; binputline=true; AfxMessageBox(" 输入数据完毕!"); return ; 9. 在 stdafx.h 文件中增加如下头文件 : #include <afxtempl.h> 10. 编译运行 45

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU [email protected] This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

ebook50-11

ebook50-11 11 Wi n d o w s C A D 53 M F C 54 55 56 57 58 M F C 11.1 53 11-1 11-1 MFC M F C C D C Wi n d o w s Wi n d o w s 4 11 199 1. 1) W M _ PA I N T p W n d C W n d C D C * p D C = p W n d GetDC( ); 2) p W n

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

2/e 1998/04 MFC 1/e Windows MFC MFC 2/e 1998/ UNALIS 3/e 2/e 2/e 3/e 3/e MFC 2/e MFC 3/e MFC MFC 2/e VC5+MFC42 VC6+MFC421 MFC 2/e 1

2/e 1998/04 MFC 1/e Windows MFC MFC 2/e 1998/ UNALIS 3/e 2/e 2/e 3/e 3/e MFC 2/e MFC 3/e MFC MFC 2/e VC5+MFC42 VC6+MFC421 MFC 2/e 1 2/e 1998/04 MFC 1/e Windows MFC MFC 2/e 1998/05 1998 UNALIS 3/e 2/e 2/e 3/e 3/e MFC 2/e MFC 3/e MFC MFC 2/e VC5+MFC42 VC6+MFC421 MFC 2/e 1 MFC 2/e PDF http://www.jjhou.com http://expert.csdn.net/jjhou

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

ebook51-14

ebook51-14 14 Wi n d o w s M F C 53 54 55 56 ( ) ( Wo r k e r T h r e a d ) 57 ( ) ( U s e r Interface Thread) 58 59 14.1 53 1. 2. C l a s s Wi z a r d O n I d l e () 3. Class Wi z a r d O n I d l e () O n I d l

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer [email protected] 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

,, 1 ( ) 1 / CurrentSeries Int ConnectionString CString Style3D BOOL IsContinue Graph BOOL LegendType Int SeriesName CString SeriesColor OL E

,, 1 ( ) 1 / CurrentSeries Int ConnectionString CString Style3D BOOL IsContinue Graph BOOL LegendType Int SeriesName CString SeriesColor OL E 2007 9 12 5 JOURNAL OF XI AN UN IV ERSITY OF POST AND TEL ECOMMUN ICA TIONS Sep12007 Vol112 No15 TeeChart (, 710121) : ActiveX TeeChart, Visual C + +,,,, :ActiveX ;;Visual C + + : TP311. 1 :A :1007-3264

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

勤 學 * 卓 越 * 快 樂 成 長 本 校 在 老 師 群 策 群 力 共 同 討 論 下, 型 塑 了 學 校 願 景 : 勤 學 卓 越 快 樂 成 長 ( 一 ) 勤 學 運 用 真 的 力 量 培 養 勤 學, 以 語 文 教 為 基 礎 紮 根 ( 二 ) 卓 越 利 用 美 的 感

勤 學 * 卓 越 * 快 樂 成 長 本 校 在 老 師 群 策 群 力 共 同 討 論 下, 型 塑 了 學 校 願 景 : 勤 學 卓 越 快 樂 成 長 ( 一 ) 勤 學 運 用 真 的 力 量 培 養 勤 學, 以 語 文 教 為 基 礎 紮 根 ( 二 ) 卓 越 利 用 美 的 感 桃 園 市 復 旦 國 民 小 學 104 學 年 度 學 校 課 程 計 畫 壹 依 據 貳 目 的 一 教 基 本 法 第 13 條, 國 民 教 法 第 4 條 二 教 部 92 公 佈 之 國 民 中 小 學 九 年 一 貫 課 程 綱 要 三 桃 園 市 政 府 推 動 國 民 中 小 學 九 年 一 貫 課 程 實 施 計 畫 四 桃 園 市 政 府 97.5.29 府 教 數 字 第

More information

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

Microsoft Word - CIN-DLL.doc

Microsoft Word - CIN-DLL.doc 6.3. 调 用 动 态 链 接 库 (DLL) 相 对 于 CIN 来 讲,NI 更 推 荐 用 户 使 用 DLL 来 共 享 基 于 文 本 编 程 语 言 开 发 的 代 码 除 了 共 享 或 重 复 利 用 代 码, 开 发 人 员 还 能 利 用 DLL 封 装 软 件 的 功 能 模 块, 以 便 这 些 模 块 能 被 不 同 开 发 工 具 利 用 在 LabVIEW 中 使 用

More information

bingdian001.com

bingdian001.com 1. DLL(Dynamic Linkable Library) DLL ± lib EXE DLL DLL EXE EXE ± EXE DLL 1 DLL DLL DLL Windows DLL Windows API Visual Basic Visual C++ Delphi 2 Windows system32 kernel32.dll user32.dll gdi32.dll windows

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 [email protected] C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

绘制OpenCascade中的曲线

绘制OpenCascade中的曲线 在 OpenSceneGraph 中绘制 OpenCascade 的曲线 Draw OpenCascade Geometry Curves in OpenSceneGraph [email protected] 摘要 Abstract: 本文简要说明 OpenCascade 中几何曲线的数据, 并将这些几何曲线在 OpenSceneGraph 中绘制出来 关键字 KeyWords:OpenCascade Geometry

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder [email protected] UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更 AX5000 Version 1.0 2006 年 9 錄...1 說...2 說...3...4 說...5 六...6 6.1 率...7 6.2 POST PAY...8 6.3 PREPAY DEPOSIT...9 6.4...10 6.5...11 更...12...12 LCD IC LED Flash 更 兩 RJ11 ( ) DC ON OFF ON 狀 狀 更 OFF 復 狀 說

More information

How to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

WinMDI 28

WinMDI 28 WinMDI WinMDI 2 Region Gate Marker Quadrant Excel FACScan IBM-PC MO WinMDI WinMDI IBM-PC Dr. Joseph Trotter the Scripps Research Institute WinMDI HP PC WinMDI WinMDI PC MS WORD, PowerPoint, Excel, LOTUS

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: [email protected] 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 [email protected] 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

VC访问VB的ActiveX.dll.doc

VC访问VB的ActiveX.dll.doc 如何从 VisualC++6.0 可执行文件访问 VisualBasicActiveXDLL 本文介绍三种方法可以从 VisualC++6.0 访 VisualBasicActiveXDLL 执行 1. 创建 VisualBasicActiveXDLL 项目 默认情况下创建 Class 1 2. 以下代码添加到 Class 1: Public Function MyVBFunction(x As Integer)

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

酒 神 (长篇小说)

酒  神  (长篇小说) 酒 神 ( 长 篇 小 说 ) 作 家 : 莫 言 第 一 章 一 省 人 民 检 察 院 的 特 级 侦 察 员 丁 钩 儿 搭 乘 一 辆 拉 煤 的 解 放 牌 卡 车 到 市 郊 的 罗 山 煤 矿 进 行 一 项 特 别 调 查 沿 途, 由 于 激 烈 思 索, 脑 袋 膨 胀, 那 顶 本 来 晃 晃 荡 荡 的 五 十 八 号 咖 啡 色 鸭 舌 帽 竟 紧 紧 地 箍 住 了 头

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

Text 文字输入功能 , 使用者可自行定义文字 高度, 旋转角度 , 行距 , 字间距离 和 倾斜角度。

Text 文字输入功能 , 使用者可自行定义文字  高度, 旋转角度 , 行距 , 字间距离 和 倾斜角度。 GerbTool Wise Software Solution, Inc. File New OPEN CLOSE Merge SAVE SAVE AS Page Setup Print Print PreView Print setup (,, IMPORT Gerber Wizard Gerber,Aperture Gerber Gerber, RS-274-D, RS-274-X, Fire9000

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

桃園縣南美國民小學102學年度學校課程計畫

桃園縣南美國民小學102學年度學校課程計畫 桃 園 縣 南 美 國 民 小 學 02 學 年 度 學 校 課 程 計 畫 壹 依 據 一 教 部 國 民 中 小 學 九 年 一 貫 課 程 綱 要 (92.0.5 台 國 字 第 092006026 號 函 ) 二 95.05.24 台 國 ( 二 ) 字 第 0950075748B 號 令 修 正 第 伍 點 ( 學 習 領 域 ) 第 陸 點 ( 實 施 要 點 ) 三 教 部 97 年

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un Linux C July 27, 2016 Contents 1 Linux IDE 1 2 GCC 3 2.1 hello.c hello.exe........................... 5 2.2............................... 9 2.2.1 -Wall................................ 9 2.2.2 -E..................................

More information

Microsoft PowerPoint - OPVB1基本VB.ppt

Microsoft PowerPoint - OPVB1基本VB.ppt 大 綱 0.VB 能 做 什 麼? CH1 VB 基 本 認 識 1.VB 歷 史 與 版 本 2.VB 環 境 簡 介 3. 即 時 運 算 視 窗 1 0.VB 能 做 什 麼? Visual Basic =>VB=> 程 式 設 計 語 言 => 設 計 程 式 設 計 你 想 要 的 功 能 的 程 式 自 動 化 資 料 庫 計 算 模 擬 遊 戲 網 路 監 控 實 驗 輔 助 自 動

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips ([email protected]),, IBM Developer Technical Support Center

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

影視後製全攻略 Premiere Pro After Effects Encore 自序 Adobe Premiere Pro After Effects Encore 2008 Adobe CS Adobe CS5 Adobe CS4 Premiere Pro After Effect

影視後製全攻略 Premiere Pro After Effects Encore 自序 Adobe Premiere Pro After Effects Encore 2008 Adobe CS Adobe CS5 Adobe CS4 Premiere Pro After Effect 自序 Adobe Premiere Pro After Effects Encore 2008 Adobe CS3 2010 Adobe CS5 Adobe CS4 Premiere Pro After Effects Encore 18 ii Tony Cathy 2010/8 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 iii Premiere

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo [email protected] https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

Microsoft Word - 3D手册2.doc

Microsoft Word - 3D手册2.doc 第 一 章 BLOCK 前 处 理 本 章 纲 要 : 1. BLOCK 前 处 理 1.1. 创 建 新 作 业 1.2. 设 定 模 拟 控 制 参 数 1.3. 输 入 对 象 数 据 1.4. 视 图 操 作 1.5. 选 择 点 1.6. 其 他 显 示 窗 口 图 标 钮 1.7. 保 存 作 业 1.8. 退 出 DEFORMTM3D 1 1. BLOCK 前 处 理 1.1. 创 建

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Windows XP

Windows XP Windows XP What is Windows XP Windows is an Operating System An Operating System is the program that controls the hardware of your computer, and gives you an interface that allows you and other programs

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 C C [email protected] C C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 Week3 C Week5 Week5 Memory & Pointer

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Factory Methods

Factory Methods Factory Methods 工 厂 方 法 [email protected] 摘 要 Abstract: 本 文 主 要 是 对 API Design for C++ 中 Factory Methods 章 节 的 翻 译, 若 有 不 当 之 处, 欢 迎 指 正 关 键 字 Key Words:C++ Factory Pattern 一 概 述 Overview 工 厂 方 法 是 创 建 型 模

More information

文档 3

文档 3 1 2 3 4 5 6 / A B A B B A 7 8 9 10 11 12 OO A B A B 13 14 15 16 17 18 19 20 21 22 OOA OOA 23 24 25 OOA OOA 26 27 28 29 30 31 32 use case 33 use case 34 35 36 37 OOD OOA OOD 38 OOA 39 OOD 40 41 / 42 OOD

More information

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS C H P T E R 7 Windows Vista Windows Vista Windows VistaFT16 FT32NTFS NTFSNew Technology File System NTFS 247 6 7-1 Windows VistaTransactional NTFS TxFTxF Windows Vista MicrosoftTxF CIDatomicity - Consistency

More information

untitled

untitled PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

第壹拾篇

第壹拾篇 - 目 次 - 目 次 表 目 次... 1 圖 目 次... 1 凡 例... 1 本 鎮 宗 教 禮 俗 篇 大 事 記... 1 緒 論... 1 第 一 章 宗 教 亯 伖... 3 第 一 節 傳 統 民 間 宗 教... 3 第 二 節 天 主 教 與 基 督 教... 31 第 三 節 日 本 神 社... 35 第 二 章 風 俗 習 慣... 38 第 一 節 歲 時 禮 俗...

More information

Create By PageManager

Create By PageManager ^1~2#??! : 15 @3:50@5:00 7O : @ " - 3 4 : B R; :! : @321 " (A) (B) " " 1C) 1D!" ". lal 1Bl (C1 (D) la1 (B@ 1C1 @D@ 4? (A) lb) @C@ (D) " (Al (B1-" (c1 " 1D1" ". (A) (B) ;C) 1D) (104901-C) : (Al 1Bl 1C)

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer) 1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

专注于做最好的嵌入式计算机系统供应商

专注于做最好的嵌入式计算机系统供应商 专注于做最好的嵌入式计算机系统供应商 基于 ARMSYS2440/2410 开发应用程序 (EVC&VS2005) Rev 1.0 2008 年 3 月 24 日 杭州立宇泰电子有限公司 HangZhou LiYuTai Elec.Co.,Ltd 开发应用程序的过程一般分两步, 第一步在 PC 机开发环境下设计和编译应用程序, 第二步将它下载到 目标系统, 也就是我们的 ARMSYS2440 平台上运行

More information