标题:用MFC做一个膨胀的椭圆时出现了错误
只看楼主
wei0000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:136
注 册:2010-3-12
结帖率:91.67%
已结贴  问题点数:5 回复次数:3 
用MFC做一个膨胀的椭圆时出现了错误
在用MFC写一个膨胀的椭圆的绘图程序时,出现了一个致命的错误,错误如下用红字标示的地方
#include<afxwin.h>
#include<afxext.h>

#define SeedRand() srand(UINT)::GetTickCount()

class CMyApp:public CWinApp{
    public:
        virtual BOOL InitInstance();
};

class CMainWnd:public CFrameWnd{
    protected:
        int  m_nCurScreen;
        CPoint rec_E;
        int R_rec;
        int L_rec;
        COLORREF GetRandomColor();
        UINT MapRand(UINT nMax);
        void Growing_Ellipse(CClientDC *pDC);
    public:
        CMainWnd();
        afx_msg void OnTimer(UINT IDtimer);
        DECLARE_MESSAGE_MAP();
};

#include "CDCDEMO.h"  //在这一行出现了错误,说是运行时出现了致命的错误,说这个库函数找不到,请问这个库文件是原来就有的还是要自己定义??再请问这个库函数包含些什么样的函数???请高手们指教啊!!!!
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
    ON_WM_TIMER()
END_MESSAGE_MAP()

CMainWnd::CMainWnd(){
    rec_E.x=320;
    rec_E.y=480;
    R_rec=30;
    L_rec=10;
    SeedRand();
}

COLORREF CMainWnd::GetRandomColor(){
    return RGB(MapRand(255),MapRand(255),MapRand(255));
}

UINT CMainWnd::MapRand(UINT nMax){
    int nRand=rand();
    float fMap=(float)nMax/RAND_MAX;
    float fRetVal=(float)nRand*fMap+0.5F;
    return (UINT)fRetVal;
}

void CMainWnd::OnTimer(UINT IDtimer){
    CClientDC dc(this);
    Growing_Ellipse(&dc);
}

void CMainWnd::Growing_Ellipse(CClientDC *pDC){
    CBrush ColorBrush(GetRandomColor());
    pDC->SelectObject(&ColorBrush);
    pDC->Ellipse(rec_E.x-R_rec,rec_E.y-R_rec*480/640,
        rec_E.x+R_rec,rec_E.y+R_rec*480/640);
    R_rec=R_rec+C_rec;
    if(rec_E-R_rec<=10||rec_E-R_rec>=300) C_rec-=C_rec;
}

BOOL CMyApp::InitInstance(){
    CMainWnd *pFrame=new CMainWnd;
    pFrame->Create(0,"Graphics Demo",WS_POPUPWINDOW|WS_DLGFRAME,CRect(0,0,640,480));
    this->m_pMainWnd=pFrame;
    pFrame->ShowWindow(m_nCmdShow);
    pFrame->UpdateWindow();
    pFrame->SetTimer(0,50,NULL);
    return TRUE;
}

CMyApp MyApp;
搜索更多相关主题的帖子: 椭圆 MFC 
2010-03-13 21:23
tonywolley
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:2
专家分:13
注 册:2010-3-13
得分:3 
#include<**>一般用在应用系统中(即common files中)的库文件,比如iostream,cmath等。而#include“**”则是用在调用作者自己编写的头文件上。像LZ这样的情形,应该是使用自定义的头文件时出现了问题,CDCDEMO.h也是系统中搜索不到的文件。当然需要自己定义一下。至于里面有什么,只有LZ自己去编写了。
新人言论,望大侠们为我查漏补缺!!
2010-03-13 23:17
wei0000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:136
注 册:2010-3-12
得分:0 
谢谢楼上的指教啊,但我希望高手们能告诉我头文件"CDCDEMO.h"中应该定义些什么???
急啊,谢谢了啊!
2010-03-14 11:06
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
得分:0 
#include<afxwin.h>
#include<afxext.h>

#define SeedRand() srand(UINT)::GetTickCount()

class CMyApp:public CWinApp{
    public:
        virtual BOOL InitInstance();
};

class CMainWnd:public CFrameWnd{
    protected:
        int  m_nCurScreen;
        CPoint rec_E;
        int R_rec;
        int L_rec;
        COLORREF GetRandomColor();
        UINT MapRand(UINT nMax);
        void Growing_Ellipse(CClientDC *pDC);
    public:
        CMainWnd();
        afx_msg void OnTimer(UINT IDtimer);
        DECLARE_MESSAGE_MAP();
};

这不就是定义吗,你代码不是自己写的?
2010-03-16 14:34



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




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

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