我通过dlg资源创建了所有控件。我添加了代码来控制旋转控制,它运行得很好。但是,如果我想通过在其中键入值来直接更改编辑框的值,程序将崩溃,除了“退出返回值13”之外没有任何错误消息。
void CNuanceGuiPart2Dlg::OnEnChangeSignalDb(){
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialogEx::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
如果我要在包含UpdateData调用的上述块中添加任何代码或操作CEdit / CSpinControl对象,它会在wincore2.cpp,128行给我一个调试断言。
编辑:
所以我发现当代码第一次运行时,函数被调用太快了。如果我使用ON_EN_CHANGE
将if(gui_start)
映射的整个函数包裹起来,并在执行gui_Start
时发出CDialog::OnInitDialog()
信号,那么对GUI的任何更新都可以正常运行 - 我甚至没有得到调试运行时错误。我的问题是:无论如何我可以在没有gui_Start
的情况下做到这一点?为什么这么快就会调用此特定编辑框的ON_EN_CHANGE
?它与旋转控制有关吗?提前谢谢。