【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

自从上一期说了键盘消息之后,我就在想怎么写好鼠标这一章。其实和键盘消息相比较,鼠标消息也不难。几乎不需要在ResourceView做什么操作,直接在WndProc添加case响应就可以了,比如说像这样,

         case WM_LBUTTONDOWN:break;case WM_LBUTTONUP:break;

当然,上面的只是一份说明,我们总要写一点有意思的东西,比如说划线。这就是一个经常用来说明鼠标应用的例子。当让鼠标按下去的时候,记录一下鼠标的x、y坐标。等到鼠标返回的时候,再记录一下鼠标的坐标,利用这两个坐标画一条直线就可以了。为此,我们做了如下修改,

         case WM_LBUTTONDOWN:x = GET_X_LPARAM(lParam);y = GET_Y_LPARAM(lParam);break;case WM_LBUTTONUP:hdc = GetDC(hWnd);MoveToEx(hdc, x, y, NULL);LineTo(hdc, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));ReleaseDC(hWnd, hdc);break;

看上去也不是什么太复杂,为此,我们还需要定义一下x、y变量,且引用一下定义GET_X_LPARAM和GET_Y_LPARAM的头文件,

#include <windowsx.h>
int x = 0;
int y = 0;

经过这两个步骤,基本上鼠标画线的流程就算完成了。但是美中不足的是,我们没有保存每次直线的位置,等到app最小化后恢复的时候,app上面所有的直线就消失了,这个时候app又会是白茫茫一片。所以,如果要想体验好的话,一定要记录直线坐标的位置,且在WM_PAINT的时候,重新将这些直线画出来。

win32开发(鼠标)相关推荐

  1. 跟我一起玩Win32开发

    跟我一起玩Win32开发(1):关于C++的几个要点 我不知道各位,一提起 C++ ,第一感觉是什么?而据俺的观察,许多人几乎成了 " 谈 C 色变 " .不管是 C 还是 C++ ...

  2. GCC for Win32开发环境介绍

    GCC for Win32开发环境介绍(1) 第一章 在视窗操作系统下的GCC 第一节GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器.不过,现在GCC也有了许多Win32下的 ...

  3. win32开发(对话框启动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发.sdi开 ...

  4. win32开发(画笔、刷子、字体)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 因为win32开发基本上都是和windows打交道,这些api其他的os也用不到,所以建议大家在 ...

  5. win32开发(调试)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多同学都喜欢看代码,但是不喜欢调试代码.其实,在我看来,调试代码本身也是一项重要的能力.一份代 ...

  6. 跟我一起玩Win32开发(4):创建菜单

    跟我一起玩Win32开发(4):创建菜单 也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长, ...

  7. 跟我一起玩Win32开发(5):具有单选标记的菜单

    跟我一起玩Win32开发(5):具有单选标记的菜单 帅哥们,美女们,下午好,我又来误人子弟,请做好准备. 今天,我们的目的是,想要实现下图中的这种菜单效果. 就是一种类似单选按钮的菜单,多个菜单项中, ...

  8. 跟我一起玩Win32开发(25):监视剪贴板

    跟我一起玩Win32开发(25):监视剪贴板 自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种"门前冷落鞍马稀"的感觉.于是,老邪就拿出<九阴真经>认真阅读,同时用 ...

  9. 玩转Win32开发(2):完整的开发流程

      上一篇中我给各位说了一般人认为C++中较为难的东西--指针.其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类.虚基类.纯虚函数等,这些都是概念性的东西,几乎每一本C++ ...

最新文章

  1. python数组写入txt文档_Python打开文件,将list、numpy数组内容写入txt文件中的方法...
  2. 数据库 第一、二、三范式
  3. 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
  4. Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载)
  5. 浅谈深度学习(Deep Learning)的基本思想和方法
  6. 工作293:新的打印操作
  7. java 安卓视频播放器_java - 学习做一个安卓视频播放器,有一些小问题!忘大家请教...
  8. 二叉树节点为某一值的路径
  9. 关于power shell
  10. python培训价目表-Python培训一般要多少钱?
  11. html js修改readonly,js控制html元素的readonly属性
  12. vue el-input输入框禁止输入空格
  13. wait放弃对象锁_Java线程:notify()和wait()示例
  14. 雷达系统与信号处理概述(一)
  15. 自制家谱制作软件怎么注册
  16. 2019第四次新生周赛——YZJ的牛肉干
  17. 【日常吐槽 · 第七期】进击的博客
  18. 国赛mysql加固_2019 全国大学生信息安全竞赛创新能力实践赛3道Web Writeup
  19. OpenCV—用meanshift和Camshift进行目标追踪
  20. win10中chrome浏览器书签路径

热门文章

  1. 每天学一点Scala之Try
  2. 英特尔为苹果代工基带芯片 是为X86逆袭移动市场铺路?
  3. 更新yum源却忘了生成缓存 造成每次启动机器报:the package list needs to be rebuilt...
  4. Nodejs API
  5. android eclipse更改项目程序桌面图标以及出现的问题?
  6. [转]JS对JSON的操作总结
  7. 网络监控工具--ntop
  8. unittest----assert断言的使用
  9. 一分钟区分一流公司、二流公司、三流公司(转)
  10. 汇编语言---内存变量的地址