找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1903|回复: 4

CDisplay *g_pDisplay 在类中能操作吗

[复制链接]
发表于 2009-11-3 01:52:17 | 显示全部楼层 |阅读模式 IP:江苏扬州
CDisplay *g_pDisplay 在类中能操作吗
大家好,我是新来的,希望和大家多多学习我想问一个问题,请这里的高手帮忙

我最近在学习dx8 sdk +vc6做游戏
我可以用简单的方法实现一些动画控制,如碰碰球打砖块的游戏,或者控制一个人按八个方位走动
不过我在想如何像红警那样动态的出现人(制造兵),于是我想到的建立一个类如 class CFighter
CFighter中第一一些属性,但我不太了解具体CFighter中应该有哪些操作,如行走的函数,显示各
种状态的函数,因为我在尝试的过程中发现dx drw中的CDisplay 类在整个软件中只能用一个,如果
用 extern CDisplay *g_pDisplay 在头文件中第一变量,我在CFighter::bitFighter()中操作g_pDisplay
时可以调试通过,但出现诸如“内存0xxxx0000 不能 'read'“等提示,程序退出,不知道是不是因为什么
原因
我的问题可能很幼稚,请高手帮帮忙,谢谢
发表于 2009-11-3 01:52:18 | 显示全部楼层 IP:江苏扬州
没玩过DriectX,贴到VC区问问吧。
回复

使用道具 举报

发表于 2009-11-3 01:52:19 | 显示全部楼层 IP:江苏扬州
lz真是好青年,凌晨还在努力coding,不过貌似directx中没有CDisplay这个类,你是不是用的cdx库或者其它封装的directx的库?
回复

使用道具 举报

发表于 2009-11-3 01:52:20 | 显示全部楼层 IP:江苏扬州
可是我现在才起来

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();
};
回复

使用道具 举报

发表于 2009-11-3 01:52:22 | 显示全部楼层 IP:江苏扬州
这不是d8的标准库和标准头文件,应该是示例中的源代码,不知道他是怎么实现的,不过我想出现“内存0xxxx0000 不能 'read'这种问题应该是你用的问题,你可以调试一下看看到底是哪进行了错误的内存操作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 07:29 , Processed in 0.192756 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表