按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
…………………………………………………………Page 254……………………………………………………………
处,而使用Ctrl+Home键从编辑区的任一位置移动到文本的开
始处。
避免使用Alt键组合,因为它容易与标准的键盘对菜单和控制
的访问项冲突。另外,一些Alt的组合键已经留给Windows 系
统调用。
尽量指定用户熟悉的组合键。对Windows程序中,几乎很少有
程序指定除Ctrl+C别的键来作为 “复制”命令的加速键-虽
然并不是不可以这样。
应在可能的情况下让用户能够修改程序中的快捷键。(利用
热键控件几乎总是一个可行的选择。)
通常总是使用Esc键来终止一个正在处理的功能或操作。
作为参考,我们给出一部分Microsoft Windows所使用的标准
键盘命令于表5。3中。
表5。 3 Windows系统所使用的标准键盘命令
范 畴 键 入 描 述
Ctrl+Alt+Del Windows95/NT注册/注销
Alt+Tab 选择下一应用程序
Alt+Esc 选择下一活动的应用程序
Ctrl+Esc 显示Windows95开始菜单
Alt+Space 打开Windows95系统菜单
系统命令
PrtScr 屏幕快照至剪贴板
Alt+PrtScr 当前活动快照至剪贴板
Alt 激活/撤消应用程序菜单条
封锁DOS for Windows全屏
Alt+Enter
正文模式
Esc 取消当前模式或操作
Enter 对话框中缺省项选择
Tab 对话框中选择下一控制
…………………………………………………………Page 255……………………………………………………………
关闭当前活动的最顶一层
Alt+F4
窗口
显示一上下文菜单 (104键
Application键
盘中)
应用程序
模式
Shift+F10 显示一上下文菜单
F1 调用系统帮助
Shift+F1 调用上下文帮助
Ctrl+N File|New
Ctrl+O File|Open
文件命令
Ctrl+P File|Print
Ctrl+S File|Save
Ctrl+Z Edit|Undo
剪贴板命 Edit|Undo(向Windows3。x
Alt+BackSpace
令 兼容)
Ctrl+X Edit|Cut
续表5。3
Edit|Cut(向Windows3。x兼
Shift+Del
容)
Ctrl+C Edit|Copy
剪贴板命 Edit|Copy(向Windows3。x
Ctrl+Ins
令 兼容)
Ctrl+V Edit|Paste
Edit|Paste(向Windows3。x
Shift+Ins
兼容)
Ctrl+F4 关闭当前活动文档窗口
MDI命令 Ctrl+F6 激活下一文档窗口
Shift+Ctrl+F6 激活前一文档窗口
在本节的最后,我们简单的谈一下多重加速键表的问题。在所有加速
键函数中, Win32 API只有六个加速键函数。(MFC中没有封装加速
…………………………………………………………Page 256……………………………………………………………
键函数就是因为原因的加速键函数太少)。其中函数
LoadAccelerator用于从加速键资源中创建一个常驻RAM的加速键表,
而函数TranslateAccelerator测试一个特定的键盘消息是否与一个加
速键表命令入口相对应。限于篇幅的原因,在这里我们仅仅简单的作
一介绍,更详细的信息可以从Visual C++的帮助文件中获得。顺便说
一下,可以调用函数PreCreateWindow来在窗口显示以前装入一个加
速键表装入内存。此后我们可以用对函数PreTranslateMessage的调
用保证加速键表在适当的时候被调用。例如:
BOOL DWindowingClass::PreTranslateMessage(MSG *pMsg)
{
if(d_hAccel==NULL)
return FALSE;//我们不处理
return ::TranslateAccelertor(m_hWnd;d_hAccel;pMsg);
}
作为对本章中键盘消息响应的结束,我们给出一个有趣的例程,读者
不妨运行之,看看是否很有意思。
// echofill。h : main header file for the ECHOFILL application
//
#ifndef __AFXWIN_H__
#error include 'stdafx。h' before including this file for PCH
#endif
#include 〃resource。h〃 // main symbols
/////////////////////////////////////////////////////////////////////////////
// DApp:
// See echofill。cpp for the implementation of this class
//
class DApp : public CWinApp
{
public:
…………………………………………………………Page 257……………………………………………………………
DApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(DApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(DApp)
afx_msg void OnAppAbout();
// NOTE the ClassWizard will add and remove member functions here。
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file。
// Used by ECHOFILL。RC
//
#define IDR_MAINFRAME 128
#define IDD_ABOUTBOX 100
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
…………………………………………………………Page 258……………………………………………………………
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101