解决Hge窗口切换变问题
来源:互联网 发布:永远热泪盈眶 知乎 编辑:程序博客网 时间:2024/05/22 17:14
//system.cpp
void CALL HGE_Impl::System_SetStateInt(hgeIntState state, int value)
{
switch(state) {
case HGE_SCREENWIDTH: if(!pD3DDevice) nScreenWidth=value; break;
case HGE_SCREENHEIGHT: if(!pD3DDevice) nScreenHeight=value; break;
而窗口切换依赖的是_AdjustWindow();使用的是rectW(窗口模式矩形)和rectFS(全屏模式矩形),但是由于在hge初始化后修改窗口大小没有修改rectW和rectFS,所以_AdjustWindow()调用时还是依赖的初始的窗口大小。解决方法只需要其修改为:
//system.cpp
void CALL HGE_Impl::System_SetStateInt(hgeIntState state,int value)
{
switch(state) {
case HGE_SCREENWIDTH:
{
nScreenWidth=value;
int width=nScreenWidth + GetSystemMetrics(SM_CXFIXEDFRAME)*2;
rectW.left=(GetSystemMetrics(SM_CXSCREEN)-width)/2;
rectW.right=rectW.left+width;
rectFS.left=0;
rectFS.right=nScreenWidth;
}
break;
case HGE_SCREENHEIGHT:
{
nScreenHeight=value;
int height=nScreenHeight + GetSystemMetrics(SM_CYFIXEDFRAME)*2 + GetSystemMetrics(SM_CYCAPTION);
rectW.top=(GetSystemMetrics(SM_CYSCREEN)-height)/2;
rectW.bottom=rectW.top+height;
rectFS.top=0;
rectFS.bottom=nScreenHeight;
}
break;
然后将hge源代码重新编译得到所需的hge.lib和hge.dll,这样窗口大小就可以动态修改了。另外游戏中常见的是全屏<->窗口模式的切换,由于hge动态设定全屏使用的是伪全屏方法(就是用窗口模式模拟全屏),所以在之前要设定窗口大小为屏幕大小。还有就是初始化时需要设定为窗口模式,若为全屏模式则就是真正的全屏了,之后没办法切换到窗口模式。
- 解决Hge窗口切换变问题
- C#窗口切换问题的解决
- 解决WIN8输入法切换页面后变英文的问题
- HGE窗口缩放
- 解决MacLook变灰问题
- 解决word2007中,切换到别的窗口后回来,鼠标不能操作的问题
- 解决窗口闪烁问题
- 解决窗口嵌套问题
- 解决窗口嵌套问题
- word 空格变删除 问题及解决
- 解决vi中上下左右变ABCD问题
- 解决项目变砖的问题
- 用 DiskGenius 解决移动硬盘变 RAW 问题
- 解决信号跳变的问题
- 解决内外网切换问题
- HGE吸附MFC窗口,棋牌开发增强
- 关于切换当前窗口的问题
- 多线程解决窗口售票问题
- mem.h函数库
- Scintilla! 一个超棒的免费源代码编辑控件
- 爱你的100种理由(中英对照)
- 谁是最有价值的技术博客?
- 开始写BLOG了
- 解决Hge窗口切换变问题
- 免费开源的编辑器 - SciTE
- 实用英语:经典英语赞美三十句
- 挂在嘴边的实用英语句子
- 在.NET程序中正确使用String类型
- 什么是设计模式?
- 用来脱口而出的100个精典句子
- 使用概述 scinitlla
- win2k3上为IIS服务器配置SSL服务