第六章 键盘part2
来源:互联网 发布:营销分析报告数据图表 编辑:程序博客网 时间:2024/05/16 17:16
6.3字符消息
四类字符消息:
非系统字符WM_CHAR和WM_DEADCHAR消息是从WM_KEYDOWN得到的;而系统字符WM_SYSCHAR和WM_SYSDEADCHAR消息是从WM_SYSKEYDOWN消息得到的。在大多数情况下,Windows程序会忽略除WM_CHAR之外的任何消息。伴随四个字符消息的lParam参数与产生字符代码消息的按键消息之lParam参数相同。如果您的窗口消息处理程序需要晓得目前窗口是否处理Unicode消息,则它可以呼叫:fUnicode = IsWindowUnicode(hwnd);
消息顺序:
TranslateMessage函数从WM_KEYDOWN和WM_SYSKEYDOWN消息产生了字符消息,所以字符消息是夹在按键消息之间传递给窗口消息处理程序的。
1.按下A键的消息顺序:WM_KEYDOWN -- WM_CHAR --WM_KEYUP
2.按下Shift键,再按下A键,然后释放A键,再释放Shift键:WM_KEYDOWN -- WM_KEYDOWN -- WM_CHAR -- WM_KEYUP -- WM_KEYUP (Shift键本身不产生字符消息)
3.自动重复按住A键:WM_KEYDOWN -- WM_CHAR -- WM_KEYDOWN -- WM_CHAR -- WM_KEYDOWN -- WM_CHAR -- WM_KEYUP
处理控制字符:
如果需要读取输入到窗口的键盘字符,那么可以处理WM_CHAR消息。如果需要读取光标键、功能键、Delete、Insert、Shift、Ctrl以及Alt键,那么您可以处理WM_KEYDOWN消息。Tab、Enter、Backspace和Escape键处理成控制字符而不是虚拟键。
死字符消息:
Windows程序经常忽略WM_DEADCHAR和WM_SYSDEADCHAR消息
在某些非U.S.英语键盘上,有些键用于给字母加上音调。因为它们本身不产生字符,所以称之为「死键」。当使用者按下这个死键时,窗口消息处理程序接收到一个wParam等于音调本身的ASCII或者Unicode代码的WM_DEADCHAR消息。
6.4键盘消息和字符集
KeyView1:
字符集和字体
用于在屏幕上显示字符的字体和键盘接收的字符代码不一致。Windows支持三类字体-点阵字体、向量字体和(从Windows 3.1开始的)TrueType字体。在内定的设备内容下获得的点阵字体称为系统字体。您可通过呼叫带有SYSTEM_FONT标识符的GetStockObject函数来获得字体句柄。
StokFont:
TrueType和大字体:
点阵字体(在日文版Windows中带有附加字体)最多包括256个字符。
6.5插入符号(不是光标)
插入符号函数:
CreateCaret 建立与窗口有关的插入符号
SetCaretPos 在窗口中设定插入符号的位置
ShowCaret 显示插入符号
HideCaret 隐藏插入符号
DestroyCaret 撤消插入符号
另外还有取得插入符号目前位置(GetCaretPos)和取得以及设定插入符号闪烁时间(GetCaretBlinkTime和SetCaretBlinkTime)的函数。
一个消息队列只能支持一个插入符号。因此,如果您的程序有多个窗口,那么各个窗口必须有效地共享相同的插入符号。
通过处理WM_SETFOCUS和WM_KILLFOCUS消息,程序就可以确定它是否有输入焦点。
使用插入符号的主要规则很简单: 窗口消息处理程序在WM_SETFOCUS消息处理期间呼叫CreateCaret,在WM_KILLFOCUS消息处理期间呼叫DestroyCaret。
插入符号刚建立时是隐蔽的。如果想使插入符号可见,那么您在呼叫CreateCaret之后,窗口消息处理程序还必须呼叫ShowCaret。
TYPER程序:
- 第六章 键盘part2
- 第六章作业part2
- 第六章 键盘part1
- 第六章 键盘消息
- 计算机系统要素:第六章 Part2 汇编编译器(symbol)
- windows程序设计第六章 键盘
- 第六章 鼠标消息与键盘消息
- VC++60 第六章 键盘事件
- 第六章 6-1 键盘消息
- 机器学习第六课part2(梯度下降)
- python核心编程(第二版)参考答案(自制)--第六章·序列:字符串、列表和元组(Part2)
- Excel在统计分析中的应用—第六章—抽样与抽样分布-Part2(等距抽样)
- 第七章 鼠标part2
- 第八章 定时器part2
- 第十一章 对话框part2
- 第五章作业part2
- part2
- PART2
- ASP.NET - ListBox Web 服务器控件概述(下)
- 雷军:为什么马云马化腾创业那么容易成功 自己却需要煎熬数年
- 《赢取竞争的100+N工具箱》
- Java Servlet Filter实现Web页面执行时间过滤器
- (转)免费经济学---为什么我喜欢互联网
- 第六章 键盘part2
- 【转】ORACLE BLOB BFILE 文件的录入及读取
- 个人主页FLASH网站源码(FLASH+HTML+PSD+字体)[ym1z090903]
- Java TagSupport实现Web权限验证标签
- 在VLC控件中添加接口的方法
- 使用系统自带皮肤
- Java 小例子:行列式和鸡兔同笼问题
- 使用自定义皮肤
- 2009年上海市高效照明推广产品售后服务点名单