HGE吸附MFC窗口,棋牌开发增强

自助开通VIP,整站资源任意下载

目前很多棋牌游戏使用各类界面引擎,以达到界面美观,HGE固然好,但它也只是一个界面引擎,没有控件,最让人不能接受的是它会把MFC的控件盖在下面,它在MFC控件就不能在,鱼与熊掌不可兼得。

这个都很好的东西为什么不能一起用呢,怎么才能同时用呢?

HGE吸附MFC窗口,棋牌开发增强,HGE吸附MFC窗口,棋牌开发增强,棋牌开发,棋牌游戏,游戏,第1张

MFC对话框有一个Popup属性,可以置顶,那就围绕这个属性大做文章,首先创建一个这样的对话框,依附在HGE界面上,这样这个对话框可以在HGE界面之上,解决了开头的那个问题。然后呢就是这个对话框不能对着窗口移动,这也是这个属性的特点,俗话说,说什么呢,就是没有十全十美的意思。这就要在HGE界面的那个窗口响应一下ON_WM_MOVING(),在OnMoving(UINT fwSide, LPRECT pRect)里面大做文章,下面贴代码:

if (!(m_Point.x ==-2000 && m_Point.y == -2000))
{
m_MsgBox->MoveWindowEx(pRect->left-m_Point.x,pRect->top-m_Point.y);
}
m_Point.x = pRect->left;//1
m_Point.y = pRect->top;//2

注释:CPoint m_Point;//这个是记录窗口当前的位置,每次移动都要记录最后的位置 1和2 处

pRect->left-m_Point.x;//左右偏移值

pRect->top-m_Point.y;//上下偏移值

//这个是封装了一个对话框移动的函数,只需要移动左上角坐标就可以了

void CMsgBox::MoveWindowEx(int x, int y)
{
CRect rtClient,rtNewClient;
GetWindowRect(&rtClient);
rtNewClient.left = x+rtClient.left;
rtNewClient.right = x+rtClient.right;
rtNewClient.top = y+rtClient.top;
rtNewClient.bottom = y+rtClient.bottom;
MoveWindow(rtNewClient);
}

HGE吸附MFC窗口,棋牌开发增强,HGE吸附MFC窗口,棋牌开发增强,棋牌开发,棋牌游戏,游戏,第2张

下面代码是限制窗口不能移出屏幕的代码

#define DETASTEP 8

BOOL AdjustPos(CRect lpRect)
{//自动靠边
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
RECT rWorkArea;
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA,
sizeof(RECT),
&rWorkArea,
0);
CRect rcWA;
if(!bResult)
{//如果调用不成功就利用GetSystemMetrics获取屏幕面积
rcWA=CRect(0,0,iSX,iSY);
}
else
rcWA=rWorkArea;

int iX=lpRect->left;
int iY=lpRect->top;

if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
{//调整左
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.left-iX,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
{//调整上
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.top-iY);
AdjustPos(lpRect);
return TRUE;
}
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
{//调整右
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
{//调整下
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
return TRUE;
}
return FALSE;
}

调用也在OmMove函数里:

CRect r=pRect;
AdjustPos(&r);
pRect=(RECT)r;

本站源码仅做学术研究,自娱自乐使用,不得用于赌博性质的非法商业用途!转载请说明出处!
九牛资源网 » HGE吸附MFC窗口,棋牌开发增强

这里有你所需要的,找专业的人做专业的事!

游戏演示 联系客服