哈哈~今天进展顺利
2005-02-15 20:57
429 查看
还没有做到界面的部分,不过今天的进展还是令我十分满意的。
首先我解决了全屏/窗口模式的动态切换问题。嗯..是我自己想出来的方法,没有参考,不知道跟gp的是否一样。不过我想原理大概都差不多吧。实现了动态切换是十分好玩的一件事
![](http://blog.csdn.net/Emoticons/regular_smile.gif)
。
其次,新加了一个CSurface类要来包装ddsurface,这样管理起来方便多了,而且这是十分重要的一个部分,以后都很难会直接用到ddsurface了。这个类包括了动画,建立点击测试区,位图文件的绑定(这样就能解决页面丢失时恢复重新载入位图数据的问题了),还有把原先CGraph的LoadBitmap等几个在ddutil的函数都移了过去CSurface。以后还会增加对Surface的garma调整等等函数。源码帖得够多了这次只把头文件弄出来,刚刚几本搞好这个类的大体结构。
备注一下:窗口管理还要一个拖放源/目标的变量。
#pragma once
#pragma comment(lib,"ddraw.lib")
#pragma comment(lib,"winmm.lib")
#include "mmsystem.h"
#include <stdio.h>
#include "./global.h"
class CSurface
{
public:
CSurface(void);
~CSurface(void);
protected:
// 返回rgb与调色板上颜色相近的颜色调色板索引
DWORD ColorMatch(IDirectDrawSurface * pdds, COLORREF rgb);
// 把hbm位图Copy到目标Surface
HRESULT CopyBitmap(IDirectDrawSurface * pdds, HBITMAP hbm, int x, int y, int dx, int dy);
public:
IDirectDrawSurface * GetSurface(void);
// 恢复页面
bool Restore(void);
// 返回当前BltRect
LPRECT GetBltRect(void);
// 设置Surface的关键色
HRESULT CSurface::SetColorKey(COLORREF rgb);
// 加载一个Bitmap到页面(与LoadBitmap不同的是,这个函数不会创建Surface)
bool ReloadBitmap();
// 创建一个离屏Surface,并加载bmp图片到页面
bool LoadBitmap(LPCSTR szBitmap);
protected:
// 用于定位当前帧所在区域
RECT m_BltRect;
// 相关联的Surface
LPDIRECTDRAWSURFACE lpDDS;
// 是否动画页面
bool m_IsAnimate;
// 动画栅格当前行
int m_nRow;
// 动画栅格当前列
int m_nCol;
// 页面宽度
int m_nSurfWidth;
// 页面高度
int m_nSurfHeight;
// 动画页每帧宽度
int m_nFrameWidth;
// 动画页每帧高度
int m_nFrameHeight;
// 是否建立规则点击测试区(CreateRange Function Save, use for InRange Function)
char m_szFile[256];
bool m_bRegular;
// 动画速度,这里是延时,单位毫秒.
int m_nFrameRate;
public:
// 设置页面为动画页
void SetAnimate(int FrameWidth, int FrameHeight, int FrameRate);
// 调整动画帧速,如果还没设置动画参数则返回false
bool AdjustFrameRate(int NewFrameRate);
};
首先我解决了全屏/窗口模式的动态切换问题。嗯..是我自己想出来的方法,没有参考,不知道跟gp的是否一样。不过我想原理大概都差不多吧。实现了动态切换是十分好玩的一件事
![](http://blog.csdn.net/Emoticons/regular_smile.gif)
。
其次,新加了一个CSurface类要来包装ddsurface,这样管理起来方便多了,而且这是十分重要的一个部分,以后都很难会直接用到ddsurface了。这个类包括了动画,建立点击测试区,位图文件的绑定(这样就能解决页面丢失时恢复重新载入位图数据的问题了),还有把原先CGraph的LoadBitmap等几个在ddutil的函数都移了过去CSurface。以后还会增加对Surface的garma调整等等函数。源码帖得够多了这次只把头文件弄出来,刚刚几本搞好这个类的大体结构。
备注一下:窗口管理还要一个拖放源/目标的变量。
#pragma once
#pragma comment(lib,"ddraw.lib")
#pragma comment(lib,"winmm.lib")
#include "mmsystem.h"
#include <stdio.h>
#include "./global.h"
class CSurface
{
public:
CSurface(void);
~CSurface(void);
protected:
// 返回rgb与调色板上颜色相近的颜色调色板索引
DWORD ColorMatch(IDirectDrawSurface * pdds, COLORREF rgb);
// 把hbm位图Copy到目标Surface
HRESULT CopyBitmap(IDirectDrawSurface * pdds, HBITMAP hbm, int x, int y, int dx, int dy);
public:
IDirectDrawSurface * GetSurface(void);
// 恢复页面
bool Restore(void);
// 返回当前BltRect
LPRECT GetBltRect(void);
// 设置Surface的关键色
HRESULT CSurface::SetColorKey(COLORREF rgb);
// 加载一个Bitmap到页面(与LoadBitmap不同的是,这个函数不会创建Surface)
bool ReloadBitmap();
// 创建一个离屏Surface,并加载bmp图片到页面
bool LoadBitmap(LPCSTR szBitmap);
protected:
// 用于定位当前帧所在区域
RECT m_BltRect;
// 相关联的Surface
LPDIRECTDRAWSURFACE lpDDS;
// 是否动画页面
bool m_IsAnimate;
// 动画栅格当前行
int m_nRow;
// 动画栅格当前列
int m_nCol;
// 页面宽度
int m_nSurfWidth;
// 页面高度
int m_nSurfHeight;
// 动画页每帧宽度
int m_nFrameWidth;
// 动画页每帧高度
int m_nFrameHeight;
// 是否建立规则点击测试区(CreateRange Function Save, use for InRange Function)
char m_szFile[256];
bool m_bRegular;
// 动画速度,这里是延时,单位毫秒.
int m_nFrameRate;
public:
// 设置页面为动画页
void SetAnimate(int FrameWidth, int FrameHeight, int FrameRate);
// 调整动画帧速,如果还没设置动画参数则返回false
bool AdjustFrameRate(int NewFrameRate);
};
相关文章推荐
- 哈哈,有进展了!!!
- 我的第一篇博客,今天胜利发表,哈哈
- 今天是端午节,工作有进展了
- 浏览器兼容问题,一直是自己最头疼,一直回避的问题,今天看得到了一些启发,发奋今天开始研究这个,哈哈,以下为转载文章,好好学习。
- 数据结构 算法改进 do....while的妙用 今天才体会到 哈哈 分享下
- 哈哈,今天小小升级了一下~
- 今天和同事去欢乐谷玩,O(∩_∩)O哈哈~
- 哈哈哈!今天终于见到CSDN能用正常速度访问而不出错了!太反常了!
- 今天的毕业设计进程,还算顺利
- 今天第一天工作,哈哈,明天就要考试~~晕死~~
- 今天发现了电驴上面居然有吉日嘎拉的视频,哈哈!
- 今天的进展
- 浙江丽水:缙云县农民专业合作社创新试点工作进展顺利
- 今天天气哈哈哈
- 今天写了一个通过switch进行添加,修过,显示,删除程序,发上来大家看看,哈哈,并且用了smarty模版
- 今天周一再到北京南站,吸取教训顺利到达积水潭
- 哈哈哈,LR自动参数化的问题终于有进展了!
- 12-2 今天论文进展 1. 算法传递的过程考虑解决了 用c浅lone 2.手机上实现了 和 几个点的检测算法
- 12-3今天论文进展总结
- 程序员进阶路上不能错过的史上最全技术知识图谱秘籍 #精选大数据前端开发JAVA 今天在技术大海中游啊游游啊游,哇啊哈哈 ^_^发现了一份非常有用的超级技术图谱诶!