游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1531|回复: 3

求助—非常菜鸟的问题,各位大侠帮下忙

[复制链接]

1

主题

1

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2006-1-4 16:45:00 | 显示全部楼层 |阅读模式
我要DIRECTDRAW加载图片,但是我只知道用全屏幕(DDSCL_FULLSCREEN)把图片显示出来,不过我想要在普通窗口里显示图片不过我把DDSCL_FULLSCREEN改成DDSCL_NORMAL,在绘图页里又通不过,有那位大侠能给我点帮助吗?最好来个例子,不胜感激。

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-7 18:13:00 | 显示全部楼层

Re:求助—非常菜鸟的问题,各位大侠帮下忙

IDDirect3DDevice下有个方法,可以实现,看一下DX9的Sample

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2006-1-8 00:20:00 | 显示全部楼层

Re:求助—非常菜鸟的问题,各位大侠帮下忙

用DDraw实现窗口相对D3D要麻烦很多.
推荐直接学D3D吧,用它实现窗口2D很容易的.
如果你决心要用DDraw,在窗口绘制时,主页面还是全屏,由于不能使用Flip,所以自己用个离屏页面来做后台缓存,在绘制时自己获取窗口矩形.这些工作是要自己做的.

11

主题

188

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2006-1-10 02:58:00 | 显示全部楼层

Re:求助—非常菜鸟的问题,各位大侠帮下忙

如果要窗口的话。。有点麻烦。。反正现在想睡觉了,就花几份钟把。。打几分钟了。
DWORD        dwStyle;
dwStyle  = GetWindowStyle(m_hWnd);
dwStyle &= ~WS_POPUP;
dwStyle |= WS_POPUP;//WS_OVERLAPPED | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_SYSMENU;

SetWindowLong(m_hWnd, GWL_STYLE, dwStyle);
//上面是创建窗口的。。

//还要创建主页面。。
Rect rcwork
Rect rcTemp
GetWindowRect(hWnd,&rcTemp);
                SetRect(&rcTemp, 0, 0, m_stDisplayInfo.wWidth, m_stDisplayInfo.wHeight);

                AdjustWindowRectEx(&rcTemp, GetWindowStyle(m_hWnd), GetMenu(m_hWnd) != NULL, GetWindowExStyle(m_hWnd));

                SetWindowPos(m_hWnd, NULL, 0, 0, rcTemp.right-rcTemp.left, rcTemp.bottom-rcTemp.top,
                                         SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);

                SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);

                SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWork, 0);
                GetWindowRect(m_hWnd, &rcTemp);
                if ( rcTemp.left < rcWork.left )                rcTemp.left = rcWork.left;
                if ( rcTemp.top  < rcWork.top )                        rcTemp.top  = rcWork.top;

                SetWindowPos(m_hWnd, NULL, rcTemp.left, rcTemp.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
   
                ddsd.dwFlags        = DDSD_CAPS;
                ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;

                if ( FAILED(hr = m_pDD->CreateSurface(&ddsd, &m_pddsFrontBuffer, NULL)) )                        return E_FAIL;

                ddsd.dwFlags        = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
                ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;

                ddsd.dwWidth    = m_stDisplayInfo.wWidth;
                ddsd.dwHeight   = m_stDisplayInfo.wHeight;

                if ( FAILED(hr = m_pDD->CreateSurface(&ddsd, &m_pddsBackBuffer, NULL)) )                        return E_FAIL;

差不多就这样,,应为时间的关系,我要睡觉了,,如果有点参数不明白,我就在这里点几个
m_stDisplayInfo。wWidth=800;
m_stDisplayInfo.Wheight=600;   其它的,是学过游戏开发的应该看得明白的了。。下线了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 05:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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