Как вызвать «SetDlgItemText» в пользовательском классе? - PullRequest
0 голосов
/ 05 июля 2018

Я создал приложение MFC на основе Dialog (c ++). OnBnClickedButton печатает данные в редакторе с использованием SetDlgItemText(). Теперь я хочу использовать SetDlgItemText в пользовательском классе (только что созданном классе), но получаю сообщение об ошибке «Ошибка отладки».

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");
}

Error screenshot

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Попробуйте сделать это в вашем обработчике событий

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

Надеюсь, это поможет.

p.s Я знаю, что этот ответ не имеет ничего общего с SetDlgItemText, это просто еще один способ установки текста в MFC.

0 голосов
/ 05 июля 2018

Вы можете установить элемент диалога только тогда, когда само диалоговое окно создано.

Диалог создается при вызове Create или DoModal. Пока у вас есть только экземпляр класса диалога, вы не можете получить доступ ни к одному из окон внутри него, когда диалог не создан.

Обычно вы должны использовать процедуры DDX для обмена данными между классом диалога и окнами.

PS: Мне кажется, это вопрос начинающего MFC. Пожалуйста, прочитайте некоторые учебники.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...