设为首页 加入收藏

TOP

11.6.1 信息提示框的设计与实现(1)
2013-10-07 14:35:55 来源: 作者: 【 】 浏览:47
Tags:11.6.1 信息 提示 设计 实现

11.6.1  信息提示框的设计与实现(1)

截屏模块的信息提示框是初始时位于截屏窗体左上角的一个编辑框。它有自己的背景图像,可以根据用户的动作提示用户当前的信息,以及对下步动作进行说明提示。截屏窗体上的鼠标永远不能移到这个窗体上,当用户需要截取消息框下的图片时,消息框可以切换到屏幕的右上角,躲开用户的鼠标。

(1)为信息框设计并载入一个背景位图,如图11.25所示。

 
图11.25  消息框的背景图像
(2)由于一般的编辑框无法实现本实例所需的功能,因此需要重载一个编辑框,以实现更多的功能。
  1. 01  class CMyEdit : public CEdit  
  2. 02  {  
  3. 03  public:  
  4. 04      CMyEdit();              //构造函数  
  5. 05      virtual ~CMyEdit();     //析构函数  
  6. 06  public:  
  7. 07      BOOL m_bMove;           //是否移动标识  
  8. 08  public:  
  9. 09  protected:  
  10. 10      //{{AFX_MSG(CMyEdit)  
  11. 11      afx_msg void OnMouseMove(UINT nFlags, CPoint point);      
  12.                                 //鼠标移动事件处理函数  
  13. 12      afx_msg void OnSetFocus(CWnd* pOldWnd); //获取焦点事件处理函数  
  14. 13      afx_msg BOOL OnEraseBkgnd(CDC* pDC);        //背景绘制事件处理函数  
  15. 14      afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);    
  16. 15      //}}AFX_MSG  
  17. 16      DECLARE_MESSAGE_MAP()  
  18. 17  };  

【代码解析】

类中定义的变量、函数的功能及实现如下:

第7行的m_bMove标识当前信息框的位置,为真时信息框位于屏幕的右上角,为假时信息框位于屏幕的左上角。

第11行的鼠标移动处理函数,主要实现躲避鼠标的功能,实现如下:

  1. 01  void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)   
  2. 02  {  
  3. 03      CRect rect;  
  4. 04      GetWindowRect(&rect);                               //获取窗体大小  
  5. 05      int xScreen = GetSystemMetrics(SM_CXSCREEN);        //获取屏幕宽度  
  6. 06      if(m_bMove)  
  7. 07      {  
  8. 08          MoveWindow(10,10,rect.Width(),rect.Height());   //移动到左上角  
  9. 09          m_bMove=FALSE;  
  10. 10      }  
  11. 11      else  
  12. 12      {  
  13. 13          MoveWindow(xScreen-180,10,rect.Width(),rect.Height());    
  14.                                                             //移动到右上角  
  15. 14          m_bMove=TRUE;  
  16. 15      }  
  17. 16      CEdit::OnMouseMove(nFlags, point);  
  18. 17  }  

上述代码首先获取当前信息提示框的大小。然后获取屏幕的宽度。最后判断当前信息提示框的位置,如果信息框当前位于屏幕的右上角,则在第13行将其移到屏幕的右上角。如果信息框当前位于屏幕的左上角,则在第8行将其移到屏幕的左上角。

第12行定义的OnSetFocus()函数实现了,隐藏鼠标移入消息框时的光标。实现 如下:

  1. 01  void CMyEdit::OnSetFocus(CWnd* pOldWnd)   
  2. 02  {  
  3. 03      CEdit::OnSetFocus(pOldWnd);  
  4. 04      HideCaret(this->m_hWnd);            //隐藏光标提示符  
  5. 05  }  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.7.4 单选按钮的控制及初始化 下一篇11.6.2 截图模块主窗体的设计与实..

评论

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