永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

游戏渲染窗口下实现内嵌网页

现在游戏的UI五花八门,什么需求都有,特别是涉及到充值那块,对内嵌网页要求就更多。
那么怎么实现一个UI里的内嵌网页呢?这个网页还要跟着这个UI移动。

关于内嵌网页,网上已经有不少介绍,就是利用CAxWindow,在这里我就不多介绍了,大家可以百度一下这个控件。

如果要在游戏UI中显示网页,那把CAxWindow作为游戏主窗口的子窗口(WM_CHILD)创建并设置到相应的位置即可。
至于它要跟着游戏UI移动,这些也是消息响应的问题,在这里也不多说了。

最关键的是,这个窗口要不被游戏内容挡着,又不占整个屏幕,那要如何弄呢?
其实答案很简单,但要对win32比较熟悉,只需要把windowstyle设置成WS_CLIPCHILDREN就可以了。

我的做法是:一但开启这种窗口
执行:
LONG dwWindowStyle = ::GetWindowLong(主窗口);
dwWindowStyle |= WS_CLIPCHILDREN;
::SetWindowLongW(主窗口, GWL_STYLE, dwWindowStyle);

这样可以保持原来窗口样式不变。

但网页内嵌到游戏UI有个缺点:就是这种UI一定要排在最前面,因为显示网页的窗口是不会被其他东西挡着的。

补充:遇到一个非常奇怪的问题,在release版本下,当内嵌网页窗口拖动的时候,网页有部分像素没被刷新,但debug却一点问题也没有。
这个问题到现在还没查出具体原因。解决方法如下:
在这个窗口的拖动过程中添加如下函数,
::RedrawWindow(m_hWnd, NULL, NULL, RDW_INVALIDATE| RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN); m_hWnd是CAxWindow的窗口句柄。

posted on 2013-01-24 19:22 狂烂球 阅读(3668) 评论(5)  编辑 收藏 引用 所属分类: Windows编程

评论

# re: 游戏渲染窗口下实现内嵌网页 2013-01-26 00:59 Lo

有没有介绍的链接?一直找不到  回复  更多评论   

# re: 游戏渲染窗口下实现内嵌网页 2013-01-26 21:28 魔鬼螳螂

@Lo
http://peipengshuai.blog.163.com/blog/static/19012266201223034518902/  回复  更多评论   

# re: 游戏渲染窗口下实现内嵌网页 2013-01-28 23:03 Lo

@魔鬼螳螂
这个 好像好你只是普通进程,不是dx下。。。  回复  更多评论   

# re: 游戏渲染窗口下实现内嵌网页 2013-01-29 09:09 魔鬼螳螂

@Lo
是的,这种功能是不需要用到任何DX的api的。  回复  更多评论   

# re: 游戏渲染窗口下实现内嵌网页 2015-01-10 10:00 下巴长痘痘是什么原因

看来,我要试试才知道行不行  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理