极语言2-1 窗口(对话框/控件)——发送/接收消息,读写控件文本/字体/热键——控制消息

窗口(对话框/控件)——发送/接收消息:
窗口消息可以使用发送消息向窗口发送消息,也可以在窗体消息这里处理接收的消息
初级程序默认的代码都有窗体消息这个程序段,在这里可以控制键盘鼠标等各种消息
程序段 窗体消息(窗口,消息,参数,数据)
  文本 内容[16]="数值"-数据;
  判断(消息)为 窗口创建{信息框(0,"创建")}
  为 程序关闭{停止(0)}
  为 窗口移动{窗体~内容}
  为 窗口缩放{窗体~内容}
  为 单击左键{左键点击(参数)}
  否则 处理窗口(窗口,消息,参数,数据)
结束
上面这段代码是在收到窗口创建消息时, 弹出信息框;在收到程序关闭消息时停止程序运行
在收到窗口移动消息时,显示窗口的位置(左顶);在收到窗口缩放消息时,显示窗口的大小(宽高)
当然也可以使用发送消息给窗口,让程序来处理;发送消息(窗体,窗口关闭,0,0)
有些消息主要常用来接收处理,例如窗口改变或键盘鼠标等;有些消息就常用来发送,如获取设置文本等
中文名字 常量数值 英文名称 释义
窗口创建 1 WM_CREATE 新建一个窗口。③参数:0;④数据:创建窗口的数据结构
程序关闭 2 WM_DESTROY 销毁一个窗口。③参数:0;④数据:0
窗口移动 3 WM_MOVE 移动一个窗口。③参数:0;④数据:xy坐标(各占16位)
窗口缩放 5 WM_SIZE 改变一个窗口的大小。③参数:0=已调整;1最小化;2最大化,3其它窗口还原;4其它窗口最大化;④数据:宽高大小(各16位)
窗口激活 6 WM_ACTIVATE 一个窗口被激活或失去激活状态。③参数:0关闭,1非鼠标激活,2鼠标激活;④数据:参数为0是激活窗口,非0是停用的窗口
获得焦点 7 WM_SETFOCUS 将键盘焦点转向一个窗口。③参数:失去焦点的窗口,可为0;④数据:0
失去焦点 8 WM_KILLFOCUS 使一个窗口失去焦点。③参数:接收焦点的窗口,可为0;④数据:0
可用状态 10 WM_ENABLE 使一个窗口处于可用状态。③参数:0为禁用,非零启用;④数据:0
是否重绘 11 WM_SETREDRAW 设置窗口是否能重绘。③参数:0不重绘,非0重绘;④数据:0
窗口重绘 15 WM_PAINT 当需要绘制一部分应用窗口的时候,发送本消息给所有者程序。③参数:0;④数据:0
窗口关闭 $0010 WM_CLOSE 用户关闭窗口时会发送本消息,紧接着会发送程序关闭消息。③参数:0;④数据:0
消息结束 $0012 WM_QUIT 提交退出函数提交一个代码数值,程序收到此消息,用以关闭消息循环,结束程序的运行。③参数:退出码;④数据:0
窗口恢复 $0013 WM_QUERYOPEN 最小化的窗口即将被恢复以前的大小位置。③参数:0;④数据:0
擦除背景 $0014 WM_ERASEBKGND 当一个窗口的背景必须被擦除时本消息会被触发(如:窗口大小改变时)。③参数:设备;④数据:0
显示窗口 $0018 WM_SHOWWINDOW 发送本消息给一个窗口,以便隐藏或显示该窗口。③参数:0隐藏,非0显示;④数据:0不变,1最小化,2最大化,3正在还原,4已被还原
界面激活 $001C WM_ACTIVATEAPP 窗口进程激活状态改动,正被激活的窗口属于不同的应用程序。③参数:0停用,非0激活;④数据:线程标识
模态窗口 $001F WM_CANCELMODE 发送本消息来取消某种正在进行的模态(操作)(如鼠示捕获),例如:启动一个模态窗口时,父窗会收到本消息;③参数:0;④数据:0
拖放小窗 $0037 WM_QUERYDRAGICON 本消息发送给最小化的窗口,当该窗口将被拖放而其窗口类中没有定义图标,应用程序能返回一个图标或光标的句柄。③参数:0;④数据:0
显存不足 $0041 WM_COMPACTING 显示内存已经很少了。③参数:时间比;④数据:0。例如,0x8000表示压缩内存所用的 CPU 时间的 50%。
首创窗口 $0081 WM_NCCREATE 当某窗口首次被创建时,本消息在WM_CREATE消息发送前发送。③参数:0;④数据:创建窗口的全部数据
窗口初始 $0110 WM_INITDIALOG 在某对话框程序被显示前发送本消息给该对话框程序,通常用本消息对控件进行一些初始化工作和执行其它任务。③参数:控件;④数据:其它
循环调整 $231 WM_ENTERSIZEMOVE 当某窗口进入移动或调整大小的模式循环时,本消息发送到该窗口。③参数:0;④数据:0
退出调整 $232 WM_EXITSIZEMOVE 确定用户改变窗口大小或改变窗口位置的事件是何时完成的。③参数:0;④数据:0
窗口绘制 $317 WM_PRINT 请求窗口在指定的设备(如打印机)绘制自身。③参数:设备;④数据:1绘可见窗口,2绘非工作区,4绘工作区,8擦除背景,16绘所有可见子窗,32绘所有窗口
绘客户区 $318 WM_PRINTCLIENT 请求窗口在指定的设备(如打印机)绘制其客户区。③参数:设备;④数据:1绘可见窗口,2绘非工作区,4绘工作区,8擦除背景,16绘所有可见子窗,32绘所有窗口

读写控件文本/字体/热键——控制消息:

1.读写窗体/标签/文本框/按钮/单选钮/复选钮/分组框/组合框/高级组合框里的文字内容
发送消息(窗体,设置文本,0,"标题名称")  这个代码可以修改窗口的标题栏内容
文本 内容[64];整数 长度=发送消息(文本框1,获取文本,64,内容)  这个代码可以获取编辑框的内容
获取文本时第三参数要指定缓冲区的长度,并不是文字长度,返回值是文本内容的真实长度,接收文本的缓冲区应该用一个比较大的容量
内容这个缓冲区长度为64,那就只能获取63字节数据,因为文字内容必须以0结尾,如果填满了64字节,就会认为后面还有文字没有读取完
如果文本框内容比较多,不清楚有多少字,就需要先获取文字的长度,然后申请相应长度的内存缓冲区
整数 长度=发送消息(文本框1,文本长度,0,0) 真实长度不计算文字末尾的0
整数 内存=申请内存(长度+1) 申请的内存长度要比真实长度多一字节
如果是宽字符模式,需要多加三字节;动态申请内存缓冲区不能使用 文本 内容[长度]这种方法,只能用申请内存相关的函数
发送消息(文本框1,获取文本,长度+1,内存) 指定缓冲区的长度也要加上一
释放内存(内存) 内存使用完之后,要释放内存。注意内存这个变量使用了三次
2.修改控件的字体
创建字体可以使用创建字体和新建字体这两个函数,新建字体需要使用逻辑字体类这个结构体
逻辑字体类 字号(高度=-12,名字="微软雅黑")添加名为字号的逻辑字体类,高度也就是字体大小,使用负数表示
申请一个整数变量比如叫字体,然后在窗体启动时用 字体= 新建字体(字号),也就创建了一个字体
还有一种不用逻辑字体的创建方法:字体=创建字体(15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体")
第一个参数逻辑高度是字体大小,详见:创建字体(逻辑高度,字符宽度,擒纵角,取向角,粗细,斜体,下划线,删除线,字符集,输出精度,剪辑精度,输出质量,间距和字体,字体名称)
创建字体函数不支持微软雅黑等字体,参数也太多,建议使用新建字体这个函数,只需要逻辑字体类这一个结构体参数即可创建
创建字体之后可以使用发送消息(按钮1,指定字体,字体,0)来指定标签,文本框,列表框,按钮等控件的字体
3.为窗口指定热键
发送消息(窗体,设置热键,0x71,0) 当用户按下F2键时,系统将激活窗口。键码参见键盘事件
第三参数的低8位是键码,高8位是组合类型:1 SHIFT,2 CTRL,4 ALT,8 扩展;参数为0取消热键关联
发送消息(窗体,设置热键,0x271,0) F2键前面加上2,高位就是CTRL,按下CTRL+F2就能激活主窗口 当用户按下热键时,系统会生成一条 单击窗口 消息,交给处理窗口函数,会弹出该窗口;设置热键不能指定子窗口
中文名字 常量数值 英文名称 释义
设置文本 12 WM_SETTEXT 设置一个窗口的文本。③参数:0;④数据:内容文本
获取文本 13 WM_GETTEXT 复制窗口的文本到缓冲区。③参数:最大长度;④数据:文本缓冲区
文本长度 14 WM_GETTEXTLENGTH 得到窗口的文本长度(不含结束符)。③参数:0;④数据:0
指定字体 $30 WM_SETFONT 指定控件所用字体。③参数:字体;④数据:0不重绘;非0立即重绘
获取字体 $31 WM_GETFONT 得到当前控件绘制其文本所用的字体。③参数:0;④数据:0
设置热键 $32 WM_SETHOTKEY 为某窗口关联一个热键。③参数:键码/高位1SHIFT,2CTRL,4ALT,8扩展;④数据:0
获取热键 $33 WM_GETHOTKEY 为某窗口关联一个热键。③参数:0;④数据:0;返回值:键码/高位1SHIFT,2CTRL,4ALT,8扩展
单击窗口 $112 WM_SYSCOMMAND 当用户按下 设置热键 指定的按键。③参数:键值;④数据:窗口
热键消息 $312 WM_HOTKEY 当用户按下由注册热键函数注册的热键时。③参数:-1窗口,-2桌面;④数据:低字=1Alt,2CTRL,4SHIFT,8WIN;高字=键码
命令消息 $319 WM_APPCOMMAND 用户点击应用程序命令按钮或键盘命令键(如导航刷新搜索)③参数:窗口;④数据:命令/设备/按键
posted @ 2023-12-02 08:48  火轮  阅读(37)  评论(0)    收藏  举报