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

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

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

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

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;//左右偏移值

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

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

 

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

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

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);
}

 

 

 

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

#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;

① 本网站名称及网址:速群资源分享网 | www.suqun.net
② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你也有好源码或者教程,可以联系小编,有钻石奖励和额外收入。
⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 本站资源大多存储在云盘,如发现链接失效,请联系客服,我们会第一时间更新。
速群棋牌源码网 » HGE吸附MFC窗口,棋牌开发增强

VIP会员尊享专属特权,真正的海量,无套路,无限量下载!

游戏演示 联系客服