gpt4 book ai didi

mfc - MFC OnEnChange处理函数-无限循环

转载 作者:行者123 更新时间:2023-12-04 14:18:43 25 4
gpt4 key购买 nike

(我正在使用VS ++ 2005)

我在对话框上放置了编辑框控件(ID为ID_edit_box),并为其关联了两个变量(使用处理程序向导):控件(c_editbox)和值(v_editbox)变量。我还将处理程序功能OnEnChangeedit_box与该编辑框控件相关联。假设我们可能只在编辑框中输入一个数字,并且该数字可以是0或1。如果我们输入其他值-我想要的是该编辑框中的内容被自动清除,因此用户看不到键入任何内容(换句话说,用户不能在编辑框中输入0/1以外的任何内容)。我在onEnChangeedit_box函数中进行检查。这是代码:

void CSDRDlg::OnEnChangeedit_box()
{
CWnd* pWnd;
CString edit_box_temp;

pWnd = GetDlgItem(ID_edit_box);
pWnd->GetWindowText(edit_box_temp);

if ((edit_box_temp == "0" || edit_box_temp == "1")
{...do something - i.e. setfocus on some other edit box }
else
{
pWnd->SetWindowText(""); // clear the content of edit box
//... any other statement below will not be executed because the
//above line cause again call of this function
}
}


我调试并发现该行: pWnd->SetWindowText("");导致无限循环,因为我们更改了此函数中的控件内容,从而再次触发了她的调用。

但是我改变上面的代码是这样的:

void CSDRDlg::OnEnChangeedit_box()
{
UpdateData(TRUE);
if ((v_editbox == "0" || v_editbox== "1")
{...do something - i.e. setfocus on some other edit box }
else
{
v_editbox = "";
UpdateData(FALSE);
}
}


可以满足我的要求,但是有人可以向我解释为什么我们打电话时

  v_editbox = "";
UpdateData(FALSE);


不会导致无限循环。

最佳答案

当您为EditBox添加变量时,为什么不将Min / Max值设置为0/1或将值类型设置为bool?

关于mfc - MFC OnEnChange处理函数-无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1188204/

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