加速键
资源如何装入内存即可。
与菜单资源一样,加速键资源也必须在使用前先装入内存。这个过程是由CFrcomWnd
的成员函数LoadAccelTable() 完成的。这个函数为框架窗口动态装入加速键资源。
LoadAccelTable()的原型为:
BOOL LoadAccelTable(
LPCTSTR lpszResourceNcom
);
参数lpszResourceNcom 指向加速键资源的名称,也可以指向通过MAKEINTRESOURCE
宏转换的加速键资源ID。
用户有时候可能需要用到两套不同的加速键,根据当前程序运行的状态选择不同的加速
键。比如一个既能进行文本编辑,又能进行图像编辑的程序,当进行文本编辑时程序使用一
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·60·
套加速键,而当进行图像编辑时,程序却使用另外一套加速键,相同的加速键在不同的加速
键资源中可能对应不同的命令消息,因此需要动态加载加速键,这时候就可能用到
LoadAccelTable()函数。
创建新的加速键资源的过程与创建新的菜单资源类似。例如要创建并使用一个ID 为
IDR_MYACCEL 的加速键资源,可以通过以下步骤:
(1)在IDE 主菜单栏中依次选择“Insert|Resource”菜单命令,或者使用快捷键Ctrl+R,
打开“Insert Resource”对话框,在列表框中选择Accelerator,单击“New”按钮即可创建一
个有默认资源ID 为IDR_ACCELERATOR1 的新的菜单资源(如图3-7 所示,不过此时在
“Resource type”树状列表框中选择的是Accelerator),并自动进入该菜单的编辑界面。
(2)找到IDE 左侧的“ResourceView”选项卡中IDR_ACCELERATOR1 的节点,打开资
源属xìng编辑对话框,在ID 输入框中将资源ID 修改为IDR_MYACCEL。然后参照3.2 节中的
方法添加加速键,完成加速键资源的创建。
(3)创建新的加速键资源后,就需要在程序中要求切换加速键资源的地方添加如下代码:
((CMainFrcom *)AfxGetMainWnd())->LoadAccelTable(
MAKEINTRESOURCE(IDR_ACCEL));
这句代码装入ID 为IDR_ACCEL 的加速键资源。
用户可以自己创建和使用加速键资源,但特别是由AppWizard 生成的程序代码中,MFC
已经封装了上述过程。同普通菜单资源的创建一样,MFC 的文档视图结构在装入文档模板的
时候,自动将ID 为IDR_MAINFRAME 的加速键资源装入内存,这个过程是和其他资源包括
菜单资源一起装入内存的。用户无需深究其中的细节,只需要编辑IDR_MAINFRAME 的加
速键资源就可以很方便地为程序创建加速键。
3.5 本章小结
本章介