MFC获取KeyBoard的事件来移动窗体的位置

来源:互联网 发布:hp8570p windows 7系统 编辑:程序博客网 时间:2024/06/11 17:34

 ////////////////////////////////////////////////////////////////////////////
//Static Var
static int LeftPos  = 0;
static int RightPos = 0;
static int UpPos    = 0;
static int DownPos  = 0;

//用来保存坐标的位置

 

BOOL CKeyTestDlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 
 switch (pMsg->message)
 {
 case WM_KEYDOWN :

  switch (pMsg->wParam)
  {
  case VK_LEFT:
  {

   LeftPos -= 5;
   
   if ((LeftPos + RightPos+10) <= 0)
      {
    LeftPos = 0;
    RightPos = 0;
   }

   MoveWindow( (LeftPos + RightPos+10),(UpPos+DownPos+10), 200, 200);
   break;
  }

  case VK_RIGHT:
  { 
   RightPos += 5;

   if ((LeftPos + RightPos+10) <= 0)
   {
    LeftPos = 0;
    RightPos = 0;
   }

   MoveWindow( (LeftPos + RightPos+10),(UpPos+DownPos+10), 200, 200);
   break;
  }

  case VK_UP:
  {
   UpPos -= 5;

   if ((UpPos+DownPos+10) <= 0)
   {
    UpPos = 0;
    DownPos = 0;
   }

   MoveWindow( (LeftPos + RightPos+10),(UpPos+DownPos+10), 200, 200);
   
   break;
  }

  case VK_DOWN:
  {
   DownPos += 5;

   if ((UpPos+DownPos+10) <= 0)
   {
    UpPos = 0;
    DownPos = 0;
   }

   MoveWindow( (LeftPos + RightPos+10),(UpPos+DownPos+10), 200, 200);
   break;
  }

  }//End switch

  break;
 }

 return CDialog::PreTranslateMessage(pMsg);
}

原创粉丝点击