发信人: mendy.bbs@bbs.nju.edu.cn (孟迪), 信区: cnprogram
标  题: vc faq(10)
发信站: nju_bbs (Sun Apr 19 13:51:14 1998)
转信站: Lilac!ustcnews!nju_bbs

2m发信人:m TMN (派生类)
2m信  区:m RAD
2m标  题:m vc faq(10)
2m发信站:m '3m紫金飞鸿m' (Wed Apr  8 08:16:52 1998) , 5m站内信件m

[返回首页] [分类讨论区] [全部讨论区]


>  ==> youxu (东子) 提到: 
如何暂时将键盘加速键屏蔽,以便能够将加速键作为普通键处理。 

>  ==> ming (明明) 提到: 
你用MFC吗? 
不用的话,自己加判断调不调用TranslateAccelerator()就可以吧。 
用的话,主窗口(一般都从CFrameWnd继承)中有一个数据成员 
m_hAccelTable,置成NULL试试? 

>  ==> youxu (东子) 提到: 
m_hAcceltable ,TranslateAccelerator() 都没有哇。    

>  ==> ming (明明) 提到: 
TranslateAccelerator() 是标准的Windows API。 
m_hAcceltable HELP中没列出来,但你看afxwin.h中calss CFrameWnd的 
定义,是 public 的,你可以用的。 
你可以定义一个新的Accelerator Table,  
ID_NEWACCEL,其中没有任何快捷键的定义, 
然后用: 
m_hAccelTable = ::LoadAccelerators(AfxGetResourceHandle(),  
                      MAKEINTRESOURCE(ID_NEWACCEL));  

发信人: zhangdh (Tree), 信区: Program 
   我插一句: 
  youxu的程序是SDI 还是 MDI的? 
  在MDI中,每种File Type均有自己的菜单,也就有自己的Accelerator  Table, 
这个Table的句柄不会在MainWnd中保存的. MainWnd中保存的应该是整个程序没有 
打开任何一个文件时的Axccelerator Table.这个Acclerator Table应该存在 
View or  Document 中. 
  在SDI中,ming的方法很可能是对的.因为程序执行中只有一个Accelerator Table. 

发信人: youxu (东子), 信区: Program 
           发现了一个奇怪的问题,我作了两个加速键表 
      执行 m_hAccelTable = ::LoadAcc ....  
        后,新的加速键表是起作用了,但原有的加速键并没有被取消,依然 
      起作用,也就是说,两个加速键表被合并为一个。 
      百思不得其解..........         

发信人: ming (明明), 信区: Program 
  有可能。youxu的问题可能也是因为这个,MainFrame 查了 Acclerator Table, 
  而View又查了自己的。 

发信人: youxu (东子), 信区: Program 
                  问题解决了!!! 
            原来不行的原因正如 zhangdh 所说,本人要屏蔽的加速键表是属于 VIEW
的, 
        应该这样作: 
                    ( 在 View 的某一成员函数中) 
     CMDIFrameWnd *pFrame = ((CMDIFrameWnd *)AfxGetApp()->m_pMainWnd); 
     CMDIChildWnd *pChildWnd = pFrame->MDIGetActive(NULL); 
     bSaveAccelTable = pChildWnd->m_hAccelTable; 
     pChildWnd->m_hAccelTable = NULL; 

                         [返回首页] [分类讨论区] [全部讨论区]

--
m;31m※ 来源:·紫金飞鸿 bbs.njupt.edu.cn·[FROM: pc05.info.njupt]m

--
※ 来源:.南大小百合信息交换站 bbs.nju.edu.cn.[FROM: a507yjh.nju.edu]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.402毫秒