为什么 Ctrl + A 在 CEdit 中不起作用?

Why doesn't Ctrl + A work in CEdit?

本文关键字:不起作用 CEdit Ctrl 为什么      更新时间:2023-10-16

我一直在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版本。

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

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

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);
}

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

这个加速键处理这个击键