如何在自定义类中调用“SetDlgItemText”?

问题描述 投票:0回答:2

我创建了基于Dialog的MFC应用程序(c ++)。 OnBnClickedButton使用SetDlgItemText()打印编辑控件的数据。现在我想在自定义类(新创建的类)中使用SetDlgItemText,但收到错误“Debug assertion failed”。

class test: public CDialogEx
{
public:
    void upd(CString);
};

void test::upd(CString a)
{
    SetDlgItemText(IDC_EDIT6,a);
}

void CMFCApplication3Dlg::OnBnClickedButton4()
{
    test obj;
    obj.upd("Hello");
}

c++ visual-studio mfc
2个回答
3
投票

您只能在创建对话框窗口时设置对话框项。

调用CreateDoModal时会创建对话框。只要您只有一个对话框类的实例,就不能在未创建对话框时访问其中的任何窗口。

通常,您应该使用DDX例程在对话框类和窗口之间交换数据。

PS:在我看来这是一个初学MFC问题。请阅读一些教程。


0
投票

尝试在事件处理程序中执行此操作

void CMFCApplication3Dlg::OnBnClickedButton4()
{
    CString str; //Initialize this string to whatever you wish to
    GetDlgItem(IDC_EDIT6)->SetWindowText(str);
}

希望这可以帮助。

p.s我知道这与SetDlgItemText无关,它只是在mfc中设置文本的另一种方式。

© www.soinside.com 2019 - 2024. All rights reserved.