Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Member variables 
:(
    Опции темы
NiJazz
  Дата 9.12.2004, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



Если зайти в ClassWizard -> вкладка Member variables. Выбрать какой-то объект, например, от CEdit, и нажать "Add variable".
Есть две категории: Value и Control.
Если выбрать Control, то ясно - переменная будет способствовать управлению объектом.
А что дает выбор Value? Так сделано в книге у Круглинского. Я пробовал делать по аналогии, не выходило.
Например переменная от объекта CEdit: m_strEdit типа CString. Если задам m_strEdit = "Hello!", то ничего не меняется.
Надеюсь на ваши подсказки. smile
PM MAIL   Вверх
alien_by
Дата 10.12.2004, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 29.11.2004
Где: Belarus/Gomel

Репутация: 5
Всего: 8



Дело в том, что тип value - связывает контрол и переменную. Однако эта связь на уровне передачи ссылки, и для действительного изменения нужно посылать сообщение контролу, что пора перечитать связь. Поэтому, если нужно что-то обновить в контроле, необходимо вызвать метод диалога UpdateData(FALSE); Тогда динамические связи будут считаны и параметры контролов обновлены.
PM MAIL ICQ   Вверх
En_t_end
Дата 10.12.2004, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



alien_by
А вопрос можно :
Возможно ли вызвание UpdateData(FALSE); только для одного конкретного поля... а не для всех сразу... ???
PM MAIL ICQ Skype GTalk Jabber   Вверх
alien_by
Дата 10.12.2004, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 29.11.2004
Где: Belarus/Gomel

Репутация: 5
Всего: 8



Помоему нельзя.
Вообще лучше использовать режим Control. Тогда можно управлять элементом управления как душе угодно.

Непонимаю, зачем MS-цы ввели режим value. (полезность его весьма сомнительна....) smile
PM MAIL ICQ   Вверх
En_t_end
Дата 10.12.2004, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



"Непонимаю, зачем MS-цы ввели режим value. (полезность его весьма сомнительна....)"
Наверно в Майкрософте хотели сделать проект типа Дрэмвивера, просто и удобно, а на деле, для опытного пользователя больше проблем...
PM MAIL ICQ Skype GTalk Jabber   Вверх
Coocky
Дата 10.12.2004, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата
Непонимаю, зачем MS-цы ввели режим value.

Да все просто,если ваше текстовое поле работает с числами,нет смысла переводить с помощью ATOI() smile Просто для удобства.Я,кстати,сталкивался уже с этим,и мне помогло smile
Добавлено @ 19:30
Да иникто тебе не запрещал использовать несколько видов переменных smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
NiJazz
Дата 14.12.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 2
Всего: 23



А можно такие переменные создавать во время прогона программы?
PM MAIL   Вверх
alien_by
Дата 14.12.2004, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 29.11.2004
Где: Belarus/Gomel

Репутация: 5
Всего: 8



В принципе, архитектура это позволяет, но нужно поизвращатся...
Для того, чтобы связать элемент диалога и переменную нужно знать айди соответствующего элемента и адрес переменной...
Поэтому можно написать универсальную функцию DoDataExchange, что-то типа этого
Код

CString m_value;
int m_nId;
....
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
   DDX_Text(pDX, m_nId, m_value);
}


Здесь обьявлены две дополнительные переменные, одна, это строка со значением для контрола, вторая айди контрола...
вызов примерно такой.

Код

....
m_value = _T("No Value"); // Инициируем переменную начальным значением
m_id = IDC_EDIT1; // Задаём айди ресурса для связывания

UpdateData(TRUE); // Принципиальный момент... параметр установленный в истину
                               // указывает, что мы хотим не просто синхронизировать значения
                               // переменных и контролов, а изменить карту мапирования.


PM MAIL ICQ   Вверх
Coocky
Дата 14.12.2004, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



alien_by Дай другим ответить!!!!!!!!!!!!! smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.5123 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.