新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → [转帖]Visual C++6.0 API函数操作技巧--光标鼠标篇 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6056 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]Visual C++6.0 API函数操作技巧--光标鼠标篇 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     一分之千 帅哥哟,离线,有人找我吗?射手座1984-11-30
      
      
      威望:1
      等级:研一(随老板参加了WWW大会还和Tim Berners-Lee合了影^_^)
      文章:632
      积分:4379
      门派:XML.ORG.CN
      注册:2006/12/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一分之千发送一个短消息 把一分之千加入好友 查看一分之千的个人资料 搜索一分之千在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一分之千的博客楼主
    发贴心情 [转帖]Visual C++6.0 API函数操作技巧--光标鼠标篇

    鼠标操作是在编程中最常用的了,这篇文章介绍了几个鼠标操作,看似很麻烦的东西其实我们使用一个简单的API函数就能实现。

    我们在编制应用软件的过程中,常常需要对光标和鼠标操作,该文介绍了Windows系统中有关实现对鼠标和光标进行操作的API函数,并给出了在Visual C6.0++中利用所介绍的API函数实现对鼠标和光标的操作的代码。
    一、隐藏和显示光标

      函数: int ShowCursor ( BOOL bShow );

      参数 bshow,为布尔型,bShow的值为False时隐藏光标,为True时显示光标;该函数的返回值为整型,为鼠标隐藏或显示的指数器;返回值大于等于0时显示光标,否则隐藏鼠标;如果安装了鼠标初值为0。

      实例:

      在基于对话框的应用程序中放置两个Button,名称分别为HideCursor和ShowCursor;再放置一个CStatic控件,名称为Label1,用于显示光标计数器。

      源程序为:

    // 使光标计数器的值减一,如果小于零,隐藏光标
    void CMyTestDlg::OnHideCursor()
    {
    int i;
    i=ShowCursor(FALSE);
    Cstring string;
    string.Format(_T("%d" ),i);
    Label1.SetWindowText(&string);
    }
    // 使光标计数器的值加一,如果大于等于零,显示光标
    void CMyTestDlg::OnShowCursor()
    {
    int j;
    j=ShowCursor(TRUE);
    Cstring string;
    string.Format(_T("%d" ),j);
    Label1.SetWindowText(&string);
    }
      运行程序,连续单击ShowCursor按钮,你会见到计数器从1(光标显示时初值为0)开始不断加1;再连续单击HideCursor按钮,又会见到计数器不断减1,当计数器为-1时开始隐藏光标。

      二、交换鼠标左右键和恢复

      函数:

    BOOL SwapMouseButton ( BOOL fSwap );
      参数 fSwap,为布尔型,TRUE表示交换鼠标左右键,FALSE表示恢复系统默认左右手习惯;返回值亦为布尔型,交换后,返回值TRUE,恢复正常值为FALSE。

      实例:

      在应用程序中放置两个Button,名称分别为ReverseMouse和RestoreMouse。

      源程序为:

    //交换鼠标左右键
    void CMyTestDlg::OnReverseMouse()
    {
    BOOL T;
    T=SwapMouseButton(True);
    If(T)
    MessageBox("鼠标左右键交换成功!");
    }

    // 恢复鼠标左右键交换
    void CMyTestDlg::OnRestoreMouse()
    {
    BOOL T;
    T=SwapMouseButton(FALSE);
    If(!T)
    MessageBox("鼠标左右键恢复为默认状态!");
    }
      运行程序,左键单击ReverseMouse按钮,此时实现鼠标左右键功能切换;再右键单击RestoreMouse按钮,此时实现鼠标左右键功能恢复。

    三、得到鼠标双击时间

      1、函数:
    UINT GetDoubleClickTime(VOID);

      该函数无参数;它的返回值为毫秒,为双击鼠标双击有效的时间间隔。

      实例:

      在窗口中放置一个Button,名称为GetDoubleClickTime;再放置一个名为Label1的CStatic控件,用于显示双击时间。

      源程序为:


    //得到并显示鼠标的双击的时间
    void CMyTestDlg::OnGetDoubleClickTime()
    {
    int DTime;
    Cstring string;
    DTime:=GetDoubleClickTime();
    string.Format(_T("%d" ),Dtime);
    Label1.SetWindowText(&string);
    }


      运行程序,单击GetDoubleClickTime,在Label1中显示双击的时间,为毫秒级。

      四、设置鼠标双击时间

      函数:


    BOOL SetDoubleClickTime ( UINT uInterval );

       参数uInterval,表示鼠标双击时间,为毫秒级,系统默认时间为500;

       返回值为布尔值。

      实例:

      在窗口中放置一个Button,名称为SetDoubleClickTime。

      源程序为:


    //设置鼠标的双击的时间
    void CmyTestDlg::OnSetDoubleClickTime()
    {
    Bool T;
    T=SetDoubleClickTime(500);
    If(T)
    MessageBox("成功的设置了鼠标双击时间!");
    }

      运行程序,单击BtnSetDoubleClickTime,鼠标双击时间已改变。

      五、将鼠标锁定在一定范围

      函数:


    BOOL ClipCursor ( CONST RECT *lpRect );

      参数*lpRect,指向鼠标活动矩形区域的指针;返回值为布尔型,表示锁定成功与否。

      实例:

      在窗口中放置两个Button,名称为LockMouse和UnLockMouse。

      源程序为:


    //将鼠标锁定在固定区域
    void CmyTestDlg::OnLockMouse()
    {
    RECT Rect;
    BOOL bLock;
    Rect.left=10;//设置锁定区域大小;
    Rect.top=10;
    Rect.right=200;
    Rect.bottom=200;
    bLock:=ClipCursor(&Rect); // 限制鼠标移动区域
    if (block)
    MessageBox("鼠标固定在指定区域!");
    }

      将鼠标锁定解锁,其实质是将鼠标锁定在整个屏幕区


    void CmyTestDlg::OnLockMouse()
    {
    RECT Rect;
    BOOL bLock;
    Rect.left=0;//设置锁定区域大小;
    Rect.top=0;
    Rect.right=600;
    Rect.bottom=800;
    Block=ClipCursor(&Rect);
    if (block)
    MessageBox("鼠标固定在屏幕区域!");
    }

      运行程序,单击LockMouse,此时鼠标锁定在固定区域中;再单击UnLockMouse键鼠标锁定解锁。当然还可以采用别的方法将鼠标来解锁,如将鼠标锁定在某一个窗口来对鼠标解锁。

      总之,API函数的功能强大,我们可以在多种快速开发工具中使用它,以增强我们程序的功能。以上程序在Windows2000、Visual C++ 6.0中调试通过。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    越学越无知

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/16 16:23:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    很不错哦,简练实用~~~

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/17 12:07:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/11 19:07:04

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms