?? 00000011.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 + -