MFC编辑框-每次击键多个字符?

Posted

技术标签:

【中文标题】MFC编辑框-每次击键多个字符?【英文标题】:MFC Edit Box - Multiple Characters per Keystroke? 【发布时间】:2008-12-16 22:29:34 【问题描述】:

我正在尝试使用 Visual C++ 在 MFC 中创建一个简单的对话框。我的问题是,当我在屏幕上看到对话框并尝试输入编辑框字段时,如果我输入字母“a”一次,它在编辑框中显示为“aaaaaaaaaaaa”(即 12 个 a)。此外,如果我尝试使用箭头键在框中导航,克拉一次移动 12 个字符。

这不仅仅是显示错误,因为编辑框的输出仍然是“aaaaaaaaaaaa”。

我会发布代码,但实际上没有可发布的。我使用 Visual Studio 中的工具箱添加了编辑框,并在我的类中为其分配了一个变量,因此这不是任何特殊的编辑框。

如果有人对可能发生的事情有任何想法,将不胜感激。不幸的是,我不知道从哪里开始。

一如既往的感谢。

【问题讨论】:

你确定里面没有带有id的代码吗? on key down 事件怎么样?你的目标是什么操作系统?如果您添加另一个编辑框,该编辑框也会发生这种情况吗? 请发布您拥有的任何代码,尤其是对于击键/编辑处理程序。 【参考方案1】:

要对此进行调试,请将 PreTranslateMessage 函数添加到您的对话框中,并准确查看按键被处理的次数。

BOOL DialogName::PreTranslateMessage(MSG* pMsg)


    if(pMsg->message==WM_KEYDOWN)
    
        // TODO: see what is going on here
        return TRUE; //do not dispatch this message, so keydown will have no effect
    

    return CDialog::PreTranslateMessage(pMsg);

【讨论】:

【参考方案2】:

您是否在 PreTranslateMessage() 函数或应用程序的其他任何地方捕获任何事件,例如 WM_KEYUP?

如果您覆盖了键盘事件的默认处理,它可能会导致您看到的症状。

【讨论】:

【参考方案3】:

出于某种原因,这让我想起了早期与 MFC 斗争的模糊记忆。你有没有寻找过相互递归?我永远在应用程序的某个位中做某事,该应用程序发送了一条消息(我不知道),该消息被称为第一种方法的另一种方法接收...

我的猜测是,它是那些打额头的人之一;它给了我一种我无法具体化的似曾相识的唠叨感。

如果是相互递归,你应该可以在调用堆栈中看到它,如果你能找到合适的断点位置。

【讨论】:

【参考方案4】:

这是否发生在新项目中,还是您可以在新项目中重现此问题? 这将有助于辨别是您在代码中执行的操作,还是您的安装操作。

【讨论】:

【参考方案5】:

我在我的 WinXp 64 操作系统中安装了 Service Pack 2,我的问题得到了解决 :)

【讨论】:

以上是关于MFC编辑框-每次击键多个字符?的主要内容,如果未能解决你的问题,请参考以下文章

mfc EDIT编辑框即时在for循环中更新

急!MFC中给一个对话框的不同编辑框关联变量后如何获得多个不同变量的值进行计算处理?????

C++ MFC开发串口通信之多个编辑框输出

MFC - 如何在运行时更新编辑框? (C++)

MFC 对话框 静态文本 编辑框

MFC 组合框不可编辑