通过 MFC 中的函数更改控件的值?

Change Control's Value by a Function in MFC?

我为 IDC_EDIT1 控件设置了一个 int 变量。 现在我想用一个函数来改变它,但是当点击按钮时,显示错误!

void test()
{
    CthDlg d;
    d.m_text1 = 5;
    d.UpdateData(FALSE);
}

void CthDlg::OnBnClickedOk()
{
    // TODO: Add your control notification handler code here
    // pThread = AfxBeginThread(ThreadFunction, THREAD_PRIORITY_NORMAL);
    test();
}

控件是在您调用 DoModal 或 Create 时创建的。 因此只有在创建对话框时调用 UpdateData 才会成功。

这是通常的顺序:可以在启动控件之前设置值成员。数据在创建对话框时传输,并在使用 OnOK 关闭对话框时从控件传输回数据成员。

test 函数中,您定义了CthDlg class 的一个全新实例,并尝试对其进行修改。这将不起作用,因为它没有正确创建,并且与正在显示的实际对话框无关。

相反,如果 test 是一个独立的(非成员)函数,那么您应该将实际的对话框实例作为参数传递,然后使用它。

例如

void tesy(CthDlg& dlg)
{
    dlg.m_text1 = ...;
    dlg.UpdateData(FALSE);
}

void CthDlg::OnBnClickedOk()
{
    test(*this);
}