友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第54章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






}  



//……………………………………………………………………………………………………………………………………………………………………………… 



// WM_MAND handler for File|Save。  



void DMainFrame::OnFileSave()   



{  



AfxMessageBox(_T(〃File|Save mand selected。〃));  



}  



//……………………………………………………………………………………………………………………………………………………………………………… 



// WM_MAND handler for File|Save。  



void DMainFrame::OnFilePrint()   



{  



AfxMessageBox(_T(〃File|Print。。。 mand selected。〃));  



}  



                            第三节 快捷键消息响应  



键盘加速键有时也叫键盘捷径;它使用户可用键盘发出命令。Windows  

API提供了加速键表资源;用以保存加速键定义集合。AppWizard生成 

一单文档或多文档应用程序时;提供一个加速键表当通过调用 

CFrameWnd::LoadFrame来初始化一个帧(CFrameWnd)窗口时;则加速键 

表被自动连接到该帧窗口。  


…………………………………………………………Page 251……………………………………………………………

但有几点我们必须提出来说一下。首先;在Microsoft研制Windows 

时,并没有考虑到加速键系统。毕竟在当时看来,Windows所要支持 

的,最主要的应该是鼠标和菜单――毫无疑问,这是当时许多的GUI 

系统 (包括著名的Star   和Apple的Macintosh)得以成功的巨大原 

因。但出于Microsoft对第三方厂家软件的一贯支持,Windows系统中 

还是加入了加速键支持部分。在今天看来,Microsoft的这一步,实 

际上具有重大的意义,这至少可以从两个方面加以说明:并不能强迫 

所有的计算机都以鼠标作为输入手段,也并不是在所有的情形下,鼠 

标输入都较键盘输入为快,而且,对一些已经习惯了键盘输入的用户 

来说,使用鼠标输入即使只是一个很容易的转变,可毕竟也还是一个 

转变,用户需要对此有一个适应的过程。  



同时也应该指出的时,Microsoft在 

中特别提出,为增强Windows95应用程序的一致性,键盘命令 “不应 

该是进行特定操作的唯一方法。”实际上,指南中将加速键称为 “捷 

径”多少说明了Microsoft的倾向:它应该也只能是其它命令输入机 

制的一种补充而不是替代。它只应该是以鼠标作为主要输入手段的 

Windows系统的一种平衡。实际上,我们需要注意的一点就是,我们 

所建立的加速键,要么是使用菜单项进行逐项选择较麻烦,或者是我 

们在系统中使用频率相当高的部分,同时,加速键要尽量简单,否则 

加速键就失去了其本来的意义。遵循这些简单的原则,我们就能开发 

出用户界面简捷的应用程序。  



在本节中,为了理解的清晰,我们将首先简单的介绍一下键盘输入的 

处理,然后,我们将进行加速键的处理的介绍。我们将尽量介绍清楚 

键的使用规则及其运行机制,最后,作为一个小小的补充,我们将介 

绍如何动态地安装一个加速键表。  



下面,我们首先简单地介绍一下键盘输入。  



在中介绍了四种键盘输入:正文 

键,访问键,模式键以及快捷键。正文键指的是可打印字符:大小写 

字母,数字,标点符号及其它符号。用户期望用字符和数字键来产生 

可打印的字符和数字。而访问键 (记忆键)则我们在菜单中经常提到 

的与Alt键一起组合按下时,可以访问弹出式菜单项或对话框控制。 

由于可能与加速键间产生冲突,我们一般应避免将加速键定义为Alt 

键加上一个字母或数字键。模式键指的是封锁键与修改键。它们改变 

其它键或输入设备的动作。从IBM   PC机继承下来的标准Windows兼容 

键盘有三个封锁键:Caps Lock;Num Lock  和Scroll Lock。而修改键 

Shift;Ctrl和Alt使可用于定义的加速键成数倍的增长。任何在其它 

几类中定义的键都可以作为快捷键 (包括功能键F1至F12,光标移动 


…………………………………………………………Page 252……………………………………………………………

键Home;向上箭头,向下箭头等)。用这些  键与修改键结合,就能够 

产生许多加速键。当然,我想,使用104键键盘的用户一定也会注意 

到键盘上的Windows键及Application键,其中Windows键为一附加的 

修改键,为操作系统保留,而Application键则在程序中用于引导出 

上下文菜单。  



接下来我们看一看定义加速键的方法。这包含两个步骤。  



首先,我们需要创建一个加速键资源。  



                                   



                图5。 23 加速键表编辑器  



图5。23为系统显示的编辑加速键表时的特性对话框。其本身包含三 

列:ID,键以及类型。命令ID标识了当用户按下一个加速键时通过 

WM_MAND消息所传送的命令码。我们已经知道,系统调用消息映射 

进行识别是通过消息的ID号辨识的,因此,如果两条消息的ID号相 

同,它们所调用的消息处理函数就是相同的。形象一些地说,如果我 

们的程序中有菜单项与加速键所对应的ID号均为ID_TITLE_HELLO,那 

么,该加速键与该菜单项所完成的动作就是一样的。键域则标识了加 

速键所对应的键盘键。对于数字键或字母键,只需要简单的键入即 

可,而对于非打印字符,则需要使用虚拟码。当然,我们觉  



得在弄不清楚虚拟键的具体使用时,一个最省属的办法还是单击Next  

Key   Typed,然后直接指定我们所需要的键 (此时系统会 自动帮助我 

们采集消息并填入个域中)。如果不是使用上面的方法,我们所还需 

要做的最后一件事就是填写修改键域。按照Windows的建议,我们应 

首先考虑使用Ctrl键,然后再使用其它键。虽然使用Type域中ASCII 

选项以便区分所指定的键的大小写是可能的,然而,绝大多数的用户 

会对如此严格要求的键厌烦的,进一步的后果当然就是放弃该程序。 

所以,使用VirtKey几乎总是合适的选择。  


…………………………………………………………Page 253……………………………………………………………

                                     



                 图5。 24 加速键提示设计  



绝大多数时候我们需要为加速键创建一个菜单提示。这一步在前面的 

菜单设计中我们实际上已经遇到过,我们一般是在具有加速键的菜单 

项右侧显示的。如图5。24中,在Caption域中,  



Say &HellotCtrl+H  



的前一部分指示菜单项, “t”后面的部分则指定了该菜单项的加速 

键是Ctrl+H。  



  l 注意  



  l 初学者往往认为在菜单项中作上述设定以后就同时指定了相应的 

   加速键,而不用加速键编辑器进行指定。那么,菜单项中所指定 

   的加速键实际上是不开用的。  



      对没有相应的菜单项与之相对应的加速键,我们应通过一些 

      途径 (例如放在帮助文件中)告诉用户。(除非你本来就没 

      打算让用户知道。)  



  l 我们还需要再重新提一下加速键定义的原则 (参考):  



      尽可能指派用户容易操作的单键  



      使得修改-字母-键组合不是特别敏感 (避免混乱)。  



      对不使用Shift键的键或键组合动作的扩展和补充动作最好使 

      用Shift键组合。例如,如果使用Alt+Tab从上到下选择控件 

      焦点,那么使用Shift+Alt+Tab键组合就是一个很不错的安 

      排。  



      对作用范 围较大的动作用Ctrl键组合。例如,在大家熟悉的 

      记事本中,使用Home来移动到客户编辑区的光标所在行开始 


…………………………………………………………Page 254……………………………………………………………

处,而使用Ctrl+Home键从编辑区的任一�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!