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

Ваш аккаунт

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

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

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

Как сразуже обновить контрол по его переменной в Vc?

388
27 мая 2005 года
warezhka
129 / / 11.10.2004
Есть ли в Visual C++ (MFC) функция, которая бы обновляла элемент окна соответствии с привязанной к нему переменной?

Например есть эдит контрол IDC_MY_EDIT
И есть переменная CString m_my_edit связанная с ним.
В какой-то функции, пусть это будет обработка события клика на кнопке переменная m_my_edit изменилась - требуется обновить и содержание поля для юзера и продолжить выполнение кода обработки клика кнопки.
324
28 мая 2005 года
AndreySar
532 / / 01.08.2004
В Visual C++ имеется фенкция UpdateData(BOOL bSaveAndValidate = TRUE), которая отвечает за обновление переменной Control'a.
Если bSaveAndValidate == TRUE, то значение Controla передается его переменной, если bSaveAndValidate == FALSE, то значение переменной передается от переменной к Controlу.
В данном случае код будет выглядеть следующим образом:

{
...
m_my_edit = "Новое значение";
UpdateData(FALSE);
}

P.S.
Эффективнее использовать пременную типа Control,
тогда код будет выглядеть следующим образом:
m_my_edit.SetWindowText("Новое значение");
388
28 мая 2005 года
warezhka
129 / / 11.10.2004
{
...
m_my_edit = "Новое значение";
UpdateData(FALSE);
...еще тыща строк кода...
}

хех обновление произойдет только после выполнения тысячи строк кода и выходе из функции!!!!!!! вопрос в том как можно НЕМЕДЛЕННО проапдейтить контрол!
324
29 мая 2005 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by warezhka
[B
хех обновление произойдет только после выполнения тысячи строк кода и выходе из функции!!!!!!! вопрос в том как можно НЕМЕДЛЕННО проапдейтить контрол!



Используя переменную типа Control и функцию SetWindowText(CString str) обновление произойдет сразу!!!

425
30 мая 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by AndreySar
Используя переменную типа Control и функцию SetWindowText(CString str) обновление произойдет сразу!!!

Более по-MFCшному для немедленного обновления окна надо делать

 
Код:
m_EMyEditCtrl.UpdateWindow();
или
 
Код:
GetDlgItem(IDC_EDIT1)->UpdateWindow();
UpdateWindow() вызывает обработчик сообщения WM_PAINT непосредственно, минуя очередь сообщений.

Без MFC это будет
 
Код:
UpdateWindow(GetDlgItem(hDlg, IDC_EDIT1));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог