首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cedit控件中输入换行符

在cedit控件中输入换行符
EN

Stack Overflow用户
提问于 2014-03-24 23:20:01
回答 2查看 2.2K关注 0票数 1

一个非常直接的问题..。

如何在不触发OK并完全关闭对话框的情况下在CEdit控件框中输入新行?我的意思是,当您按enter键时,它会自动选择OK,即使您的光标仍然在CEdit控件中。我正在尝试做的事情是可能的吗?或者我必须使用其他一些控件

顺便说一句,这是一个模式对话框。

EN

回答 2

Stack Overflow用户

发布于 2014-03-24 23:52:22

对于这个问题,有多种解决方案。

基本上,您需要的是编辑控件上的ES_WANTRETURN样式。

另一种解决方案是在PreTranslateMessage中检查消息和密钥(因为已经有评论认为这不是推荐的方式,我只是为了可能的原因提一下它):

代码语言:javascript
复制
BOOL CYouDialog::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN &&
        GetFocus() == youcontrol)
    {
        return TRUE;
    }

    return FALSE;
}

另一种解决方案是处理WM_GETDLGCODE。您应该继承编辑控件的子类,并执行以下操作:

代码语言:javascript
复制
UINT CYourEdit::OnGetDlgCode()
{
    return CEdit::OnGetDlgCode() | DLGC_WANTALLKEYS;
}

更新:仅供参考,也可以看看Just because you're a control doesn't mean that you're necessarily inside a dialog box

票数 2
EN

Stack Overflow用户

发布于 2014-03-24 23:45:55

正如您已经发现的,默认对话框处理是在按enter时关闭对话框。MFC实际上执行OnOK处理,但您可以重写它。Here's和旧的解释,但是,它仍然是相关的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22613477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档