powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / где инициализировать текст. поля (в OnInitDialog не работает)?
3 сообщений из 3, страница 1 из 1
где инициализировать текст. поля (в OnInitDialog не работает)?
    #33517089
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

сорри за ламерский вопрос. Есть диалог с текстовым полем. Пытаюсь поле при старте инициализировать из реестра. Чтение из реестра работает, и в дебаггере я вижу, что содержимое поля правильное, но вот на экране поле пустое. Может не там делаю или какого-нибудь не Redraw хватает? Делаю так:

void CSQLlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
...
...
DDX_Text(pDX, IDC_txt, m_sTxt);
...
}

BOOL CSQLDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
...

char buffer[256];
DWORD dwCount = sizeof( buffer);
CRegKey key;
key.Open( HKEY_CURRENT_USER, "SOFTWARE\\SQLDLG", KEY_READ);
key.QueryValue( buffer, "HeaderFolder", &dwCount);
this->m_sTxt = _T(buffer);/* здесь вижу в дебаггере, что содержимое m_sTxt правильное*/

/* пробовал и так: */
this->m_sTxt.Insert(0,buffer);

key.Close();
...
ясно что ошибка элементарная, но не могу найти никак...:-(
...
Рейтинг: 0 / 0
где инициализировать текст. поля (в OnInitDialog не работает)?
    #33517272
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
UpdateData(FALSE)
...
Рейтинг: 0 / 0
где инициализировать текст. поля (в OnInitDialog не работает)?
    #33517380
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эту лабуду

char buffer[256];
DWORD dwCount = sizeof( buffer);
CRegKey key;
key.Open( HKEY_CURRENT_USER, "SOFTWARE\\SQLDLG", KEY_READ);
key.QueryValue( buffer, "HeaderFolder", &dwCount);
this->m_sTxt = _T(buffer);/* здесь вижу в дебаггере, что содержимое m_sTxt правильное*/

надо писать ДО CDialog::OnInitDialog();
потому что в CDialog::OnInitDialog() вызывается DoDataExchange,
которая записывает (в данном случае) из переменных в контролы.

Или после этой лабуды можно вызвать явно UpdateData(FALSE),
которая вызовет DoDataExchange, но это нелогично, зачем два раза звать
DoDataExchange.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / где инициализировать текст. поля (в OnInitDialog не работает)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]