| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3111 人关注过本帖
标题:VC6.0 如何实现按钮响应鼠标MoveOn消息
只看楼主 加入收藏
sparl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-10
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:4 
VC6.0 如何实现按钮响应鼠标MoveOn消息
类似VS2005中的按钮,就是鼠标移动到按钮上后,按钮有所反应,大家来讨论一下,踊跃发言,重在参与
搜索更多相关主题的帖子: 按钮 MoveOn 鼠标 
2009-10-10 20:58
sparl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-10
收藏
得分:0 
已经解决了,我的方法是这样了,有哪位高手有更好的可以拿来交流
首先为主对话框增加一个WM_MOUSEMOVE消息响应函数
其中增加代码如下:
    this->GetWindowRect(rect_win); //rect_win为Dlg类的全局对象 CRect类
    CWnd * pwnd=GetDlgItem(IDOK);  //对OK按钮进行操作
     
    if(!changedok) //changedok为Dlg类的全局对象 bool型
    {
        pwnd->GetWindowRect(rect_ok);//获取 OK按钮所占区域
        ScreenToClient(rect_ok);
        oldrect=rect_ok;
        rect_ok.top-=5;     //调整区域大小,以便捕捉到鼠标移动到按钮区域的消息
        rect_ok.left-=5;     
        rect_ok.bottom+=5;     
        rect_ok.right+=5;
    }
 
    if(rect_ok.PtInRect(point)) //检查鼠标是否移动到按钮上
    {
 
        pwnd->MoveWindow(rect_ok);  //放大按钮
        rect_ok=oldrect;
 
        changedok=true;
    }
    else
    {
        if(changedok)
        {
           pwnd->MoveWindow(rect_ok); //鼠标移出按钮,回复按钮大小
           changedok=false;
        }
    }
2009-10-11 19:30
style
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2005-11-29
收藏
得分:20 
自己class MyButton:public CButton也可以.
在MyButton處理WM_MOUSEMOVE

11111111
2009-10-12 06:02
sparl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-10
收藏
得分:0 
这是个好主意啊,效果应该会更好,晚上试试
2009-10-12 12:57
sparl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-10
收藏
得分:0 
首先在主对话框初始化时调用
m_MyButton.SubclassDlgItem(IDOK,this);
m_MyButton.InitButton(this);

CMyButton中的函数
void CMyButton::InitButton(LPVOID pParma)
{
    pwnd=(CWnd*)pParma;
}

void CMyButton::OnMouseMove(UINT nFlags, CPoint point)  
{
    // TODO: Add your message handler code here and/or call default
    if(!m_changed) //m_changed为CMyButton 类对象bool型
    {
         this->GetWindowRect(m_rect); //m_rect为CMyButton 类对象CRect型
         pwnd->ScreenToClient(m_rect); //pwnd为CMyButton 类对象CWnd型,通过参数与主对话框传递而来
         m_oldrect=m_rect;
         m_rect.top-=5;
         m_rect.left-=5;
         m_rect.bottom+=5;
         m_rect.right+=5;
         this->MoveWindow(m_rect);
         m_rect=m_oldrect;
         m_changed=true;
    }
    CButton::OnMouseMove(nFlags, point);
}
 
void CMyButton::MouseOut() //该函数在主对话框类的WM_MOUSEMOVE消息响应函数 中调用,负责恢复按钮大小

{
    if(m_changed)
    {
        m_changed=false;
        this->MoveWindow(m_rect);
    }
}
2009-10-12 20:46
快速回复:VC6.0 如何实现按钮响应鼠标MoveOn消息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030791 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved