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

时间:2008-12-16 22:29:35

标签: c++ mfc editcontrol

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

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

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

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

一如既往地感谢。

5 个答案:

答案 0 :(得分:1)

要对此进行调试,请在对话框中添加PreTranslateMessage函数,并准确查看keydown处理的次数。

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

答案 1 :(得分:0)

出于某种原因,这带回了与MFC早期斗争的模糊记忆。你有没有寻找相互递归?我是永远在应用程序的一个位置做了一些事情,它发送了一条消息(我不知道),这是另一个调用第一种方法的方法...

我的猜测是前额之一;它给了我这种令人讨厌的似曾相识的感觉,我无法具体化。

如果它是相互递归,你应该能够在调用堆栈中看到它,如果你能找到一个正确的断点位置。

答案 2 :(得分:0)

您是否在PreTranslateMessage()函数或应用中的任何其他位置捕获WM_KEYUP等任何事件?

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

答案 3 :(得分:0)

这是针对一个新项目发生的,还是可以在一个新项目中重现这个问题? 它有助于辨别您是在代码中还是在安装中完成的。

答案 4 :(得分:0)

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