标题:如何在vc6中创建CObject的派生类
只看楼主
hzyzxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:168
注 册:2009-6-14
结帖率:66.67%
已结贴  问题点数:20 回复次数:3 
如何在vc6中创建CObject的派生类
如何在vc6中创建CObject的派生类
请问如何在vc6中派生Cobjec的类。
刚才用MFC向导生成了一个多文档程序。然后工程中创建了Stroke.h和Stroke.cpp文件,以创建CStroke(继承CObject),可发现编译Stroke.cpp时一直错误。还望高手指点。
Stroke.h文件内容如下:
程序代码:
#ifndef CSTROKE_H
#define CSTROKE_H
#include "StdAfx.h"
class CStroke:public CObject
{
public:

 CStroke(UINT nPenWidth);
protected:

 CStroke();

 DECLARE_SERIAL(CStroke)
//成员变量
protected:

 UINT m_nPenWidth;
public:

 CArray<CPoint,CPoint> m_pointArray;
//操作
public:

 BOOL DrawStroke(CDC* pDC);

 virtual void Serialize(CArchive& ar);
};
#endif
Stroke.cpp内容如下:
程序代码:
#include "Stroke.h"
IMPLENT_SERIAL(CStroke,CObject,1)
CStroke::CStroke()
{
}
CStroke::CStroke(UINT nPenWidth)
{

 m_nPenWidth=nPenWidth;
}
BOOL CStroke::DrawStroke(CDC* pDC)
{

 CPen penStroke;

 if(!penStroke.CreatePen(PS_SOLID,m_nPenWidth,RGB(0,0,0))
  return FALSE;

 CPen* pOldPen=pDC->SelectObject(&penStroke);

 pDC->MoveTo(m_pointArray[0]);

 for(int i=0;i<m_pointArray.GetSize();i++)

 {
  pDC->LineTo(m_pointArray[i]);

 }

 pDC->SelectObject(pOldPen);

 return TRUE;
}
void CStroke::Serialize(CArchive &ar)
{

 if(ar.IsStoring)

 {
  ar<<(WORD)m_nPenWidth;

 }

 else

 {
  WORD v;
  ar>>v;
  m_nPenWidth=v;

 }

 m_pointArray.Serialize(ar);
}
编译时一直提示错误:unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
郁闷啊!
搜索更多相关主题的帖子: CObject 派生类 
2010-04-19 22:16
wylzjcw
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:185
专家分:174
注 册:2009-1-4
得分:10 
先生成解决方案

勾股定理用相似三角形证明最合理
2010-04-19 23:41
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:10 
检查下vc6的路径配置。。path路径。
2010-04-20 09:30
hzyzxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:168
注 册:2009-6-14
得分:0 
vc6里面没解决方案之说。
路径没错。
费了一个小时改对了。把正确的发在这里(主要是用 CArray还需要头文件,还有就是在cpp文件要包含stdafx.h)。
希望大家以后遇到同样的问题有个参考吧。
不过分还是给大家散了吧。
这个是头文件Stroke.h
程序代码:
#ifndef CSTROKE_H
#define CSTROKE_H
//#include "stdafx.h"

class CStroke:public CObject
{
public:

 CStroke(UINT nPenWidth);
protected:

 CStroke();

 DECLARE_SERIAL(CStroke)
//成员变量
protected:

 UINT m_nPenWidth;
public:

 CArray<CPoint,CPoint&> m_pointArray;
//操作
public:

 BOOL DrawStroke(CDC* pDC);

 virtual void Serialize(CArchive &);
};
#endif
这个是cpp文件
程序代码:
#include "stdafx.h"
#include <afxtempl.h>
#include "Stroke.h"
IMPLEMENT_SERIAL(CStroke,CObject,1)
CStroke::CStroke()
{
}
CStroke::CStroke(UINT nPenWidth)
{

 m_nPenWidth=nPenWidth;
}
BOOL CStroke::DrawStroke(CDC* pDC)
{

 CPen penStroke;

 if(!penStroke.CreatePen(PS_SOLID,m_nPenWidth,RGB(0,0,0)))
  return FALSE;

 CPen* pOldPen=pDC->SelectObject(&penStroke);

 pDC->MoveTo(m_pointArray[0]);

 for(int i=0;i<m_pointArray.GetSize();i++)

 {
  pDC->LineTo(m_pointArray[i]);

 }

 pDC->SelectObject(pOldPen);

 return TRUE;
}
void CStroke::Serialize(CArchive &ar)
{

 if(ar.IsStoring())

 {
  ar<<(WORD)m_nPenWidth;

 }

 else

 {
  WORD v;
  ar>>v;
  m_nPenWidth=v;

 }

 m_pointArray.Serialize(ar);
}

2010-04-20 22:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-303666-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.785741 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved