为什么80%的码农都做不了架构师?>>>   

本例效果图:


program Project1;usesWindows,Messages;{供 WM_LBUTTONDOWN 消息调用的自定义过程}
procedure OnLButtonDown(h: HWND);
varBrushHandle: HBRUSH;Rect: TRect;
beginGetClientRect(h, Rect);                        {获取客户区矩形}BrushHandle := CreateSolidBrush(RGB(255,0,0)); {建立红色笔刷}FillRect(GetDC(h), Rect, BrushHandle);         {填充客户区}DeleteObject(BrushHandle);                     {删除笔刷}
end;{供 WM_LBUTTONUP 消息调用的自定义过程}
procedure OnLButtonUp(h: HWND);
varRect: TRect;
beginGetClientRect(h, Rect);         {获取客户区矩形}InvalidateRect(h, @Rect, True); {使客户区无效, 从而强制重绘}
end;{供 WM_MOUSEMOVE 消息调用的自定义过程}
procedure OnMouseMove(h: HWND; lParam: Integer);
varpt: TPoint;buf: array[0..255] of Char;
beginpt.X := LoWord(lParam); {lParam 中的低两位是 x 坐标}pt.Y := HiWord(lParam); {lParam 中的高两位是 y 坐标}wvsprintf(buf, '%d, %d', @pt); {格式化到缓冲区}SetWindowText(h, buf);         {显示在标题}
end;function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;
beginResult := 0;case msg ofWM_LBUTTONDOWN: OnLButtonDown(wnd); {鼠标左键按下的消息}WM_LBUTTONUP  : OnLButtonUp(wnd);   {鼠标左键抬起的消息}WM_MOUSEMOVE  : OnMouseMove(wnd, lParam);   {鼠标移动的消息, 坐标位置在 lParam 中}WM_DESTROY    : PostQuitMessage(0);elseResult := DefWindowProc(wnd, msg, wParam, lParam);end;
end;function RegMyWndClass: Boolean;
varcls: TWndClass;
begincls.style         := CS_HREDRAW or CS_VREDRAW;cls.lpfnWndProc   := @WndProc;cls.cbClsExtra    := 0;cls.cbWndExtra    := 0;cls.hInstance     := HInstance;cls.hIcon         := 0;cls.hCursor       := LoadCursor(0, IDC_ARROW);cls.hbrBackground := HBRUSH(COLOR_WINDOW + 1);cls.lpszMenuName  := nil;cls.lpszClassName := 'MyWnd';Result := RegisterClass(cls) <> 0;
end;{程序入口}
consttit = 'New Form';ws = WS_OVERLAPPEDWINDOW;x = 100; y = 100; w = 300; h = 180;
varhWnd: THandle;Msg : TMsg;
beginRegMyWndClass;hWnd := CreateWindow('MyWnd', tit, ws, x, y, w, h, 0, 0, HInstance, nil);ShowWindow(hWnd, SW_SHOWNORMAL);UpdateWindow(hWnd);while(GetMessage(Msg, 0, 0, 0)) dobeginTranslateMessage(Msg);DispatchMessage(Msg);end;
end.

转载于:https://my.oschina.net/hermer/blog/319445

Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息相关推荐

  1. 【转】windows程序设计(14):鼠标消息详解

    关于鼠标的一些细节知识: 通常,我们发消息时,都是对一个特定的窗口,但是对于鼠标消息却不然:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是 ...

  2. windows编程中wParam和lParam消息

    windows编程中wParam和lParam消息 1.WM_PAINT消息,LOWORD(lParam)是客户区的宽,HIWORD(lParam)是客户区的高. 2 滚动条WM_VSCROLL或WM ...

  3. windows编程之鼠标消息总结

    1 确定鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ; 2 获取鼠标上按键数目:cButtons = GetSystemMetrics (SM ...

  4. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)

    目录: 滚动条 键盘 鼠标 滚动条ScrollBar 发送消息:WM_VSCROLL和WM_HSCROLL 参数wParam:wParam消息参数被分为一个低字组和一个高字组.wParam的低字组是一 ...

  5. 如何使对话框中接收到WM_CHAR消息(Windows编程)

    我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到:    #include //Declare the Dial ...

  6. Windows编程 从消息窗口到基本窗口 游戏循环窗口框架的简单实现

    版本:VS2015 语言:C++ 本来想昨天写个消息窗口的内容,讲一些好玩的东西,不过没有时间了,就放到一起了. 今天正好把书的第二章看完了,感觉良好,Windows的编程确实难度要高,一下子会有一大 ...

  7. Windows 编程常用键盘消息命令

           每一个点都很值得研究,这都是皮毛.        1.扫描码与虚拟码 键盘从最早的83键发展到当今流行的101键,虽然增加了许多键,但按键的基本操作保持不变,即按下一个键或释放一个键.按 ...

  8. Windows编程捕获特定窗口及键盘鼠标消息模拟

    Windows编程捕获特定窗口及键盘鼠标消息模拟 一.简介 二.使用到的API简介 三.获取Windows记事本的编辑区窗口的句柄并模拟输入操作 1.分析 2.代码一 3.代码二 四.后记 一.简介 ...

  9. Windows编程基础(转)

    前几天在网上看了"病毒"兄写的<WIN下编程须知>一文,觉得在编程方面要写出一篇适合初学者们看 的入门级文章的确很重要,可惜病毒兄只在该文里介绍了线程.消息.句柄等几个 ...

最新文章

  1. Oracle SQL Perfomance Tuning
  2. 1091. Acute Stroke (30)
  3. python系统自学_如何系统地自学python
  4. 优秀的gdb图形化前端调试器
  5. edge如何导入html文件收藏夹,win10浏览器 edge浏览器收藏夹怎么导入?
  6. ILI9486 和 stm32F407 cortex-M4
  7. Luogu4725 【模板】多项式对数函数(NTT+多项式求逆)
  8. 开始菜单跑到左边去了_你的车“跑偏”吗?也许是你的方向盘本身就不正
  9. 思维认知-读mindhacks杂记
  10. 10亿级流数据交互查询,为什么抛弃MySQL选择VoltDB?
  11. 【Java 集合框架】最全的 Java 集合框架入门手册
  12. 51单片机的红外遥控
  13. 利用python进行微信好友数据分析
  14. 《Android之大话设计模式》--设计原则 第二章:单一职责原则 乔峰VS慕容复
  15. error: failed to push some refs to如何解决
  16. EPICS Linux/Unbuntu 的安装说明(入门级)
  17. java cancel_Future.cancel()疑难杂症
  18. C++,一球从某一高度落下(整数,单位是米),每次落地后跳回原来高度的一半,再落下。编程计算球在第5次落地时,共经过多少米?第5次反弹多高?【多组输入】
  19. Linux常用开源库
  20. 语义分割模型中分辨率恢复_语义模型在智慧工业运营中的作用

热门文章

  1. Python 3 Basics
  2. Android RxJava(一) create操作符的用法和源码分析
  3. 挂载(mount)深入理解
  4. 使用jenkins进行Android的持续集成
  5. Mysql高级之游标
  6. ComfortTypingPro快速录入工具
  7. Java8新特性总结 - 1.接口新增默认方法和静态方法
  8. 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
  9. 计算机应用基础第二版在线作业一,计算机应用基础在线作业一
  10. 前台setcookie之后从后台取出来_后台设置Cookie值,前台进行获取