gpt4 book ai didi

windows - 如何从 `CEdit` 框获取通知?

转载 作者:可可西里 更新时间:2023-11-01 09:42:20 28 4
gpt4 key购买 nike

我有一个CEdit 框,用户可以在其中输入相关信息。一旦他/她开始在框中书写,我就需要一个通知,以便我可以调用 doSomething() 来执行其他任务。 Windows 是否提供回调,如果提供,我该如何使用它?

最佳答案

在 MFC 中没有这样的回调,而是通过为适当的事件实现一个处理程序来实现。您需要处理以下两个事件之一:WM_CHAREN_CHANGE

处理对话框的EN_CHANGE,例如实时复制对话框其他地方输入的文本。您需要首先在对话框的消息映射中添加一个条目,然后覆盖相应的处理程序:

BEGIN_MESSAGE_MAP(CstackmfcDlg, CDialog)
ON_EN_CHANGE(IDC_EDIT1, &CstackmfcDlg::OnEnChangeEdit1)
END_MESSAGE_MAP()

void CstackmfcDlg::OnEnChangeEdit1()
{
CString text;
m_edit.GetWindowText(text);
m_label.SetWindowText(text); // update a label control to match typed text
}

或者,处理编辑框类的 WM_CHAR,例如防止某些字符的输入,例如忽略数字输入中除数字以外的任何内容。从 CEdit 派生一个类,处理该类(不是对话框)的 WM_CHAR 事件,并使您的编辑控件成为该类的一个实例。

BEGIN_MESSAGE_MAP(CCtrlEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()

void CCtrlEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// Do nothing if not numeric chars entered, otherwise pass to base CEdit class
if ((nChar >= '0' && nChar <= '9') || VK_BACK == nChar)
CEdit::OnChar(nChar, nRepCnt, nFlags);
}

请注意,您可以使用 VS IDE 通过使用属性栏和消息映射 block 中的鼠标选择来放入处理程序覆盖的 stub 。

编辑: 添加了示例代码,并更正了我错了的 WM_CHAR 的解释。

关于windows - 如何从 `CEdit` 框获取通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com