我正在使用CMFCMenuBar类来显示我的主框架菜单,当用户按下Alt + F时菜单包含“& File”等访问键它将打开文件菜单,但这对我不起作用在访问键下方显示一行,按下Alt后,主菜单中的第一个菜单项突出显示,我可以使用箭头键(向上,向下,向右,向左)进行导航,但不能使用访问键进行导航
正如我们所看到的那样,菜单项在访问键下面有一行,但它无法跟踪它?
答案 0 :(得分:0)
在我进行了一些搜索之后,我找到了关键的处理
我达到了这个MFC代码
BOOL CMFCToolBar::TranslateChar(UINT nChar)
{
if (!CKeyboardManager::IsKeyPrintable(nChar))
{
return FALSE;
}
UINT nUpperChar = CKeyboardManager::TranslateCharToUpper(nChar);//this line guided me
CMFCToolBarButton* pButton = NULL;
if (!m_AccelKeys.Lookup(nUpperChar, pButton))
{
return FALSE;
}
ASSERT_VALID(pButton);
// Save animation type and disable animation:
CMFCPopupMenu::ANIMATION_TYPE animType = CMFCPopupMenu::GetAnimationType();
CMFCPopupMenu::SetAnimationType(CMFCPopupMenu::NO_ANIMATION);
BOOL bRes = DropDownMenu(pButton);
// Restore animation:
CMFCPopupMenu::SetAnimationType(animType);
if (bRes)
{
return TRUE;
}
return ProcessCommand(pButton);
}
我跟踪了这一行CKeyboardManager :: TranslateCharToUpper(nChar); 它以
开头UINT __stdcall CKeyboardManager::TranslateCharToUpper(const UINT nChar)
{
if (nChar < VK_NUMPAD0 || nChar > VK_NUMPAD9 ||
(::GetAsyncKeyState(VK_MENU) & 0x8000))
{
if (!CMFCToolBar::m_bExtCharTranslation)
{
我搜索了CMFCToolBar :: m_bExtCharTranslation,我收到了错误报告http://connect.microsoft.com/VisualStudio/feedback/details/525656/hot-key-is-not-working-on-russian-language-for-applications-which-uses-mfc-feature-pack
我们需要在应用程序启动时添加以下内容,我将其放入方法 CMainFrame :: OnCreate
CMFCToolBar::m_bExtCharTranslation = TRUE;//it is FALSE by default