游戏开发论坛

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

[讨论] 十万火急!!!

[复制链接]

16

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
发表于 2003-8-5 10:20:00 | 显示全部楼层 |阅读模式
我在加载位图的时候遇到了困难。参考的 sea_bug 翻译的〈载入位图文件到 DirectDraw〉源代码如下:
IDirectDraw2 *lpdd ;
LPDIRECTDRAWSURFACE7 lpddsTest;
void CreateSurface(LPDIRECTDRAWSURFACE7 *lpSource, int xs, int ys)
{
        DDSURFACEDESC2 ddsd;

        ZeroMemory(&ddsd, sizeof(ddsd));
        ddsd.dwSize = sizeof(ddsd);
        ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
        ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
        ddsd.dwWidth = xs;
        ddsd.dwHeight = ys;
        lpdd->CreateSurface(&ddsd, lpSource, NULL);
}
void DrawHBitmap(IDirectDrawSurface7 *lpSurface, HBITMAP hBitmap, int x, int y, int width, int height)
{
        HDC hdcImage;
        HDC hdc;
        BITMAP bm;

        if (lpSurface == NULL || hBitmap == NULL)
                return;
        lpSurface->Restore();

        hdcImage = CreateCompatibleDC(NULL);
        SelectObject(hdcImage, hBitmap);

        GetObject(hBitmap, sizeof(bm), &bm);
        width = width == 0 ? bm.bmWidth : width;
        height = height == 0 ? bm.bmHeight : height;

        lpSurface->GetDC(&hdc);
        BitBlt(hdc, x, y, width, height, hdcImage, 0, 0, SRCCOPY);
        lpSurface->ReleaseDC(hdc);
        DeleteDC(hdcImage);
}
void CreateBitmapSurface(LPDIRECTDRAWSURFACE7 lpSurface, char *fname, int xs, int ys)
{
        HBITMAP hBitmap;

        CreateSurface(&lpSurface, xs, ys);
        hBitmap = LoadImage(NULL, fname, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        DrawHBitmap(lpSurface, hBitmap, 0, 0, xs, ys);
        DeleteObject(hBitmap);
}

16

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
 楼主| 发表于 2003-8-5 10:21:00 | 显示全部楼层

Re:十万火急!!!

错误提示为:
error C2664: 'CreateSurface' : cannot convert parameter 1 from 'struct _DDSURFACEDESC2 *' to 'struct _DDSURFACEDESC *'

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2003-8-5 12:02:00 | 显示全部楼层

Re:十万火急!!!

将IDirectDraw2 *lpdd ;改为IDirectDraw7 *lpdd ;

16

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
 楼主| 发表于 2003-8-5 18:04:00 | 显示全部楼层

Re:十万火急!!!

谢谢

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20456
发表于 2003-8-5 19:52:00 | 显示全部楼层

Re:十万火急!!!

程序帖请发在程序版区里。谢谢合作!

0

主题

14

帖子

26

积分

注册会员

Rank: 2

积分
26
QQ
发表于 2003-8-12 01:21:00 | 显示全部楼层

Re:十万火急!!!

这个BBS,版主没有转贴功能吗?
晕ING
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-5 22:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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