Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息
为什么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 消息相关推荐
- 【转】windows程序设计(14):鼠标消息详解
关于鼠标的一些细节知识: 通常,我们发消息时,都是对一个特定的窗口,但是对于鼠标消息却不然:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是 ...
- windows编程中wParam和lParam消息
windows编程中wParam和lParam消息 1.WM_PAINT消息,LOWORD(lParam)是客户区的宽,HIWORD(lParam)是客户区的高. 2 滚动条WM_VSCROLL或WM ...
- windows编程之鼠标消息总结
1 确定鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ; 2 获取鼠标上按键数目:cButtons = GetSystemMetrics (SM ...
- windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
目录: 滚动条 键盘 鼠标 滚动条ScrollBar 发送消息:WM_VSCROLL和WM_HSCROLL 参数wParam:wParam消息参数被分为一个低字组和一个高字组.wParam的低字组是一 ...
- 如何使对话框中接收到WM_CHAR消息(Windows编程)
我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到: #include //Declare the Dial ...
- Windows编程 从消息窗口到基本窗口 游戏循环窗口框架的简单实现
版本:VS2015 语言:C++ 本来想昨天写个消息窗口的内容,讲一些好玩的东西,不过没有时间了,就放到一起了. 今天正好把书的第二章看完了,感觉良好,Windows的编程确实难度要高,一下子会有一大 ...
- Windows 编程常用键盘消息命令
每一个点都很值得研究,这都是皮毛. 1.扫描码与虚拟码 键盘从最早的83键发展到当今流行的101键,虽然增加了许多键,但按键的基本操作保持不变,即按下一个键或释放一个键.按 ...
- Windows编程捕获特定窗口及键盘鼠标消息模拟
Windows编程捕获特定窗口及键盘鼠标消息模拟 一.简介 二.使用到的API简介 三.获取Windows记事本的编辑区窗口的句柄并模拟输入操作 1.分析 2.代码一 3.代码二 四.后记 一.简介 ...
- Windows编程基础(转)
前几天在网上看了"病毒"兄写的<WIN下编程须知>一文,觉得在编程方面要写出一篇适合初学者们看 的入门级文章的确很重要,可惜病毒兄只在该文里介绍了线程.消息.句柄等几个 ...
最新文章
- Oracle SQL Perfomance Tuning
- 1091. Acute Stroke (30)
- python系统自学_如何系统地自学python
- 优秀的gdb图形化前端调试器
- edge如何导入html文件收藏夹,win10浏览器 edge浏览器收藏夹怎么导入?
- ILI9486 和 stm32F407 cortex-M4
- Luogu4725 【模板】多项式对数函数(NTT+多项式求逆)
- 开始菜单跑到左边去了_你的车“跑偏”吗?也许是你的方向盘本身就不正
- 思维认知-读mindhacks杂记
- 10亿级流数据交互查询,为什么抛弃MySQL选择VoltDB?
- 【Java 集合框架】最全的 Java 集合框架入门手册
- 51单片机的红外遥控
- 利用python进行微信好友数据分析
- 《Android之大话设计模式》--设计原则 第二章:单一职责原则 乔峰VS慕容复
- error: failed to push some refs to如何解决
- EPICS Linux/Unbuntu 的安装说明(入门级)
- java cancel_Future.cancel()疑难杂症
- C++,一球从某一高度落下(整数,单位是米),每次落地后跳回原来高度的一半,再落下。编程计算球在第5次落地时,共经过多少米?第5次反弹多高?【多组输入】
- Linux常用开源库
- 语义分割模型中分辨率恢复_语义模型在智慧工业运营中的作用
热门文章
- Python 3 Basics
- Android RxJava(一) create操作符的用法和源码分析
- 挂载(mount)深入理解
- 使用jenkins进行Android的持续集成
- Mysql高级之游标
- ComfortTypingPro快速录入工具
- Java8新特性总结 - 1.接口新增默认方法和静态方法
- 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
- 计算机应用基础第二版在线作业一,计算机应用基础在线作业一
- 前台setcookie之后从后台取出来_后台设置Cookie值,前台进行获取