游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2258|回复: 7

DDraw初始化过程出错的原因

[复制链接]

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2004-8-9 19:00:00 | 显示全部楼层 |阅读模式
ddraw初始化过程出错可能是什么原因?
编译通过。运行时报错!
请大侠指点 [em1]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-8-9 19:20:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

说说出什么错误提示吧,不然别人无法帮你分析。

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
 楼主| 发表于 2004-8-9 19:53:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
        MSG msg;

        //初始化窗口
        hWnd = InitWindow(hInstance,nShowCmd);
        if( hWnd = NULL )
                return FALSE;

        //初始化directdraw
        if(InitDDraw() == FALSE )
        {
                MessageBox(GetActiveWindow(),"初始化DirectDraw过程中出错!","错误",MB_OK);
                FreeDDraw();
                return FALSE;
        }

        while(1)
        {
                if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }


        return (msg.wParam );
}
-------------------------------------------------------------------------------------------

//初始化directdraw函数
BOOL InitDDraw()
{
        DWORD dwFlags;
        DDSURFACEDESC ddsd;
        HRESULT ddrval = DD_OK;

        DirectDrawCreate(NULL,&lpdd,NULL);

        dwFlags = DDSCL_NORMAL;
        lpdd->SetCooperativeLevel (hWnd,dwFlags);
        //lpdd->SetDisplayMode (640,480,16);

        //创建主页面
        ZeroMemory(&ddsd,sizeof(ddsd));
        ddsd.dwSize = sizeof(ddsd);
        ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
        //ddsd.dwHeight = ;
        //ddsd.dwWidth = 480;
        ddsd.dwBackBufferCount = 1;
        ddsd.ddsCaps .dwCaps = DDSCAPS_PRIMARYSURFACE;
        ddrval = lpdd->CreateSurface (&ddsd,&lpDDPrimary,NULL);
        if( ddrval != DD_OK )
                return FALSE;
……………………
                    ……………………………………………………………………
程序编译没有错误,运行时就出我程序中指定的message box 报告错误。
谢谢了

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
 楼主| 发表于 2004-8-9 19:58:00 | 显示全部楼层

Re: DDraw初始化过程出错的原因

程序运行时
sf_200489195839.bmp

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-8-9 20:19:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

可能你的ddsd结构里面参数错了。

11

主题

44

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2004-8-9 20:36:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

有backbuffer  用到flip的话primarysurface的descrption需要DDCAPS_FLIP|DDCAPS_COMPLEX
dd函数返回hresult 可以通过这些进行错误信息的判断 至少可以明确那一行调用的时候出错

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
 楼主| 发表于 2004-8-9 23:44:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

恩,正是whatlf说的原因,用normal的协作等级就不用backbuffer

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2004-8-17 21:21:00 | 显示全部楼层

Re:DDraw初始化过程出错的原因

我不会ddraw,你可以问我们队(6元七队)的张欣,他比较熟。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-17 08:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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