// Probe.h: interface for the CProbe class.
//
////////////////////////////////////////////////////////////////////// #if !defined(AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_)
#define AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 class CVisualView; class CProbe : public CObject
{
DECLARE_SERIAL(CProbe);
public:
virtual void Serialize(CArchive& ar);
void DrawProbeSelf(); CVisualView* m_pView; double ProbeX; double ProbeY; double ProbeZ;
// double BMl; double BMw; double BMh;
// double BMRX; double BMRY; double BMRZ;
// float BMCR; float BMCG; float BMCB;
// int BMeshX; int BMeshY; int BMeshZ;
// int BM_Sigma; int BM_Epsilon;
// int BMColor; CString Probe_name; CString Probe_alias; CProbe();
CProbe(double m_ProbeX, double m_ProbeY, double m_ProbeZ,
CString m_Probe_name, CString m_Probe_alias); virtual ~CProbe(); }; #endif // !defined(AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_)
// Probe.cpp: implementation of the CProbe class.
//
////////////////////////////////////////////////////////////////////// #include "stdafx.h"
#include "Visual.h"
#include "VisualDoc.h"
#include "VisualView.h"
#include "Probe.h" #ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif //////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CProbe,CObject,1) CProbe::CProbe()
{ } CProbe::CProbe(double m_ProbeX, double m_ProbeY, double m_ProbeZ,
CString m_Probe_name, CString m_Probe_alias)
{
ProbeX=m_ProbeX; ProbeY=m_ProbeY; ProbeZ=m_ProbeZ;
Probe_name=m_Probe_name; Probe_alias=m_Probe_alias; } CProbe::~CProbe()
{ } void CProbe::DrawProbeSelf()
{
glPushMatrix();
glColor3d(ProbeX,ProbeY,ProbeZ);
glTranslated(ProbeX,ProbeY,ProbeZ);
glRotated(ProbeX,1,0,0);
glRotated(ProbeY,0,1,0);
glRotated(ProbeZ,0,0,1);
m_pView->DrawCube(-ProbeX,-ProbeY,-ProbeZ);
glPopMatrix();
} void CProbe::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
{
ar < <ProbeX; ar < <ProbeY; ar < <ProbeZ;
ar < <Probe_name; ar < <Probe_alias;
}
else
{
ar>>ProbeX; ar>>ProbeY; ar>>ProbeZ;
ar>>Probe_name; ar>>Probe_alias;
}
} 上面是我自己定义的类,其中用到m_pView->DrawCube();调用视类下绘图函数,可是这个类可以使用,包括在文档中定义这个类的模板类都已经测试成功,就是视图上无法显示所绘制的图形,不知道什么原因,是不是视类指针获取问题?还是其他问题,请各位大虾支招!!!谢谢先。
//
////////////////////////////////////////////////////////////////////// #if !defined(AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_)
#define AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 class CVisualView; class CProbe : public CObject
{
DECLARE_SERIAL(CProbe);
public:
virtual void Serialize(CArchive& ar);
void DrawProbeSelf(); CVisualView* m_pView; double ProbeX; double ProbeY; double ProbeZ;
// double BMl; double BMw; double BMh;
// double BMRX; double BMRY; double BMRZ;
// float BMCR; float BMCG; float BMCB;
// int BMeshX; int BMeshY; int BMeshZ;
// int BM_Sigma; int BM_Epsilon;
// int BMColor; CString Probe_name; CString Probe_alias; CProbe();
CProbe(double m_ProbeX, double m_ProbeY, double m_ProbeZ,
CString m_Probe_name, CString m_Probe_alias); virtual ~CProbe(); }; #endif // !defined(AFX_PROBE_H__4F51F5A8_5065_495F_9FE0_9FB31F18B159__INCLUDED_)
// Probe.cpp: implementation of the CProbe class.
//
////////////////////////////////////////////////////////////////////// #include "stdafx.h"
#include "Visual.h"
#include "VisualDoc.h"
#include "VisualView.h"
#include "Probe.h" #ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif //////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CProbe,CObject,1) CProbe::CProbe()
{ } CProbe::CProbe(double m_ProbeX, double m_ProbeY, double m_ProbeZ,
CString m_Probe_name, CString m_Probe_alias)
{
ProbeX=m_ProbeX; ProbeY=m_ProbeY; ProbeZ=m_ProbeZ;
Probe_name=m_Probe_name; Probe_alias=m_Probe_alias; } CProbe::~CProbe()
{ } void CProbe::DrawProbeSelf()
{
glPushMatrix();
glColor3d(ProbeX,ProbeY,ProbeZ);
glTranslated(ProbeX,ProbeY,ProbeZ);
glRotated(ProbeX,1,0,0);
glRotated(ProbeY,0,1,0);
glRotated(ProbeZ,0,0,1);
m_pView->DrawCube(-ProbeX,-ProbeY,-ProbeZ);
glPopMatrix();
} void CProbe::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
{
ar < <ProbeX; ar < <ProbeY; ar < <ProbeZ;
ar < <Probe_name; ar < <Probe_alias;
}
else
{
ar>>ProbeX; ar>>ProbeY; ar>>ProbeZ;
ar>>Probe_name; ar>>Probe_alias;
}
} 上面是我自己定义的类,其中用到m_pView->DrawCube();调用视类下绘图函数,可是这个类可以使用,包括在文档中定义这个类的模板类都已经测试成功,就是视图上无法显示所绘制的图形,不知道什么原因,是不是视类指针获取问题?还是其他问题,请各位大虾支招!!!谢谢先。
解决方案 »
- 串口通讯问题 简单 送分
- CString 转 int 的问题,高手请进!!!
- 求助,VC6.0开发下LIST控件内容排序和保存在TXT文件问题
- 在教育网和公网之间点对点传输非常慢,大家给点建议怎么办
- 怎么从网页里往我的程序里拖图片?
- 怎样将系统读文件的操作转向读内存?
- 侥幸求高手技术大侠帮忙.【虽然这个问题比较...】
- 命名管道在WriteFile时出错,错误代码为232
- 50分代理服务器编程问题!!如何让不同子网的两台主机做TCP连接?(例如两个不同网吧的两台机子做连接)
- 我有个秘密
- 想做一个封装托盘的FLL,可是在编写的回调函数总是不理想,望VC高手指点。
- 新手求助!如何在VC中往SQL中添加数据
CMainFrame *pFrame=(CMainFrame *)AfxGetApp()->GetMainWnd();
CVisualView*pView=(CVisualView*)pFrame->GetActiveView(); 你的定义的m_pView应该是没赋值~
{
double dPoint1[]={0,-W/2,0};
double dPoint2[]={0,-W/2,-H};
double dPoint3[]={0,-W/2,-H};
double dNormal[3]; glPushMatrix(); ///////前面
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(0,-W/2,0);//1
glVertex3d(0,-W/2,-H);//3
glVertex3d(0,W/2,-H);//5
glVertex3d(0,W/2,0);//7
glEnd(); ////////后面
dPoint1[0]=-L; dPoint1[1]=-W/2; dPoint1[2]=0;
dPoint2[0]=-L; dPoint2[1]=W/2; dPoint2[2]=0;
dPoint3[0]=-L; dPoint3[1]=W/2; dPoint3[2]=-H;
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(-L,-W/2,0);//2
glVertex3d(-L,W/2,0);//8
glVertex3d(-L,W/2,-H);//6
glVertex3d(-L,-W/2,-H);//4
glEnd(); //////左面
dPoint1[0]=0; dPoint1[1]=-W/2; dPoint1[2]=0;
dPoint2[0]=-L; dPoint2[1]=-W/2; dPoint2[2]=0;
dPoint3[0]=-L; dPoint3[1]=-W/2; dPoint3[3]=-H;
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(0,-W/2,0);//1
glVertex3d(-L,-W/2,0);//2
glVertex3d(-L,-W/2,-H);//4
glVertex3d(0,-W/2,-H);//3
glEnd(); ///////右面
dPoint1[0]=0; dPoint1[1]=W/2; dPoint1[2]=-H;
dPoint2[0]=-L; dPoint2[1]=W/2; dPoint2[2]=-H;
dPoint3[0]=-L; dPoint3[1]=W/2; dPoint3[2]=0;
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(0,W/2,-H);//5
glVertex3d(-L,W/2,-H);//6
glVertex3d(-L,W/2,0);//8
glVertex3d(0,W/2,0);//7
glEnd();
///////上面
dPoint1[0]=0; dPoint1[1]=-W/2; dPoint1[2]=0;
dPoint2[0]=0; dPoint2[1]=W/2; dPoint2[2]=0;
dPoint3[0]=-L; dPoint3[1]=W/2; dPoint3[3]=0;
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(0,-W/2,0);//1
glVertex3d(0,W/2,0);//7
glVertex3d(-L,W/2,0);//8
glVertex3d(-L,-W/2,0);//2
glEnd();
////////底面
dPoint1[0]=0; dPoint1[1]=-W/2; dPoint1[2]=-H;
dPoint2[0]=-L; dPoint2[1]=-W/2; dPoint2[2]=-H;
dPoint3[0]=-L; dPoint3[1]=W/2; dPoint3[3]=-H;
ControlNormal(dPoint1,dPoint2,dPoint3,dNormal);
glBegin(GL_POLYGON);
glNormal3dv(dNormal);
glVertex3d(0,-W/2,-H);//3
glVertex3d(-L,-W/2,-H);//4
glVertex3d(-L,W/2,-H);//6
glVertex3d(0,W/2,-H);//5
glEnd(); glPopMatrix();
}
谢谢各位解答,但是问题还在,上述为DrawCube代码。已经在其他类中调用成功。可以绘制,唯独这个自己定义的类不行,很奇怪。是不是自己增加类时有问题?
还有一点问题是 我的绘制函数 忘记更新了。
OnDraw()里的问题。呵呵自己太粗心了。 Tr0j4n 的建议很好,真是高手!置顶!!!!!