游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2700|回复: 5

请问:directdrawsurface 的 Blt 函数的问题

[复制链接]

1

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2007-9-3 14:16:00 | 显示全部楼层 |阅读模式
IDirectDrawSurface7* srcSurf     //这个是系统的显存

现在想改变系统的显示,也就是想修改这个srcsurf,于是我想用blt将另外的复制它上面。

DDSURFACEDESC2 ddsdesc2;
ZeroMemory(&ddsdesc2, sizeof(ddsdesc2));
ddsdesc2.dwSize = sizeof(ddsdesc2);
ddsdesc2.dwFlags = DDSD_CAPS  ¦ DDSD_HEIGHT  ¦ DDSD_WIDTH  ¦ DDSD_PIXELFORMAT;
ddsdesc2.dwWidth =GetSystemMetrics(SM_CXSCREEN);
ddsdesc2.dwHeight =GetSystemMetrics(SM_CYSCREEN);
ddsdesc2.ddpfPixelFormat = g_ddFormat;

g_pDD7- >CreateSurface( &ddsdesc2, &g_tempSurf0, NULL); //创建了另外一个surface
/*
*得到了g_tempSurf0的内容
*/

然后想用blt复制:
if (FAILED(hr=srcSurf- >Blt(NULL,g_tempSurf0,NULL,DDBLT_WAIT, NULL))) {
TRACE("srcsurf..........................errror.%x",hr);
return hr;
}
总是出错。

问题:
1、为什么会出错??

2、而且返回的错误的代号hr是一个数值,但是msdn上的提示的错误返回是一些宏定义:
DDERR_GENERIC   
DDERR_INVALIDCLIPLIST   
DDERR_INVALIDOBJECT   
DDERR_INVALIDPARAMS   
DDERR_INVALIDRECT   
DDERR_NOALPHAHW   
DDERR_NOBLTHW   
DDERR_NOCLIPLIST   
DDERR_NODDROPSHW   
DDERR_NOMIRRORHW   
DDERR_NORASTEROPHW   
DDERR_NOROTATIONHW   
DDERR_NOSTRETCHHW   
DDERR_NOZBUFFERHW   
DDERR_SURFACEBUSY   
DDERR_SURFACELOST   
DDERR_UNSUPPORTED   
DDERR_WASSTILLDRAWING  

但是我并不知道这些字符串是对应哪个返回的错误的数值的,
我怎么通过这个返回的错误代号的数值对应上是哪个错误???
谢谢!~

33

主题

101

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2007-9-3 16:25:00 | 显示全部楼层

Re:请问:directdrawsurface 的 Blt 函数的问题

你的srcSurf是不是没初始化

1

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2007-9-3 19:12:00 | 显示全部楼层

Re:请问:directdrawsurface 的 Blt 函数的问题

已经初始化了,srcSurf是已经获得的系统的显存的内容。上面的代码只是为了简单说明。

1

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2007-9-4 13:25:00 | 显示全部楼层

Re:请问:directdrawsurface 的 Blt 函数的问题

up

1

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2007-9-4 21:58:00 | 显示全部楼层

Re:请问:directdrawsurface 的 Blt 函数的问题

up

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2007-9-5 12:18:00 | 显示全部楼层

Re:请问:directdrawsurface 的 Blt 函数的问题

ddsdesc2.ddsCaps.dwCaps没有设置!
检查这个返回值:
g_pDD7- >CreateSurface( &ddsdesc2, &g_tempSurf0, NULL);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-18 21:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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