www.pudn.com > VRGIS-2005.rar > dem_testView.cpp, change:2001-04-06,size:16175b


// dem_testView.cpp : implementation of the CDem_testView class 
// 
 
#include "stdafx.h" 
#include "dem_test.h" 
#include "stdlib.h" 
#include "stdio.h" 
#include "math.h" 
#include "dem_testDoc.h" 
#include "dem_testView.h" 
 
#include "gl/gl.h" 
#include "gl/glu.h" 
#include "gl/glaux.h" 
#include "Texture.h" 
 
#define rad 3.14159265f/180.0f 
#define PI 3.14159265f 
#define STEP 20.0f 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView 
extern int YN; 
 
IMPLEMENT_DYNCREATE(CDem_testView, CView) 
 
BEGIN_MESSAGE_MAP(CDem_testView, CView) 
	//{{AFX_MSG_MAP(CDem_testView) 
	ON_WM_CREATE() 
	ON_WM_KEYDOWN() 
	ON_WM_SIZE() 
	ON_WM_DESTROY() 
	ON_WM_CANCELMODE() 
	//}}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() 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView construction/destruction 
 
CDem_testView::CDem_testView() 
{ 
	// TODO: add construction code here 
    E_X=40.0; 
	E_Y=60.0; 
	D_X=40.0; 
	D_Y=80.0; 
	VL=20.0; 
    VA=(float)asin((E_Y-D_Y)/VL); 
	HIGH=4; 
	scale=1; 
 
} 
 
CDem_testView::~CDem_testView() 
{ 
} 
 
BOOL CDem_testView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CView::PreCreateWindow(cs); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView drawing 
 
void CDem_testView::OnDraw(CDC* pDC) 
{ 
 
	 
	CDem_testDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
	// TODO: add draw code for native data here 
 
		//pDoc->readdata(); 
	float zz; 
	pDoc->SetTitle("标准的Dem程序三维显示!"); 
	zz=80; 
	glMatrixMode(GL_PROJECTION);	  
	glLoadIdentity(); 
 
	glFrustum(-0.5,0.2,-0.5,0.5,0.5,20000.0);//相机取景参数。 
	gluLookAt(E_X,E_Y,HIGH+zz,D_X,D_Y,HIGH+zz,0.0,0.0,1.0); 
 
	glMatrixMode(GL_MODELVIEW);	 
	glPushAttrib(GL_ALL_ATTRIB_BITS); 
    glPushMatrix(); 
	glClearDepth(1.0); 
	//glClearColor(1.0,0.0,1.5); 
	glClearColor(0.0f,0.0f,0.7f,0.0f); 
	glEnable(GL_DEPTH_TEST);  
    glEnable(GL_BLEND); 
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
	glCullFace(GL_BACK); 
    glFrontFace(GL_CCW); 
    //  绘制天空  
    //  DrawSky(); 
    //  glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL); 
     glCallList(1);	  
  //  glEnable(GL_TEXTURE_2D); 
  // glBindTexture(GL_TEXTURE_2D,2);  
 
 // DrawGround(0.5,150,1,1); 
  // glDisable(GL_TEXTURE_2D); 
    
   glPopAttrib(); 
   glPopMatrix(); 
    
   SwapBuffers(wglGetCurrentDC()); 
 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView printing 
 
BOOL CDem_testView::OnPreparePrinting(CPrintInfo* pInfo) 
{ 
	// default preparation 
	return DoPreparePrinting(pInfo); 
} 
 
void CDem_testView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CDem_testView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView diagnostics 
 
#ifdef _DEBUG 
void CDem_testView::AssertValid() const 
{ 
	CView::AssertValid(); 
} 
 
void CDem_testView::Dump(CDumpContext& dc) const 
{ 
	CView::Dump(dc); 
} 
 
CDem_testDoc* CDem_testView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDem_testDoc))); 
	return (CDem_testDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CDem_testView message handlers 
 
void CDem_testView::SetThePixelFormat(HDC pDC) 
{ 
static PIXELFORMATDESCRIPTOR pfd= 
	{ 
		sizeof(PIXELFORMATDESCRIPTOR),   //size of this structure 
		1.2,                               //version number 
		PFD_DRAW_TO_WINDOW| 
		PFD_SUPPORT_OPENGL| 
		PFD_DOUBLEBUFFER,                //flags 
		PFD_TYPE_RGBA,                   //RGBA pixels 
		24,                              //24-bit color 
		0,0,0,0,0,0,                     //default color bits 
		0,0,                             //no alpha channel 
		0,0,0,0,0,                       //no accumulation buffer 
		32,                              //32-bit depth buffer 
		0,                               //no stencil buffer 
		0,                               //no auxiliary buffers 
		PFD_MAIN_PLANE,                  //main layer 
		0,                               //reserved 
		0,0,0,                           //no layer masks 
	}; 
	int nPixelFormat=ChoosePixelFormat(pDC,&pfd); 
	SetPixelFormat(pDC,nPixelFormat,&pfd); 
} 
 
int CDem_testView::SetTexture(unsigned char *TexImage, int width, int height, int ObjectType) 
{ 
if((width % 16) == 0 &&(height % 16) == 0) 
  {  
		if(ObjectType==1)//若为实体 
		{ 
			glTexImage2D(GL_TEXTURE_2D,0,3,width,height, 
			0,GL_RGB,GL_UNSIGNED_BYTE,TexImage); 
		} 
	//	if(ObjectType)//若为透明 
		else 
		{ 
			glTexImage2D(GL_TEXTURE_2D,0,4,width,height, 
			0,GL_RGBA,GL_UNSIGNED_BYTE,TexImage); 
		} 
		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); 
		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); 
	    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
		glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); 
		return 1; 
	} 
	else 
		return 0; 
 
} 
 
void CDem_testView::SetMaterial(float high) 
{ 
 
	static GLfloat vflHighAmbient[7][4]= 
	{ 
		0.414f, 0.687f, 0.414f,0.f, 
		0.459f, 0.773f, 0.459f,0.f, 
		0.752f, 0.773f, 0.574f,0.f, 
		0.846f, 0.687f, 0.414f,0.f, 
		0.846f, 0.653f, 0.301f,0.f, 
		0.840f, 0.640f, 0.520f,0.f, 
		0.890f,0.890f,0.950f,0.f 
 
	}; 
	static GLfloat vflHighDiffuse[7][4]= 
	{ 
		0.414f, 0.687f, 0.414f,0.1f, 
		0.459f, 0.773f, 0.459f,0.1f, 
		0.752f, 0.773f, 0.574f,0.1f, 
		0.846f, 0.687f, 0.414f,0.1f, 
		0.846f, 0.653f, 0.301f,0.1f, 
		0.840f, 0.640f, 0.520f,0.1f, 
		0.890f,0.890f,0.950f,0.1f 
 
		}; 
/*	for(i=0;i<7;i++) 
		for(j=0;j<3;j++) 
		{ 
          vflHighAmbient[i][j]=vflHighAmbient[i][j]/1.1; 
		  vflHighDiffuse[i][j]=vflHighDiffuse[i][j]/1.1; 
		} 
		*/ 
	if(high>=0.95f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[6]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[6]); 
	} 
	else if(high>=0.8f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[5]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[5]); 
	} 
	else if(high>=0.6f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[4]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[4]); 
	} 
	else if(high>=0.5f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[3]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[3]); 
	} 
	else if(high>=0.4f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[2]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[2]); 
	} 
	else if(high>=0.3f) 
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[1]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[1]); 
	} 
	else  
	{ 
		glMaterialfv(GL_FRONT,GL_AMBIENT,vflHighAmbient[0]); 
		glMaterialfv(GL_FRONT,GL_DIFFUSE,vflHighDiffuse[0]); 
	} 
 
} 
 
void CDem_testView::DrawSky() 
{ 
glEnable(GL_TEXTURE_2D); 
    
    #define TMMAX 3.0f // wrap from -3 to 3, or six times across our pyramid 
    #define TMMAX45 (TMMAX * 0.707f) // roughly sine(TMMAX) 
    glBindTexture(GL_TEXTURE_2D,1);	//一般 
    glBegin (GL_TRIANGLE_FAN); { 
		glTexCoord2f (0.0f, 0.0f); glVertex3f (0.0f, 0.0f, 400.0f); 
		glTexCoord2f (-TMMAX45, -TMMAX45); glVertex3f (-353.5f, -353.5f, 0.0f); 
		glTexCoord2f (0.0f, -TMMAX); glVertex3f (0.0f, -400.0f, 0.0f); 
		glTexCoord2f (TMMAX45, -TMMAX45); glVertex3f (353.0f, -353.5f, 0.0f); 
		glTexCoord2f (TMMAX, 0.0f); glVertex3f (400.0f, 0.0f, 0.0f); 
		glTexCoord2f (TMMAX45, TMMAX45); glVertex3f (353.5f, 353.5f, -0.0f); 
		glTexCoord2f (0.0f, TMMAX); glVertex3f (0.0f, 400.0f, 0.0f); 
		glTexCoord2f (-TMMAX45, TMMAX45); glVertex3f (-353.5f, 353.5f, 0.0f); 
		glTexCoord2f (-TMMAX, 0.0f); glVertex3f (-400.0f, 0.0f, 0.0f); 
		glTexCoord2f (-TMMAX45, -TMMAX45); glVertex3f (-353.5f, -353.5f, 0.0f); 
	} 
	glEnd (); 
    glDisable(GL_TEXTURE_2D); 
 
} 
 
int CDem_testView::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	if (CView::OnCreate(lpCreateStruct) == -1) 
		return -1; 
 
	// TODO: Add your specialized creation code here 
	m_pDC=GetDC()->m_hDC; 
	SetThePixelFormat(m_pDC); 
	m_hrc=wglCreateContext(m_pDC); 
	wglMakeCurrent(m_pDC,m_hrc); 
	CRect rr; 
	GetClientRect(&rr); 
	wx=rr.right; 
	wy=rr.bottom; 
 
    glBindTexture(GL_TEXTURE_2D,1); 
   	deng=new CTexture("cloud.bmp",1);//绘制山脉 
   SetTexture(deng->Tex,deng->t_width,deng->t_height,deng->alpha); 
    
    glBindTexture(GL_TEXTURE_2D,2); 
    clouds=new CTexture("ground1.bmp",1); 
   SetTexture(clouds->Tex,clouds->t_width,clouds->t_height,clouds->alpha); 
    
   glBindTexture(GL_TEXTURE_2D,3); 
    clouds=new CTexture("ground2.bmp",1); 
   SetTexture(clouds->Tex,clouds->t_width,clouds->t_height,clouds->alpha); 
    glBindTexture(GL_TEXTURE_2D,4); 
    clouds=new CTexture("ground3.bmp",1); 
   SetTexture(clouds->Tex,clouds->t_width,clouds->t_height,clouds->alpha); 
  glBindTexture(GL_TEXTURE_2D,5); 
    clouds=new CTexture("ground4.bmp",1); 
   SetTexture(clouds->Tex,clouds->t_width,clouds->t_height,clouds->alpha); 
	return 0; 
} 
 
void CDem_testView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  
{ 
	// TODO: Add your message handler code here and/or call default 
  
    CDem_testDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
     
	GLdouble E_X0,E_Y0,D_X0,D_Y0; 
	E_X0=E_X;E_Y0=E_Y;D_X0=D_X;D_Y0=D_Y; 
	VA=(float)asin((D_Y-E_Y)/VL); 
	if( E_X>=D_X ) VA=PI-VA; 
//	if( E_X<D_X ) VA=2*PI-VA; 
	DetaX=(float)(STEP*cos(VA)); 
	DetaY=(float)(STEP*sin(VA)); 
	switch(nChar) 
	{ 
	case VK_UP: 
 
		E_X=E_X+DetaX;	E_Y=E_Y+DetaY; 
		D_X=D_X+DetaX;	D_Y=D_Y+DetaY; 
		if(E_X=-9990 || E_X>=9990 || E_Y=-9990 || E_Y >=9990) 
			{E_X=E_X0;E_Y=E_Y0;D_X=D_X0;D_Y=D_Y0;} 
		break; 
	case VK_DOWN: 
		E_X=E_X-DetaX;	E_Y=E_Y-DetaY; 
		D_X=D_X-DetaX;	D_Y=D_Y-DetaY; 
		if(E_X=-9990 || E_X>=9990 || E_Y=-9990 || E_Y >=9990) 
			{E_X=E_X0;E_Y=E_Y0;D_X=D_X0;D_Y=D_Y0;} 
		break; 
	case VK_LEFT: 
		VA=VA+5.0f*PI/180.0f;	 
		D_X=E_X+VL*cos(VA);	 
		D_Y=E_Y+VL*sin(VA); 
		break; 
	case VK_RIGHT: 
		VA=VA-5.0f*PI/180.0f; 
		D_X=E_X+VL*cos(VA);	 
		D_Y=E_Y+VL*sin(VA); 
		break; 
	case VK_F2: 
		//VA=VA-5.0f*PI/180.0f; 
		//D_X=E_X+VL*cos(VA);	 
		//D_Y=E_Y+VL*sin(VA); 
       if(HIGH=9000) 
		   HIGH=HIGH+10; 
	   else 
		   HIGH=10; 
		break; 
	case VK_F3: 
		//VA=VA-5.0f*PI/180.0f; 
		//D_X=E_X+VL*cos(VA);	 
		//D_Y=E_Y+VL*sin(VA); 
		{  if(HIGH>-101) 
		   HIGH=HIGH-5; 
	   else 
		   HIGH=100;} 
		break; 
  case VK_F4: 
//	  scale=scale*2; 
	   
	/*   glNewList(1,GL_COMPILE); 
       glEnable(GL_TEXTURE_2D); 
        glBindTexture(GL_TEXTURE_2D,2);  
         DrawGround(0.5,150,1,scale); 
        glDisable(GL_TEXTURE_2D); 
          glEndList();*/ 
		break; 
	 case VK_F5: 
	  	//	  scale=scale/2; 
		// STEP=STEP*2; 
		  
	  /* glNewList(1,GL_COMPILE); 
       glEnable(GL_TEXTURE_2D); 
        glBindTexture(GL_TEXTURE_2D,2);  
         DrawGround(0.5,150,1,scale); 
        glDisable(GL_TEXTURE_2D); 
          glEndList();*/ 
		break; 
	case 'W': 
        KeyDown_W();	break; 
	case 'S': 
        KeyDown_S();	break; 
   
	} 
	//UpdateALLViews(NULL); 
		Invalidate(false);	 
	CView::OnKeyDown(nChar, nRepCnt, nFlags); 
} 
 
void CDem_testView::OnSize(UINT nType, int cx, int cy)  
{ 
	CView::OnSize(nType, cx, cy); 
	 
	// TODO: Add your message handler code here 
	CRect rr; 
	GetClientRect(&rr); 
    GLsizei nWidth=(GLsizei) rr.right; 
	GLsizei nHeight=(GLsizei)rr.bottom; 
	wx=rr.right; 
	wy=rr.bottom; 
	GLdouble dAspect=(GLdouble)nWidth/(GLdouble)nHeight; 
	glViewport(0,0,nWidth,nHeight); 
    //auxWireSphere(1.0); 
	glMatrixMode(GL_PROJECTION); 
	glLoadIdentity(); 
 
	glFrustum(-0.5,0.5,-0.5,.5,0.5,20000.0);//相机取景参数 
	gluLookAt(E_X,E_Y,5.5,D_X,D_Y,1.5,0.0,0.0,1.0); 
	glMatrixMode(GL_MODELVIEW);	 
		DemList(); 
	Invalidate(TRUE); 
	 
} 
 
void CDem_testView::DrawGround(float M, float N, float d, float k) 
{ 
	CDem_testDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
 
	int w; 
	w=8; 
    int i,j; 
   for(i=0;i<pDoc->m-1;i=i+1) 
   {  for(j=0;j<pDoc->n-1;j=j+1) 
	 {  glBegin(GL_QUADS);     
             glTexCoord2f(k*i/(pDoc->m-2),k*j/(pDoc->n-2)); 
             glVertex3f(w*k*i,w*k*j,pDoc->dix[i][j]/M); 
    
          glTexCoord2f(k*(i+1)/(pDoc->m-2),k*j/(pDoc->n-2)); 
          glVertex3f(w*k*(i+1),w*k*j,pDoc->dix[i+1][j]/M); 
 
 
	      glTexCoord2f(k*(i+1)/(pDoc->m-2),k*(j+1)/(pDoc->n-2)); 
          glVertex3f(w*k*(i+1),w*k*(j+1),pDoc->dix[i+1][j+1]/M); 
 
	      glTexCoord2f(k*i/(pDoc->m-2),k*(j+1)/(pDoc->n-2));    
          glVertex3f(w*k*i,w*k*(j+1),pDoc->dix[i][j+1]/M);  
		glEnd(); 
	}		 
    } 
} 
void CDem_testView::DemList() 
{ 
  glNewList(1,GL_COMPILE); 
     glEnable(GL_TEXTURE_2D); 
     glBindTexture(GL_TEXTURE_2D,2);  
      DrawGround(1,150,1,1); 
     glDisable(GL_TEXTURE_2D); 
  glEndList(); 
} 
 
void CDem_testView::OnInitialUpdate()  
{ 
	CView::OnInitialUpdate(); 
	 
	// TODO: Add your specialized code here and/or call the base class 
	DemList(); 
} 
 
void CDem_testView::KeyDown_W() 
{ 
   glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); 
   Invalidate(false); 
} 
void CDem_testView::KeyDown_S() 
{ 
  	glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
    Invalidate(false); 
} 
 
void CDem_testView::Draw(int m, int n, int i, int fada) 
{ 
int k,j,t; 
for(t=0;t<i;t++)  
{for(k=0;k<m-1;k=k+1) 
	{ 
	  for(j=0;j<n-1;j=j+1) 
	  {  
        glBegin(GL_QUADS);     
		  glTexCoord2f(fada*k,fada*j); 
         
         glVertex3f(fada*k,fada*j,t*fada); 
		   glTexCoord2f(fada*(k+1),fada*j); 
         
         glVertex3f(fada*(k+1),fada*j,t*fada); 
		   glTexCoord2f(fada*(k+1),fada*(j+1)); 
         
         glVertex3f(fada*(k+1),fada*(j+1),t*fada); 
		   glTexCoord2f(fada*k,fada*(j+1)); 
         
         glVertex3f(fada*k,fada*(j+1),t*fada);  
        glEnd(); 
	  }	 
	} 
} 
 
 
for(j=0;j<n;j++)  
{for(k=0;k<m-1;k=k+1) 
	{ 
	  for(t=0;t<i-1;t=t+1) 
	  {  
        glBegin(GL_QUADS);     
		  
		glTexCoord2f(fada*k,fada*t); 
        glVertex3f(fada*k,fada*j,t*fada); 
		    
	    glTexCoord2f(fada*(k+1),fada*t); 
        glVertex3f(fada*(k+1),fada*j,t*fada); 
 
		glTexCoord2f(fada*(k+1),fada*(t+1)); 
        glVertex3f(fada*(k+1),fada*j,(t+1)*fada); 
	 
		glTexCoord2f(fada*k,fada*(t+1)); 
        glVertex3f(fada*k,fada*j,(t+1)*fada);  
        glEnd(); 
	  }	 
	} 
} 
 
} 
 
void CDem_testView::RenderTerrain(int hs) 
{ 
    CDem_testDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
		// 绘制地形时必须关闭光照,因为这里没有定义法向量 
	 
 
    int w; 
	w=4; 
int    position_x = (int)E_X/w; 
int    position_y = (int)E_Y/w; 
int x,z,k,comp; 
k=1; 
comp=115; 
float x1,x2,y1,y2; 
glPushMatrix();  
	glDisable(GL_LIGHTING); 
  for(x=position_x-29; x<position_x+30; x++){ 
    for(z=position_y-29; z<position_y+30; z++) { 
      if(x>0 && x<116*w && z>0 && z<116*w) { 
        x1 = (float)x*w; 
        x2 = (float)x*w + w; 
        y1 = (float)z*w; 
        y2 = (float)z*w + w; 
 
 
  glBegin(GL_QUADS);     
             glTexCoord2f(k*x1/comp,k*y1/comp); 
             glVertex3f(k*x1,k*y1,pDoc->dix[x][z]/hs); 
    
          glTexCoord2f(k*x2/comp,k*y1/comp); 
          glVertex3f(k*x2,k*y1,pDoc->dix[x+1][z]/hs); 
 
	      glTexCoord2f(k*x2/comp,k*y2/comp); 
          glVertex3f(k*x2,k*y2,pDoc->dix[x+1][z+1]/hs); 
 
	       glTexCoord2f(k*x1/comp,k*y2/comp); 
             glVertex3f(k*x1,k*y2,pDoc->dix[x][z+1]/hs); 
		glEnd(); 
	}		 
    } 
  }      
    glPopMatrix(); 
} 
 
void CDem_testView::OnDestroy()  
{ 
	CView::OnDestroy(); 
	 
	// TODO: Add your message handler code here 
	 
} 
 
void CDem_testView::OnCancelMode()  
{ 
	CView::OnCancelMode(); 
	 
	// TODO: Add your message handler code here 
	 
}