| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 781 人关注过本帖
标题:CDisplay *g_pDisplay 在类中能操作吗
只看楼主 加入收藏
daoke9999
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-5-10
收藏
 问题点数:0 回复次数:4 
CDisplay *g_pDisplay 在类中能操作吗
CDisplay *g_pDisplay 在类中能操作吗
大家好,我是新来的,希望和大家多多学习我想问一个问题,请这里的高手帮忙

我最近在学习dx8 sdk +vc6做游戏
我可以用简单的方法实现一些动画控制,如碰碰球打砖块的游戏,或者控制一个人按八个方位走动
不过我在想如何像红警那样动态的出现人(制造兵),于是我想到的建立一个类如 class CFighter
CFighter中第一一些属性,但我不太了解具体CFighter中应该有哪些操作,如行走的函数,显示各
种状态的函数,因为我在尝试的过程中发现dx drw中的CDisplay 类在整个软件中只能用一个,如果
用 extern CDisplay *g_pDisplay 在头文件中第一变量,我在CFighter::bitFighter()中操作g_pDisplay
时可以调试通过,但出现诸如“内存0xxxx0000 不能 'read'“等提示,程序退出,不知道是不是因为什么
原因
我的问题可能很幼稚,请高手帮帮忙,谢谢
搜索更多相关主题的帖子: 中能 CDisplay pDisplay 
2006-05-11 00:10
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
没玩过DriectX,贴到VC区问问吧。

http://myajax95./
2006-05-11 03:29
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
lz真是好青年,凌晨还在努力coding,不过貌似directx中没有CDisplay这个类,你是不是用的cdx库或者其它封装的directx的库?

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-11 10:56
daoke9999
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-5-10
收藏
得分:0 

可是我现在才起来

dx8 的源文件ddutil.cpp中有的
class CDisplay
{
protected:
LPDIRECTDRAW7 m_pDD;
LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer;
LPDIRECTDRAWSURFACE7 m_pddsBackBuffer;
LPDIRECTDRAWSURFACE7 m_pddsBackBufferLeft; // For stereo modes

HWND m_hWnd;
RECT m_rcWindow;
BOOL m_bWindowed;
BOOL m_bStereo;

public:
CDisplay();
~CDisplay();

// Access functions
HWND GetHWnd() { return m_hWnd; }
LPDIRECTDRAW7 GetDirectDraw() { return m_pDD; }
LPDIRECTDRAWSURFACE7 GetFrontBuffer() { return m_pddsFrontBuffer; }
LPDIRECTDRAWSURFACE7 GetBackBuffer() { return m_pddsBackBuffer; }
LPDIRECTDRAWSURFACE7 GetBackBufferLEft() { return m_pddsBackBufferLeft; }

// Status functions
BOOL IsWindowed() { return m_bWindowed; }
BOOL IsStereo() { return m_bStereo; }

// Creation/destruction methods
HRESULT CreateFullScreenDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight,
DWORD dwBPP );
HRESULT CreateWindowedDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight );
HRESULT InitClipper();
HRESULT UpdateBounds();
virtual HRESULT DestroyObjects();

// Methods to create child objects
HRESULT CreateSurface( CSurface** ppSurface, DWORD dwWidth,
DWORD dwHeight );
HRESULT CreateSurfaceFromBitmap( CSurface** ppSurface, TCHAR* strBMP,
DWORD dwDesiredWidth,
DWORD dwDesiredHeight );
HRESULT CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont,
TCHAR* strText,
COLORREF crBackground,
COLORREF crForeground );
HRESULT CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE* ppPalette, const TCHAR* strBMP );

// Display methods
HRESULT Clear( DWORD dwColor = 0L );
HRESULT ColorKeyBlt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
RECT* prc = NULL );
HRESULT Blt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
RECT* prc=NULL, DWORD dwFlags=0 );
HRESULT Blt( DWORD x, DWORD y, CSurface* pSurface, RECT* prc = NULL );
HRESULT ShowBitmap( HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette=NULL );
HRESULT SetPalette( LPDIRECTDRAWPALETTE pPalette );
HRESULT Present();
};

2006-05-11 11:16
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
这不是d8的标准库和标准头文件,应该是示例中的源代码,不知道他是怎么实现的,不过我想出现“内存0xxxx0000 不能 'read'这种问题应该是你用的问题,你可以调试一下看看到底是哪进行了错误的内存操作

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-11 13:30
快速回复:CDisplay *g_pDisplay 在类中能操作吗
数据加载中...
 
   



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

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