设为首页 加入收藏

TOP

11.5.1 功能控制模块的界面设计及实现(2)
2013-10-07 14:34:28 来源: 作者: 【 】 浏览:71
Tags:11.5.1 功能 控制 模块 界面设计 实现

11.5.1  功能控制模块的界面设计及实现(2)

(3)由于窗体没有标题栏,因此无法用鼠标拖动窗体移动。为了解决这个问题需要重载窗体的OnLButtonDown()函数,该函数即鼠标单击的处理函数。在该函数中,判断鼠标单击的位置,当鼠标单击位置位于对话框左侧的一段空白区域内时,则向窗体发送鼠标单击标题栏的消息。如此便可实现在对话框左侧拖动对话框的功能。

  1. 01  void CScreenShotsDlg::OnLButtonDown(UINT nFlags, CPoint point)   
  2. 02  {  
  3. 03      if (point.x < 40)  
  4. 04      {   //这个区域内可拖动窗体  
  5. 05          PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,  
  6. 06                      MAKELPARAM(point.x,point.y));  
  7. 07      }  
  8. 08      CDialog::OnLButtonDown(nFlags, point);  
  9. 09  }  

(4)为工程载入鼠标光标资源IDC_NOMAL,如图11.23所示;鼠标光标资源IDC_RIGHT,如图11.24所示。
 
图11.23  伸开的手型光标
 
图11.24  握拳的手型光标
为了界面的美化,也为了用户操作简单。当鼠标移动到拖动区域时,鼠标光标变为伸开的手型。这需要重载鼠标移动处理函数,在处理函数中判断鼠标位置,当鼠标位于拖放区域时,改变鼠标光标。
  1. 01  void CScreenShotsDlg::OnMouseMove(UINT nFlags, CPoint point)   
  2. 02  {  
  3. 03      if (point.x < 40)  
  4. 04      SetCursor(AfxGetApp()->LoadCursor(IDC_NORMAL));     //载入光标  
  5. 05      CDialog::OnMouseMove(nFlags, point);  
  6. 06  }  

当用户在拖动区域按下鼠标左键时,鼠标光标变为握拳型,此时便可移动鼠标,拖动窗体,直到鼠标左键抬起为止。
  1. 01  void CScreenShotsDlg::OnLButtonDown(UINT nFlags, CPoint point)   
  2. 02  {  
  3. 03      if (point.x < 40)  
  4. 04      {   //将鼠标事件转换为标题栏鼠标事件,并更换光标  
  5. 05          PostMessage(WM_NCLBUTTONDOWN,HTCAPTION  
  6. 06                      ,MAKELPARAM(point.x,point.y));  
  7. 07          SetCursor(AfxGetApp()->LoadCursor(IDC_RIGHT));  
  8. 08      }  
  9. 09      CDialog::OnLButtonDown(nFlags, point);  
  10. 10  }  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇11.5.3 控制模块最小化到托盘功能.. 下一篇11.5.2 截屏模块跳转功能的实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: