游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1585|回复: 2

如何获取页面的指针?

[复制链接]

9

主题

22

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2004-4-8 17:53:00 | 显示全部楼层 |阅读模式
我在游戏中创建了一个备用页面,请问如何获得备用页面的指针,好让我直接访问备用页面里的像素。用blt函数无法更改备用页面理像素的值啊。

0

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2004-4-8 20:38:00 | 显示全部楼层

Re:如何获取页面的指针?

//锁定一个表面的一个区域
BOOL  g_Lock(IDirectDrawSurface *pdds)
{
        DDSURFACEDESC  ddsd;
        HRESULT        hret;
       
        ddsd.dwSize =sizeof(ddsd);
        while(1)
        {
                hret=pdds->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL);
                if(hret==DD_OK)
                        break;
                else if(hret==DDERR_SURFACELOST)
                {
                        hret=g_RestoreDDraw();
                        if(hret!=DD_OK)
                                return FALSE;
                }
        }  
        g_GraphBuffer =(WORD *)ddsd.lpSurface;(表面指针)
        g_GraphWidth  =ddsd.dwWidth;
        g_GraphHeight =ddsd.dwHeight;
        g_GraphPitch  =ddsd.lPitch>>1;  //lPitch 以Byte为单位
        //GraphPitch以WORD为单位
        return TRUE;
}
//解锁
BOOL g_Unlock(IDirectDrawSurface *pdds)
{
        HRESULT    hret;
        hret=pdds->Unlock(NULL);
        if(hret==DD_OK)
                return TRUE;
        return FALSE;
}

你每次调用g_Lock()来锁定一个表面时,在退出这个函数后,你必须得解锁g_Unlock()//切记!

9

主题

22

帖子

40

积分

注册会员

Rank: 2

积分
40
 楼主| 发表于 2004-4-9 10:33:00 | 显示全部楼层

Re: Re:如何获取页面的指针?

收到了,万分感谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-16 16:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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