游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4829|回复: 15

求助, 关于IDirectDrawSurface7::Lock()的问题

[复制链接]

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2006-9-30 10:22:00 | 显示全部楼层 |阅读模式
我写的一个程序, 平常运行时正常, 并没异常, 现在发现, 当程序的实例开了两个以后, 再开第三个时, LOCK会出现异常, 出现提示框" 程序遇到问题需要关闭 ...", 及" 该内存不能READ " 之类的, 请问哪位朋友知道如何解决, 多谢啊.

30

主题

227

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2006-9-30 13:07:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

关注。。。

《windows游戏编程大师技巧》中有相关的描述,LOCK的作用是告诉DDraw你已经控制内存了,所以内存不能被其他进程访问到。可能是两个进程之间出现内存访问冲突,这只是我的理解。

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-9-30 13:11:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

有可能, 但是我开的是不同的进程啊, 而且每次都是在同一句上出现问题.
希望有朋友能解答一下啊.

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-9-30 17:26:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

高人们帮帮忙啊!!!

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-10-3 10:02:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

我顶, 我顶, 等人解答!

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-10-6 10:00:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

唉....没人解答吗?.....

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-10-6 21:55:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

好惨啊。。。自己的贴子只有自己顶。。。。

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-10-7 18:55:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

奇怪。。。把程序发上来看看

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-10-8 09:57:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

终于有人了啊...出问题的部分如下:
                       
DDSURFACEDESC2 ddsd1;
                        RECT rect = {0, 0, width, height};
                        ZeroMemory( &ddsd1, sizeof( DDSURFACEDESC2 ) );
                        ddsd1.dwSize = sizeof( DDSURFACEDESC2 );
出问题时断在这里:                lpDDS->Lock( &rect, &ddsd1, DDLOCK_WAIT, NULL);
                        BYTE* pSur1 = (BYTE*)ddsd1.lpSurface;

                        pSur1 = pSur1 + rickImage.height*ddsd1.lPitch - ddsd1.lPitch;
                        int wid = 4*width;
                        for( int i = 0; i < rickImage.height; i++ )
                        {
                                memcpy( pSur1, buffer+i*wid, wid);
                                pSur1 -= ddsd1.lPitch;
                        }

                        lpDDS->Unlock(NULL);

和申明的LPDIRECTDRAWSURFACE7的对像的个数有没关系? 我用了大概二十几个...

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2006-10-8 10:23:00 | 显示全部楼层

Re:求助, 关于IDirectDrawSurface7::Lock()的问题

弹出的出错框显示是 访问冲突.   在有些笔记本上运行时是第一次启动都启动不了, 相同的错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 14:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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