找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4975|回复: 4

[每日一码] 利用“钩子”实现鼠标功能的例子代码

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-28 17:05:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. //函数的声明部分

  2. static BOOL CapsDone = FALSE;   //判断是否注册了该命令
  3. BOOL toCaps(MSG *pMsg);    //获得消息的函数,就是消息处理函数
  4. void regCaps();   //注册命令
  5. void unregCaps();  //注销命令



  6. ///程序实现

  7. void initApp()
  8. {
  9. acedRegCmds->addCommand(_T("MKEvents"),_T("caps"),_T("caps"),ACRX_CMD_MODAL,&regCaps);
  10. return;
  11. }



  12. void unloadApp()
  13. {
  14. acedRegCmds->removeGroup(_T("MKEvents"));
  15. if(CapsDone==TRUE)
  16. {
  17.   acedRemoveFilterWinMsg(toCaps);
  18. }

  19. //  acedRemoveWatchWinMsg(toCaps);

  20. return;
  21. }

  22. //此处获得鼠标在Dwg图纸中的坐标,相当有用,值得珍藏的一段代码

  23. BOOL toCaps(MSG* pMsg)
  24. {
  25. CString sTemp;
  26. long ptx=0,pty=0;

  27. if(pMsg->message == WM_CHAR)
  28. {
  29.     ptx=LOWORD(pMsg->lParam);
  30.     pty=HIWORD(pMsg->lParam);
  31.     CPoint pt(ptx,pty);
  32.     acedDwgPoint getPts;
  33.     acedCoordFromPixelToWorld(pt,getPts);
  34.     sTemp.Format(_T("/nx=%0.3f,y=%0.3f/n"),getPts[0],getPts[1]);
  35.     acutPrintf(sTemp);
  36. }



  37. return FALSE;
  38. }



  39. void regCaps()
  40. {
  41. if(CapsDone == TRUE)
  42.   return;
  43. acedPrompt(_T("/ncapsing.../n"));
  44. if(acedRegisterFilterWinMsg(toCaps) == FALSE)
  45. // if(acedRegisterWatchWinMsg(toCaps) == FALSE)
  46. {
  47.   acedPrompt(_T("/ncant/n"));
  48. }
  49. else
  50. {
  51.   CapsDone=TRUE;
  52. }
  53. return;

  54. }


  55. void unregCaps()
  56. {
  57. if(CapsDone == TRUE)
  58. {
  59.   acedRemoveFilterWinMsg(toCaps);
  60. //  acedRemoveWatchWinMsg(toCaps);
  61.   CapsDone = FALSE;
  62. }
  63. return;
  64. }


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-9-28 22:49:31 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2016-9-30 08:33:38 | 显示全部楼层
                                               
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-6-30 10:03:51 | 显示全部楼层
:toCaps”: 函数调用缺少参数列表;请使用“&CVApp::toCaps”创建指向成员的指针,这个怎么回事
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-6-30 10:33:42 | 显示全部楼层
acedRemoveFilterWinMsg(toCaps);if(acedRegisterFilterWinMsg(toCaps) == FALSE)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 20:33 , Processed in 0.201587 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表