为什么Ctrl + A不能在CEdit中运行?

时间:2015-09-01 17:01:31

标签: c++ mfc win32gui

我一直在MFC项目中工作,我已经看到Ctrl + A不适用于此项目中使用的任何CEdit。

但是,如果我在项目的StdAfx.h文件中添加以下行,它会突然开始工作。

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

现在我从这段代码中了解到,我们明确告诉链接器我们要使用ComCtl32.dll 6.0版。

这是否意味着,如果没有此行,我的项目将使用没有Ctrl + A支持的早期版本的ComCtl32.dll?

2 个答案:

答案 0 :(得分:1)

在该版本中默认不处理Ctrl-A。如果您需要Ctrl-A支持,则需要从CEdit扩展并实现PreTranslateMessage

See here

void CEditExtended::PreTranslateMessage(MSG* pMsg)
{
     if(pMsg->message == WM_KEYUP )
     {
         if ( (LOWORD(pMsg->wParam) & VK_CONTROL) == VK_CONTROL )
         {
           SetSel(0, -1);
         }
     }
     return CEdit::PreTranslateMessage(pMsg);
}

答案 1 :(得分:1)

原因可能是您在主应用程序中定义的加速器。

此加速器处理此击键。