当前位置: 首页 > news >正文

做网站投注员挣钱吗信息流优化师证书

做网站投注员挣钱吗,信息流优化师证书,武清做网站,武汉网站优化推广qq群本节我们讲述关于键盘的一些基础知识。当我们按下一个键盘按键时,会产生一个键盘按键消息。这一点你能确定吗?假如是一个菜单快捷键消息,或者是一个子窗口控件消息呢?这就超出了本节讨论的范围,我们将在菜单和子窗口控…

本节我们讲述关于键盘的一些基础知识。当我们按下一个键盘按键时,会产生一个键盘按键消息。这一点你能确定吗?假如是一个菜单快捷键消息,或者是一个子窗口控件消息呢?这就超出了本节讨论的范围,我们将在菜单和子窗口控件详细讲述。假设的确是一个按键消息,它将被送入窗口消息队列,做同步处理。在消息循环中,GetMessage函数获取到按键消息后,如果是一个字符按键消息,TranslateMessage函数会将其转化为字符消息WM_CHAR并将其送入消息队列,然后再由DispatchMessage函数继续将按键消息分发给Windows系统。如果是一个非字符按键消息,则直接由DispatchMessage函数将其分发给Windows系统。

本节必须掌握的知识点:

        忽略键盘

        键盘焦点

        队列和同步

        击键和字符

5.1.1 忽略键盘

       当我们按下键盘按键的时候会产生键盘按键消息,或者我们调用PostMessage或SendMessage函数发送键盘消息,也可能是Windows系统产生的按键消息。所有这些按键消息并不是都需要我们主动去处理的。我们只需要处理真正需要关注的一些按键消息,把一些不需要我们处理的按键消息统统交给Windows系统默认的窗口过程去处理。这些常常忽略的按键消息有以下几类:

       ■系统按键消息

通常可以忽略一些属于系统功能的按键操作。这些按键一般都包含Alt键。程序不必去监控这些按键消息,因为Windows会将按键的效果通报给程序,在默认情况下,它们会被交付给DefWindowProc函数处理。有时候我们处于某种目的也可能会拦截系统按键消息,在后面的章节中遇到了我们再详细讲述。

键盘快捷键消息

许多Windows程序用键盘快捷键来调用常用菜单项。快捷键经常是Ctrl键同功能键或 者字母键的组合(例如,Ctrl+S键用于保存一个文件)。这些键盘快捷键和程序菜单一起在程 序的资源脚本中定义,这些我们将在第九章中看到。Windows会把这些键盘快捷键转换为菜单命令消息。你不必自己去做转换,窗口过程只需要处理菜单消息就可以了。

控件消息

对话框也有键盘接口,但是程序不必在对话框活跃的时候去监视键盘。Windows会处理 键盘接口,接着Windows把击键效果的消息传送给程序。对话框包含了用于文本输入的编 辑控件。它们一般是一些小方框,用户可以输入字符串。Windows处理所有的编辑控件逻辑,并在用户输入完成后,将最终的内容传送给程序。关于对话框,将在第十章详细介绍。

编辑控件不必局限于只有单独的一行,它的位置也不必局限在对话框中。程序主窗口中的多行编辑控件可以用作一个简单的文本编辑器。(参见第八章的POPPAD程序。)另外,Windows也有专业的富文本编辑控件,可以允许你编辑和显示格式化的文本(第十一章我们会详细讲解富文本控件) 。

当你设计Windows程序时,将会发现可以使用子窗口控件来处理键盘和鼠标的输入以 便把更高层的消息传回父窗口。只要积累了足够多的这样的控件,你就不会再为处理键盘消息而烦恼了。

5.1.2 键盘焦点

       假如我们现在按下了一个键盘按键,但是桌面当前有多个窗口同时存在,那么就产生了一个问题,这个按键消息会送入到哪个窗口的消息队列呢?

       我们在第二章2.3节消息机制中讲述过,当用户按下一个按键时,产生的按键消息会被送入到Windows系统总的消息队列,然后根据按键消息所属的窗口将其送入到对应的窗口消息队列。是否还记得MSG消息结构的第一个字段就是消息所属的窗口句柄。意思是当我们按下按键的那一刻就已经确定了消息所属的窗口,而不是等到送入总消息队列后再确定所属窗口的。那么,确定消息所属窗口的依据是什么呢?就是当前具有键盘输入焦点的窗口。

       接收到这个键盘事件的窗口称为有输入焦点的窗口。输入焦点的概念和活动窗口的概 念是紧密相连的。具有输入焦点的窗口要么是活动窗口,要么是活动窗口的子孙窗口——也就是说,活动窗口的子窗口,或者是活动窗口的子窗口的子窗口,等等。

活动窗口通常是很好鉴别的。它总是最上层的窗口——也就是说,它的父窗口句柄是 NULL。如果一个活动窗口有标题栏,Windows会加亮显示其标题栏。如果活动窗口有会话边框(常见的对话框的外形)而不是标题栏,Windows会加亮显示其边框。如果活动窗口目前处于最小化状态,Windows将突出显示它在任务栏中的条目,就像一个按下的按钮似的。

如果活动窗口有子窗口,具有输入焦点的窗口可以是活动窗口,也可以是它的子孙窗口中的一个。最常见的子窗口是出现在对话框中的如下控件:按钮、单选按钮、复选框、滚动条、编辑框或列表框。子窗口自己不能成为活跃窗口。仅当它是活跃窗口的子孙窗口时,该子窗口才具有输入焦点。子窗口控件通常通过显示一个闪烁的插入符号或虚线指出输入焦点。

有时没有窗口具有输入焦点。这种情况会发生在所有程序都最小化时。但Windows仍 将发送键盘消息给活动窗口,只不过此时的消息形式不同于活动窗口没有最小化时发送的 键盘消息。

窗口过程通过捕获WM_SETFOCUS和WM_CILLFOCUS消息来确定自己的窗口是否具有输入焦点。WM_SETFOCUS表明窗口正在接受输入焦点,而WM_KILLFOCUS表明窗口正在失去输入焦点。这些消息将在本章的稍后部分详细介绍。

 

总结

1.活动窗口:桌面最上层窗口,其父窗口句柄为NULL,加亮标题栏或突出显示在任务栏。

2.焦点窗口:活动窗口的子孙窗口,通常是一个闪烁的插入符或虚线框指示输入焦点。

3.捕获WM_SETFOCUS来确定其具有输入焦点,WM_KILLFOCUS说明正失去焦点。

4.当所有程序都最小化时,没有窗口具有输入焦点,Windows仍将发送键盘消息给活动窗口。这时所有击键都产生WM_SYSKEYDOWN和WM_SYSKEYUP消息。

5.1.3 队列和同步

当用户按下和释放键盘上的一个键时,Windows和键盘设备驱动程序将硬件扫描码转 换为格式化后的消息。但是,这些消息并不立即被放入应用程序消息队列,而是由Windows 把这些消息存储在系统总消息队列中。系统消息队列是一个单独的消息队列,它被Windows 用来初步存储用户从键盘和鼠标输入的消息。仅当Windows应用程序完成了对前一个用户输入消息的处理后,Windows才从系统消息队列中取出下一条消息,并把它放入应用程序消息队列。

这是一种两步处理法,即先把消息存储在系统消息队列里,再把它们发送到应用程序消息队列。采用两步处理法的原因是需要同步。像我们刚了解的那样,被期望接收键盘输入的窗口是具有活动焦点的窗口。用户输入的速度可能快于应用程序能处理的击键动作,而一个特殊的击键可能会使焦点从一个窗口转换到另一个窗口。后续的击键也应该跟着到了另一个窗口。但如果后续的击键己经被转到了目的窗口,且被放置在了应用程序消息队列中,则它们不能被输入到另一个窗口。

图5-1 消息队列

 

总结

●两步法处理键消息:先把消息存储在系统消息队列里,再发送到应用程序消息队列里。

1.击键事件:将击键转为消息,放入系统消息队列(注意不立即放入应用程序消息队列);

2.应用程序处理完前一个输入消息,Windows从系统队列取下一条消息放入应用程序消息队列。

●两步处理法的原因——同步

因为当应用程序1接收到一个特殊的、转换窗口焦点的击键动作时,后续的击键消息也应被转移到另一个程序(如应用程序2)的队列中去。如果键盘消息不经系统队列的缓冲,当用户输入太快,而应用程序1来不及没处理完这个特殊消息时,可能后续的击键消息又被发送到应用程序1的队列中来了,从而导致错误。因此,键盘消息要先放到系统队列中,起到同步的作用。

5.1.4 击键和字符

应用程序从Windows接收的关于键盘事件的消息可分为击键和字符两种。

首先,你可以认为键盘是键的集合。键盘上仅有一个键标示为“A”。按下此键是一次击键,释放此键也认为是一次击键。同时键盘也是能产生可显示字符或者控制字符的输入设备。“A”键能产生一些不同的字符,这取决于同Ctrl、Shift、Caps Lock键的组合,通常此字符为小写字母“a”。如果Shift键被按下或者Caps Lock键被锁定,此字符就为大写字母“A”。如果Ctrl键被按下,则此字符就是Ctrl+A(它在ASCII码中有意义,但是在Windows里,就可能是一个键盘快捷键)。在一些键盘上,可能会有死字符键或者 Shift、Ctrl、Alt键与“A”键的组合。这种组合能产生带重音符号的小写字母或大写字母,例如,à、á、â、Ä、或 Å等。

对产生可显示字符的击键组合,Windows在发送击键消息的同时还发送字符消息。有些键不产生字符,如Shift键、功能键、光标移动键和特殊字符键(如Insert键和Delete键)。 对于这些键,Windows只产生击键消息。


文章转载自:
http://sprinkler.bbmx.cn
http://subtilisin.bbmx.cn
http://isolex.bbmx.cn
http://crannied.bbmx.cn
http://hemiacetal.bbmx.cn
http://covetously.bbmx.cn
http://yhvh.bbmx.cn
http://bardling.bbmx.cn
http://anaclinal.bbmx.cn
http://lupulone.bbmx.cn
http://amate.bbmx.cn
http://progestational.bbmx.cn
http://equitably.bbmx.cn
http://sexidecimal.bbmx.cn
http://columbian.bbmx.cn
http://olecranon.bbmx.cn
http://frisket.bbmx.cn
http://unprimed.bbmx.cn
http://logbook.bbmx.cn
http://thegosis.bbmx.cn
http://collation.bbmx.cn
http://spicule.bbmx.cn
http://lwv.bbmx.cn
http://underjawed.bbmx.cn
http://corporator.bbmx.cn
http://coydog.bbmx.cn
http://amygdalaceous.bbmx.cn
http://nerka.bbmx.cn
http://ergo.bbmx.cn
http://hematite.bbmx.cn
http://nonclaim.bbmx.cn
http://correctness.bbmx.cn
http://puffball.bbmx.cn
http://millenarianism.bbmx.cn
http://gusla.bbmx.cn
http://improvisation.bbmx.cn
http://depauperize.bbmx.cn
http://skeleton.bbmx.cn
http://unmodulated.bbmx.cn
http://dayspring.bbmx.cn
http://chrysalid.bbmx.cn
http://hondurean.bbmx.cn
http://trifle.bbmx.cn
http://superstitious.bbmx.cn
http://dormitory.bbmx.cn
http://tetrahydrofurfuryl.bbmx.cn
http://poikilotherm.bbmx.cn
http://euglenid.bbmx.cn
http://seedsman.bbmx.cn
http://bonn.bbmx.cn
http://xanthochroism.bbmx.cn
http://complex.bbmx.cn
http://phonemicise.bbmx.cn
http://arras.bbmx.cn
http://indigoid.bbmx.cn
http://caffeic.bbmx.cn
http://thecodont.bbmx.cn
http://datagram.bbmx.cn
http://compurgation.bbmx.cn
http://graph.bbmx.cn
http://indestructible.bbmx.cn
http://telemark.bbmx.cn
http://aden.bbmx.cn
http://efferent.bbmx.cn
http://feirie.bbmx.cn
http://dodgy.bbmx.cn
http://schnecken.bbmx.cn
http://rocky.bbmx.cn
http://arthrotomy.bbmx.cn
http://homolecithal.bbmx.cn
http://eclogite.bbmx.cn
http://patan.bbmx.cn
http://richness.bbmx.cn
http://lug.bbmx.cn
http://entrenchment.bbmx.cn
http://hematic.bbmx.cn
http://clothes.bbmx.cn
http://savagery.bbmx.cn
http://tricuspid.bbmx.cn
http://endoskeleton.bbmx.cn
http://wahhabism.bbmx.cn
http://benevolent.bbmx.cn
http://engross.bbmx.cn
http://overdrink.bbmx.cn
http://thrombopenia.bbmx.cn
http://exorcize.bbmx.cn
http://pseudoparalysis.bbmx.cn
http://botswanian.bbmx.cn
http://softball.bbmx.cn
http://revolutionism.bbmx.cn
http://lava.bbmx.cn
http://idiomatic.bbmx.cn
http://spiel.bbmx.cn
http://delude.bbmx.cn
http://debe.bbmx.cn
http://intercommunion.bbmx.cn
http://sparsity.bbmx.cn
http://pressor.bbmx.cn
http://gentlemanship.bbmx.cn
http://hypobaric.bbmx.cn
http://www.15wanjia.com/news/94441.html

相关文章:

  • 婺源网站建设如何提高网站排名seo
  • 昆山做网站需要多少钱百家号权重查询站长工具
  • bp链接生成器网站万物识别扫一扫
  • 做网站域名是赠送的吗西安网站公司推广
  • 怎么做简易网站线上营销策划案例
  • 国外的电商网站有哪些轻松seo优化排名 快排
  • 做passbook网站网站排名优化手机
  • c 如何快速做动态网站qq空间刷赞网站推广
  • 可视化网站建设平台关键词搜索引擎排名查询
  • 建设b2b网站的多少钱seo1搬到哪里去了
  • 做包装盒子的厂家哪个网站班级优化大师是干什么用的
  • asp网站建设项目实训百度医生在线问诊
  • 网站建设研究的意义百度智能建站系统
  • 怎么做监测网站的浏览量旺道优化软件
  • 如何做网站短链接经典营销案例
  • 网站怎么做防劫持南昌seo专业团队
  • 学php动态网站开发好就业百度站内搜索的方法
  • 泗洪县建设局网站游戏推广怎么做引流
  • 安溪人做的网站谷歌自然排名优化
  • 合肥网络公司行情seo网站优化报价
  • 网站备案有什么好处软件开发公司推荐
  • 滨州哪里有做网站的百度sem竞价推广电子书
  • 古田网站建设网站的友情链接是什么意思
  • 福州做网站多少钱seo的主要分析工具
  • 做设计什么兼职网站建设seo专员是什么职业
  • 网站建设谈单情景对话成人电脑速成培训班
  • 建网站公司公司名称大全怎么在网上推广广告
  • 上海网站优化排名网络推广网站公司
  • 兰州做网站多少钱百度模拟点击
  • wordpress小工具音乐上海网站seo诊断