Ввод и вывод матрицы через MFC

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
SergeyM
Сообщения: 18
Зарегистрирован: 14 янв 2005, 08:44

Народ привет!
Начал изучение Visual C++ и немогу понять как мне забрать с формы введенную матрицу. На Делфи я такое реализовывал, там проще (хотя как судить я Visual С++ не знаю) берется стрин грид и в цикле перебираем ячейки. Такого в Visual C++ я не нашел, решил собрать из Эдитов матрицу 4х4, но собрав ни как не пойму каким образом забирать от туда данные и складывать их в массив. Может кто подскажет как это реализовать, только одно но я в Visual C++ чайник и не все кнопки еще знаю, так что если можно то поподробней объяснить че куда. Или кто знает другой способ отображения матрицы.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

По поводу иных способов представления матрицы. Можно использовать сторонние компоненты. Например FlexGrid.
Если же используешь набор Edit box'ов, то считать данных с них можно с помощью метода GetDlgItemText. Метод принадлежит классу CWnd, а класс CDialog (который описывает твою диалоговою форму) порождаеть от CWnd.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Вводить данные через сетку конечно удобнее, чем через Edit, но элементы типа FlexGrid реализованы в виде ActiveX компонентов. Если человек мало знаком с Visual C++ и с технологией COM, то ему сложно будет использовать такого рода компонеты в своём проекте. Поэтому здесь можно использовать компромисный вариант: отображать данные матрицы в виде сетки, используя для этого стандартные элементы Windows, типа ListBox в стиле MULTICOLUMN или ListView в стиле LVS_REPORT. А вводить данные можно через поля редактирования, но не для каждой ячейки своё поле, а одно поле ввода для выделенной ячейки. Ещё можно использовать возможность редактирования ячеек в элементе ListView.
SergeyM
Сообщения: 18
Зарегистрирован: 14 янв 2005, 08:44

Romeo писал(а):По поводу иных способов представления матрицы. Можно использовать сторонние компоненты. Например FlexGrid.
Если же используешь набор Edit box'ов, то считать данных с них можно с помощью метода GetDlgItemText. Метод принадлежит классу CWnd, а класс CDialog (который описывает твою диалоговою форму) порождаеть от CWnd.
А можно немного кода? А то не понятно как с GetDlgItemText работать, примеров в MSDN не нашел.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

В платформе MFC можно не использовать GetDlgItemText, а вместо этого воспользоваться динамическим обменом данных (DDX), тогда с помощью класс-визарда просто связываешь нужную числовую переменную с полем ввода в окне диалога. При обновлении вида формы или при закрытии модального окна диалога данные будут считываться из элементов диалога и записываться в соответсвующие переменные.
Ответить