游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3355|回复: 4

MFC + DirectDraw

[复制链接]

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2010-6-19 10:09:00 | 显示全部楼层 |阅读模式
好像MFC做游戏真的很不受欢迎哦,我一直都找不到MFC结合DX做游戏的资料。
各位好心人,如果你知道相关资料,可否告诉我呢,感激不尽哦。不要D3D的,我想搞2D的。最好是MFC单文档和DirectDraw的,没有的话,MFC对话框+DDraw也可以。多谢多谢。。。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2010-6-19 10:44:00 | 显示全部楼层

Re:MFC + DirectDraw

假设ddraw画面绘制在控件A中,那么取得A的hwnd然后设置剪裁区。参考我的代码:
// Create a clipper for the primary surface
                if(FAILED( hr = m_pddraw->CreateClipper(0,&m_pClipper,null) )) throw new C2DErr(C2DErr:X_ERR,hr);

                if(FAILED( hr = m_pClipper->SetHWnd(0,m_hWnd) )) throw new C2DErr(C2DErr::DX_ERR,hr);

                if(FAILED( hr = pprim->SetClipper(m_pClipper) )) throw new C2DErr(C2DErr::DX_ERR,hr);

绘制的时候,需要用Blt而不是BltFast,还有就是,要把图像绘制到前台表面的对应于你那个hwnd的坐标的位置上:
RECT rc;
                ::GetClientRect(m_hWnd,&rc);
                POINT tmp={0,0};
                ::ClientToScreen(m_hWnd,&tmp);
                RECT rcDest = { tmp.x, tmp.y, tmp.x+rc.right-rc.left, tmp.y+rc.bottom-rc.top };
                RECT rcSrc  = { 0, 0, m_pBackBuf->GetW(), m_pBackBuf->GetH() };
                if(FAILED( hr = m_pPrimarySurf->m_pdds->Blt( &rcDest, m_pBackBuf->m_pdds, &rcSrc, 0|DDBLT_WAIT, null ) ))
                        throw new C2DErr(C2DErr::DX_ERR,hr);

16

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2010-6-19 10:58:00 | 显示全部楼层

Re: MFC + DirectDraw

多谢你的回答。
记得以前我看过DX7的SDK,里面好像有MFC+DDraw的例程,现在想重新找找DX7 SDK都找不到了,不知道谁有下载地址。

0

主题

28

帖子

33

积分

注册会员

Rank: 2

积分
33
QQ
发表于 2010-6-19 22:52:00 | 显示全部楼层

Re:MFC + DirectDraw

http://file.mydrivers.com/others/dx7sdk-7001.exe

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-6-11 09:53:00 | 显示全部楼层

Re:MFC + DirectDraw

楼主,DirectDraw里面没有MFC的例子啊,我现在碰到很你一样的问题了,在MFC的picture控件上显示yuv overlay 显示视频,发现拖动时图像会晃动,还有就是overlay一直在最上层,任何页面都不能覆盖它,好像picture控件和overlay表面是分开的一样,拖动一个东西到overlay表面时,发现它在overlay表面和picture控件之间。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-7 22:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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