极语言2-4 窗口非客户区,键盘鼠标,菜单事件——通知消息

窗口非客户区——通知消息:

窗口非客户区包括标题栏菜单栏最小最大化关闭按钮等区域,也就是可以设计显示控件的区域是客户区
鼠标左键按住标题栏可以拖曳窗口移动位置,但是对于无标题栏的窗口怎么拖动位置呢?
判断(消息) 为 按下左键{发送消息(窗口,区外按左,2,0)}在窗口客户区按下鼠标左键
发送消息是区外按左,也就是在非客户区按下鼠标左键,参数写2是标题栏,模拟鼠标左键点击标题的消息
然后移动鼠标,窗体就会跟随鼠标一起移动了,松开鼠标左键再移动鼠标,窗体也不再跟随鼠标移动
③参数:点击区域,0在屏幕与窗口分界线上,1在窗口客户区,2在标题栏,3菜单或子窗口的关闭按钮,4在大小框中
5在菜单中,6在水平滚动条中,7在垂直滚动条,8在最小化按钮中,9在最大化按钮中,10在调整窗口宽度的左边框
11,在调整窗口宽度的右边框,12在窗口的上水平边框中,13边框的左上角,14边框的右上角,15垂直调整边框中
16边框左下角(对角调整),17边框右下角(对角调整),18不可调大小的边框中,20在关闭按钮中,21在帮助按钮中
中文名字 常量数值 英文名称 释义
区外删除 $0082 WM_NCDESTROY 本消息通知某窗口,非客户区正在销毁。③参数:0;④数据:0
区外调整 $0083 WM_NCCALCSIZE 当某窗口的客户区的大小和位置须被计算时发送本消息。③参数:0不需要指示工作区的有效部分,非0需要;④数据:参数为真NCCALCSIZE_PARAMS 结构,参数为假 矩形类
光标离开 $0084 WM_NCHITTEST 当用户在在非客户区移动鼠标、按住或释放鼠标时发送本消息(击中测试);若鼠标没有被捕获,则在得到光标之后发出。③参数:0;④数据:屏幕坐标x/y
区外重绘 $0085 WM_NCPAINT 当窗口框架(非客户区)必须被被重绘时,应用程序发送本消息给该窗口。③参数:区域;④数据:0
区外激活 $0086 WM_NCACTIVATE 本消息发送给某窗口,在窗口的非客户区被激活时重绘窗口。③参数:0绘制非活动标题栏或图标,非0活动;④数据:0活动窗口,-1不重绘,非活动窗口区域指针
切换控件 $0087 WM_GETDLGCODE 发送本消息给某个与对话框程序关联的控件,系统控制方位键和TAB键使输入进入该控件。③参数:键码;④数据:消息类
经过区外 $00A0 WM_NCMOUSEMOVE 当光标在某窗口的非客户区内移动时,发送本消息给该窗口。③参数:点击区域;④数据:坐标x/y;
区外按左 $00A1 WM_NCLBUTTONDOWN 当光标在某窗口的非客户区内的同时按下鼠标左键,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外放左 $00A2 WM_NCLBUTTONUP 当用户释放鼠标左键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外双左 $00A3 WM_NCLBUTTONDBLCLK 当用户双击鼠标左键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外按右 $00A4 WM_NCRBUTTONDOWN 当用户按下鼠标右键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外放右 $00A5 WM_NCRBUTTONUP 当用户释放鼠标右键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外双右 $00A6 WM_NCRBUTTONDBLCLK 当用户双击鼠标右键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外按中 $00A7 WM_NCMBUTTONDOWN 当用户按下鼠标中键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外放中 $00A8 WM_NCMBUTTONUP 当用户释放鼠标中键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外双中 $00A9 WM_NCMBUTTONDBLCLK 当用户双击鼠标中键的同时光标在某窗口的非客户区内时,会发送本消息。③参数:点击区域;④数据:坐标x/y;
区外按向 $00AB WM_NCXBUTTONDOWN 当光标位于窗口非工作区中并且用户按下鼠标前进后退按钮时发送。③参数:1后退(X1),2前进(X2);④数据:坐标类;
区外放向 $00AC WM_NCXBUTTONUP 当光标位于窗口非工作区中并且用户释放鼠标前进后退按钮时发送。③参数:1后退(X1),2前进(X2);④数据:坐标类;
区外双向 $00AD WM_NCXBUTTONDBLCLK 当光标位于窗口非工作区中并且用户双击鼠标前进后退按钮时发送。③参数:1后退(X1),2前进(X2);④数据:坐标类;

键盘事件——通知消息:

判断(消息) 为 键盘按下 获取键值(参数)
  为 键盘松开 获取键值(参数)

在键盘按下的动作事件里,把参数提交给获取键值的程序段,也就是键值
程序段 获取键值(键码)
  判断(键码)为 37 左方向键
  为 38 上方向键 为 65 字母A键

根据不同的键码去执行相应的功能函数(程序段),按键对应的虚拟键代码请查看下面的表
中文名字 常量数值 英文名称 释义
键盘起始 $0100 WM_KEYFIRST 用于WinCE系统,本消息在使用获取消息查探消息函数时,用于过滤键盘消息
键盘按下 $0100 WM_KEYDOWN 当一个非系统按键被按下时(键没有被按下),会发送本消息给拥有键盘焦点的窗口。③参数:键码;④数据:扫描码
键盘松开 $0101 WM_KEYUP 当一个非系统按键被释放弹起时(键没有被按下),会发送本消息给拥有键盘焦点的窗口。③参数:键码;④数据:扫描码
键入字符 $0102 WM_CHAR 按下某按键,并已发出按下、松开消息,本消息包含被按下的按键的字符码。③参数:字码;④数据:扫描码
敲击按键 $0103 WM_DEADCHAR \"死字符\"消息,当使用翻译消息函数翻译WM_KEYUP消息时,发送本消息给拥有键盘焦点的窗口。③参数:键码;④数据:扫描码
ALT键按下 $0104 WM_SYSKEYDOWN 当用户按住键的同时又按下其它键时,发送本消息给拥有焦点的窗口。③参数:键码;④数据:扫描码
ALT键松开 $0105 WM_SYSKEYUP 当用户释放一个按键的同时键还按着时,发送本消息给拥有焦点的窗口。③参数:键码;④数据:扫描码
ALT键字符 $0106 WM_SYSCHAR 当WM_SYSKEYDOWN消息被翻译消息函数翻译后,发送本消息给拥有焦点的窗口,注:键被按下。③参数:键码;④数据:扫描码
ALT敲字符 $0107 WM_SYSDEADCHAR \"死字符\"消息,当使用翻译消息函数翻译WM_SYSKEYDOWN消息时,发送本消息给拥有键盘焦点的窗口。③参数:键码;④数据:扫描码
键盘结束 $0108 WM_KEYLAST 用于WinCE系统,本消息在使用获取消息查探消息函数时,用于过滤键盘消息
输入开始 $010D WM_IME_STARTCOMPOSITION 在输入法因为击键生成组合字符串之前立即发送。③参数:0;④数据:0
输入结束 $010E WM_IME_ENDCOMPOSITION 在输入法结束组合时发送到应用程序。③参数:0;④数据:0
输入更改 $010F WM_IME_COMPOSITION 当输入法因击键而更改组合状态时,发送到应用程序。③参数:字符;④数据:方式
输入启动 $281 WM_IME_SETCONTEXT 应用程序的窗口激活时,系统将向应用程序发送消息。③参数:0非活动,非0活动;④数据:1显候选窗口(左移位数是索引几),
15显所有候选,0x40000000显指南窗口,0x80000000显合成窗口
输入改变 $282 WM_IME_NOTIFY 可使用WM_IME_NOTIFY消息来通知关于IME窗口状态的常规改变。③参数:命令;④数据:相应数据
输入控制 $283 WM_IME_CONTROL 可使用WM_IME_CONTROL消息来改变字母组合窗口的位置。③参数:命令;④数据:相应数据
输入超出 $284 WM_IME_COMPOSITIONFULL 用户接口窗口不能增加编码窗口的尺寸时,IME用户接口窗口将发送消息。③参数:0;④数据:0
输入选择 $285 WM_IME_SELECT 系统发此消息以便选择一个新的IME输入法。③参数:0未选,非0已选;④数据:区域
输入打字 $286 WM_IME_CHAR 当打开输入法输入文字时发送消息。③参数:0字码;④数据:扫描码
输入请求 $288 WM_IME_REQUEST 应用程序请求输入法时,触发发送本消息。③参数:命令;④数据:相应数据
输入按下 $290 WM_IME_KEYDOWN 在输入法录字窗口中按下按键时,触发发送本消息。③参数:0键码;④数据:扫描码
输入松开 $291 WM_IME_KEYUP 在输入法录字窗口中释放按键时,触发发送本消息。③参数:0键码;④数据:扫描码

虚拟键代码表:

0x01 鼠标的左键 0x02 鼠标的右键 0x03 Ctrl+Break 0x04 鼠标的中键 0x08 Backspace键 0x09 Tab键 0x0C Clear键 0x0D Enter键
0x10 Shift键 0x11 Ctrl键 0x12 Alt键 0x13 Pause键 0x14 Caps 0x15 IME-朝鲜日文模式 0x16 IME-打开 0x17 IME-Junja模式
0x18 IME-最终模式 0x19 IME-汉字 0x1A IME-关闭 0x1B Ese键 0x1C IME-转换 0x1D IME-不转换 0x1E IME-接受 0x1F IME-模式更改请求
0x20 空格键 0x21 上页键 0x22 下页键 0x23 End键 0x24 Home键 0x25 左键(←) 0x26 上键(↑) 0x27 右键(→)
0x28 下键(↓) 0x29 Select键 0x2A PRINT键 0x2B EXECUTE键 0x2C (抓屏) 0x2D Ins键 0x2E Del键 0x2F Help键
0x30 0键 0x31 1键 0x32 2键 0x33 3键 0x34 4键 0x35 5键 0x36 6键 0x37 7键
0x38 8键 0x39 9键 0x41 A键 0x42 B键 0x43 C键 0x44 D键 0x45 E键 0x46 F键
0x47 G键 0x48 H键 0x49 I键 0x4A J键 0x4B K键 0x4C L键 0x4D M键 0x4E N键
0x4F O键 0x50 P键 0x51 Q键 0x52 R键 0x53 S键 0x54 T键 0x55 U键 0x56 V键
0x57 W键 0x58 X键 0x59 Y键 0x5A Z键 0x5B 左win键 0x5 右win键 0x5 菜单键 0x5 休眠键
0x60 数字键0键 0x61 数字键1键 0x62 数字键2键 0x62 数字键3键 0x64 数字键4键 0x65 数字键5键 0x66 数字键6键 0x67 数字键7键
0x68 数字键8键 0x69 数字键9键 0x6A 数字*键 0x6B 数字+键 0x6C 分隔符键 0x6D 数字-键 0x6E 数字.键 0x6F 数字/键
0x70 F1键 0x71 F2键 0x72 F3键 0x73 F4键 0x74 F5键 0x75 F6键 0x76 F7键 0x77 F8键
0x78 F9键 0x79 F10键 0x7A F11键 0x7B F12键 0x7C F13键 0x7D F14键 0x7E F15键 0x7F F16键
0x80 F17键 0x81 F18键 0x82 F19键 0x83 F20键 0x84 F21键 0x85 F22键 0x86 F23键 0x87 F24键
0x90 数字开关键 0x91 ScrollLock键 0xA0 左SHIFT键 0xA1 右SHIFT键 0xA2 左Ctrl键 0xA3 右Ctrl键 0xA4 左ALT键 0xA5 右ALT键
0xA6 后退键 0xA7 前进键 0xA8 刷新键 0xA9 停止加载 0xAA 搜索键 0xAB 收藏键 0xAC 主页键 0xAD 静音键
0xAE 音量减 0xAF 音量加 0xB0 下一曲 0xB1 上一曲 0xB2 停止播放 0xB3 播放/暂停 0xB4 邮件键 0xB5 选曲键
0xB6 程序1键 0xB7 程序2键 0xBB 通用+键 0xBC 通用,键 0xBD 通用-键 0xBE 通用.键 0xE5 IME-PROCESS 0xF6 Attn 键
0xF7 CrSel键 0xF8 ExSel键 0xF9 EraseEOF键 0xFA Play键 0xFB Zoom键 0xFC 预留 0xFD PA1键 0xFE Clear键

菜单事件——通知消息:

中文名字 常量数值 英文名称 释义
初始菜单 $0116 WM_INITMENU 当一个菜单将被激活时发送本消息,它发生在用户点击了某菜单项或按下某菜单键。它允许程序在显示前更改菜单。③参数:菜单;④数据:0
弹出菜单 $0117 WM_INITMENUPOPUP 当一个下拉菜单或子菜单将被激活时发送本消息,它允许程序在它显示前更改菜单,却不更改全部菜单。③参数:菜单;④数据:低位=序号,高位=是否菜单
选择菜单 $011F WM_MENUSELECT 当用户选择一条菜单项时,发送本消息给菜单的所有者(一般是窗口)。③参数:低位=序号,高位=标志;④数据:菜单
菜单激活 $0120 WM_MENUCHAR 当菜单已被激活且用户按下了某菜单字符键(括号括着、带下划线,不同于快捷键)。③参数:低位=序号,高位=标志$10弹出菜单,$2000菜单;④数据:菜单;
模框空载 $0121 WM_ENTERIDLE 当一个模态对话框或菜单进入空闲状态时,发送本消息给它的所有者,就是在处理完先前的消息后,消息队列为空时。③参数:0对话框,2菜单;④数据:窗口对象
菜单右键 $0122 WM_MENURBUTTONUP 本消息允许程序为菜单项提供一个感知上下文的菜单(即快捷菜单)。③参数:序号;④数据:菜单
菜单点击 $0123 WM_MENUDRAG 当用户拖动菜单项时,发送本消息给拖放菜单的拥有者,可让菜单支持拖拽,可使用OLE拖放传输协议启动拖放操作。③参数:序号;④数据:菜单
单击菜单 $0126 WM_MENUCOMMAND 当用户在一个菜单上作出选择时,会发送本消息,菜单要具有MNS_NOTIFYBYPOS风格(在MENUINFO结构体中设置)。③参数:序号;④数据:菜单
进入菜单循环 $211 WM_ENTERMENULOOP 发送本消息通知应用程序的主窗口已进入菜单循环模式。③参数:是否显示菜单;④数据:0
退出菜单循环 $212 WM_EXITMENULOOP 发送本消息通知应用程序的主窗口已退出菜单循环模式。③参数:是否快捷菜单;④数据:0
菜单切换 $213 WM_NEXTMENU 当使用左箭头光标键或右箭头光标键在菜单条与系统菜单之间切换时触发本消息,③参数:键码;④数据:MDINEXTMENU

鼠标事件——通知消息:

捕获光标 $0020 WM_SETCURSOR 若鼠标光标在某窗口内移动且鼠标没被捕获时,就会发送本消息给某个窗口。③参数:窗口;④数据:命中消息
拖曳后窗 $0021 WM_MOUSEACTIVATE 当鼠标光标在某个未激活窗口内,而用户正按着鼠标的某个键时,会发送本消息给当前窗口。③参数:父窗;④数据:命中消息;返回值:1激活窗口不丢弃鼠标,2激活丢弃鼠标,3不激活不丢弃,4不激活丢弃鼠标
点击右键 $007B WM_CONTEXTMENU 当用户在某窗口中点击右键就发送本消息给该窗口,设置右键菜单。③参数:窗口;④数据:屏幕坐标x/y
单击左键 $0111 WM_COMMAND 用户选择一条菜单命令项或某控件发送一条通知消息给其父窗,或某快捷键被翻译时,本消息被发送。③参数:低位=编号,高位=事件;④数据:控件;菜单无高位事件,快捷键高位1,两者数据都是0
单击窗口 $0112 WM_SYSCOMMAND 当用户选择一条系统菜单命令、用户最大化或最小化或还原或关闭时。③参数:命令;④数据:点菜单时鼠标位置
鼠标起始 $0200 WM_MOUSEFIRST 鼠标移动时发生(与WM_MOUSEMOVE等值),常用于判断鼠标消息的范围
鼠标移动 $0200 WM_MOUSEMOVE 当鼠标在窗口客户区移动时。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
按下左键 $0201 WM_LBUTTONDOWN 当鼠标左键在窗口客户区按下。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
释放左键 $0202 WM_LBUTTONUP 当鼠标左键在窗口客户区放开。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
双击左键 $0203 WM_LBUTTONDBLCLK 当鼠标左键在窗口客户区双击。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
按下右键 $0204 WM_RBUTTONDOWN 当鼠标右键在窗口客户区按下。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
释放右键 $0205 WM_RBUTTONUP 当鼠标右键在窗口客户区放开。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
双击右键 $0206 WM_RBUTTONDBLCLK 当鼠标右键在窗口客户区双击。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
按下中键 $0207 WM_MBUTTONDOWN 当鼠标中键在窗口客户区按下。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
释放中键 $0208 WM_MBUTTONUP 当鼠标中键在窗口客户区放开。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
双击中键 $0209 WM_MBUTTONDBLCLK 当鼠标中键在窗口客户区双击。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
滚轮转动 $020A WM_MOUSEWHEEL 当滚动鼠标滚轮时。③参数:高位120向后,-120向前;低位1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
鼠标结束 $020A WM_MOUSELAST WM_MBUTTONDBLCLK的别名,通常用于判断鼠标消息的范围,对应的还有WM_MOUSEFIRST(鼠标起始)
失去鼠标 $215 WM_CAPTURECHANGED 当它失去捕获的鼠标时,发送本消息给窗口。③参数:0;④数据:窗口
移动消息 $216 WM_MOVING 当用户在移动窗口时发送本消息,通过本消息应用程序以监视窗口大小和位置,也可修改它们。③参数:0;④数据:矩形类
拖放文件 $233 WM_DROPFILES 鼠标拖放时,放下事件产生时发送本消息,比如:文件拖放功能。③参数:文件;④数据:0
鼠标经外 $2A0 WM_NCMOUSEHOVER 当光标悬停在窗口的非工作区上的达到指定时间发送本消息。③参数:命中值;④数据:坐标类;
鼠标经过 $2A1 WM_MOUSEHOVER 当光标悬停在窗口的工作区上的达到指定时间发送本消息。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;
鼠标离外 $2A2 WM_NCMOUSELEAVE 当光标离开之前调用 TrackMouseEvent 中指定的窗口的非工作区时发送本消息。③参数:0;④数据:0;
鼠标离开 $2A3 WM_MOUSELEAVE 鼠标离开控件时,触发发送本消息。③参数:1左键,2右键,4SHIFT,8CTRL,$10中键,$20=X1,$40=X2;④数据:坐标x/y;

系统事件——通知消息:

配置更新 $001A WM_WININICHANGE 读写"win.ini"时会发送本消息给所有顶层窗口,通知其它进程该文件已被更改。③参数:0;④数据:名称
设备模式 $001B WM_DEVMODECHANGE 改变设备模式设置("win.ini")时,处理本消息的应用程序可重新初始化它们的设备模式设置③参数:0;④数据:名称
系统关机 $0011 WM_QUERYENDSESSION 关机或注销时系统会按优先级给各进程发送,告诉应用程序要关机或注销了。③参数:0;④数据:0正在关闭事件;1文件要换或资源耗尽;4强制关闭程序;8用户正在注销
系统变色 $0015 WM_SYSCOLORCHANGE 当系统颜色改变时,发送本消息给所有顶级窗口。③参数:0;④数据:0
开始关机 $0016 WM_ENDSESSION 关机或注销时系统会发出消息给应用程序,通知程序会话结束。③参数:0会话结束,非0正在结束;④数据:0正在关闭事件;1文件要换或资源耗尽;4强制关闭程序;8用户正在注销
时间错误 $0017 WM_SYSTEMERROR 系统时间错误。③参数:0;④数据:0
字库更新 $001D WM_FONTCHANGE 当系统的字体资源库变化时发送本消息给所有顶级窗口。③参数:0;④数据:0
时间改变 $001E WM_TIMECHANGE 当系统的时间变化时发送本消息给所有顶级窗口。③参数:0;④数据:0
系统暂停 $0048 WM_POWER 当系统将要进入暂停状态时发送本消息(适用于16位的windows)③参数:1即将挂起,2挂起恢复,3含两种;④数据:0
传递数据 $004A WM_COPYDATA 当一个应用程序传递数据给另一个应用程序时发送本消息。③参数:窗口;④数据: COPYDATASTRUCT 结构
取消日志 $004B WM_CANCELJOURNAL 当用户取消程序日志激活状态时,发送本消息给那个应用程序。该消息使用空窗口句柄发送。③参数:0;④数据:0
用户出入 $0054 WM_USERCHANGED 当用户已登入或退出后发送本消息给所有窗口;当用户登入或退出时以及系统更新用户设置时,立即发送本消息。③参数:0;④数据:0; 自 Windows Vista 起,不支持此消息。
调分辨率 $007E WM_DISPLAYCHANGE 当显示器的分辨率改变后,发送本消息给所有窗口。③参数:位深;④数据:分辨率x/y
电源消息 $218 WM_POWERBROADCAST 通知它有关电源管理事件。③参数:4正在扶起,7正在恢复,10状态更改,18自动恢复,32781设置更改;④数据:无/POWERBROADCAST_SETTING/PBT_POWERSETTINGCHANGE
硬件修改 $219 WM_DEVICECHANGE 当设备的硬件配置改变时,发送本消息给应用程序或设备驱动程序。③参数:事件;④数据:结构
主题更改 $31A WM_THEMECHANGED 在主题更改事件后广播到每个窗口。③参数:0;④数据:0
消息保留 $0000 PM_NOREMOVE 查探消息处理后,消息不从队列里除掉。
消息清除 $0001 PM_REMOVE 查探消息处理后,消息从队列里除掉。
消息空闲 $0002 PM_NOYIELD 此标志使系统不释放等待调用程序空闲的线程。
posted @ 2023-12-02 09:08  火轮  阅读(103)  评论(0)    收藏  举报