⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000011.txt

📁 水木清华BBS站的讨论区精华集锦
💻 TXT
字号:
 
                       --===BBS水木清华站∶精华区===--
 
                        -===BBS水木清华站∶精华区===-
 >*  ==> 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; 
 
                        -===BBS水木清华站∶精华区===-

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -