hge source explor 0x3 windows module
Posted YORU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hge source explor 0x3 windows module相关的知识,希望对你有一定的参考价值。
Windows窗口 |
在这里继续看窗口相关的函数,前面看到的部分能够生成一个窗口。在hge的代码中,我们可以看到别的函数处理窗口相关的事情,当然不是指的消息处理函数。
在hge中消息处理函数是最主要的函数之一,完成了整个游戏的信息输入。
另外的和窗口相关的函数是
graphics.cpp |
void HGE_Impl::_AdjustWindow()
|
void HGE_Impl::_Resize(int width, int height) |
从函数的名字中可以看到都是处理窗口的变化的函数
实现 | 出现位置 | 作用 | |
AdjustWindow |
void HGE_Impl::_AdjustWindow() { RECT *rc; LONG style; if(bWindowed) {rc=&rectW; style=styleW; } else {rc=&rectFS; style=styleFS; } SetWindowLong(hwnd, GWL_STYLE, style); style=GetWindowLong(hwnd, GWL_EXSTYLE); if(bWindowed) { SetWindowLong(hwnd, GWL_EXSTYLE, style & (~WS_EX_TOPMOST)); SetWindowPos(hwnd, HWND_NOTOPMOST, rc->left, rc->top, rc->right-rc->left, rc->bottom-rc->top, SWP_FRAMECHANGED); } else { SetWindowLong(hwnd, GWL_EXSTYLE, style | WS_EX_TOPMOST); SetWindowPos(hwnd, HWND_TOPMOST, rc->left, rc->top, rc->right-rc->left, rc->bottom-rc->top, SWP_FRAMECHANGED); } } |
在graphics.cpp中被定义 1.在设置为窗口模式时调用(system.cpp:368); 2.在初始化DX的时候被调用(graphics.cpp:720) |
设置窗口的格式、位置 |
Resize |
void HGE_Impl::_Resize(int width, int height) { if(hwndParent) { //if(procFocusLostFunc) procFocusLostFunc(); d3dppW.BackBufferWidth=width; d3dppW.BackBufferHeight=height; nScreenWidth=width; nScreenHeight=height; _SetProjectionMatrix(nScreenWidth, nScreenHeight); _GfxRestore(); //if(procFocusGainFunc) procFocusGainFunc(); } } |
在graphics.cpp中被定义 1.在窗口发生大小变化时被调用(system.cpp:849) |
在有父窗口的情况下要重新设置大小
|
对于Resize函数: 1.窗口模式下,hge中设置为窗口模式是不可调节大小的 2.全屏模式下,切换到桌面 |
以上是关于hge source explor 0x3 windows module的主要内容,如果未能解决你的问题,请参考以下文章
hge source explor 0x4 input module
hge source explor 0x6 input module
hge source explor 0xB graphics Ⅱ