Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, плиз!!!

41K
15 августа 2009 года
m_cPlusPlus
26 / / 15.08.2009
Такой трабл.
Создаю объект наследника Edit через Create(руками :) ). В MyDialog.DoDataExchange связываю с ним переменную типа стринг.
Далее вижу эксепшен. :(

Переопределение ф-ции DoDataExchange в наследнике Edit тоже не помогает. При создании самого объекта эдита в DoDataExchange не заходит.
При вызове из класса диалога m_edit.UpdateData() заходит MyEdit.DoDataExchange вылетает тот же эксепшен.
Не пойму где собака зарыта:)
2.2K
16 августа 2009 года
REFOT
181 / / 08.04.2005
Делай Create до CDialog::OnInitDialog(); - тут как раз и происходит первое обращение к DoDataExchange.

Так всё работает:
Код:
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, 12345, m_string);
}

BOOL CMyDlg::OnInitDialog()
{
   m_edit.Create(WS_CHILD | WS_VISIBLE | WS_BORDER,
                 CRect(10, 10, 100, 100), this, 12345);

  CDialog::OnInitDialog();

  ...

}
41K
17 августа 2009 года
m_cPlusPlus
26 / / 15.08.2009
а я то думая почему сначала вызывается сначала DoDataExchange
после CMyDlg::OnInitDialog().
Блин ну и макрософт намудрило!
REFOT огромное спасибо!!!

п.с извратился и обошел DDX_Text(...) используя SetWindowText и GetWindowText.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог