我一直在一个 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
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);
}

关于c++ - 为什么 Ctrl + A 在 CEdit 中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32337188/

10-16 05:13