Страница 1 из 1

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

Добавлено: 22 сен 2005, 11:22
SergeyM
Народ привет!
Начал изучение Visual C++ и немогу понять как мне забрать с формы введенную матрицу. На Делфи я такое реализовывал, там проще (хотя как судить я Visual С++ не знаю) берется стрин грид и в цикле перебираем ячейки. Такого в Visual C++ я не нашел, решил собрать из Эдитов матрицу 4х4, но собрав ни как не пойму каким образом забирать от туда данные и складывать их в массив. Может кто подскажет как это реализовать, только одно но я в Visual C++ чайник и не все кнопки еще знаю, так что если можно то поподробней объяснить че куда. Или кто знает другой способ отображения матрицы.

Добавлено: 22 сен 2005, 11:45
Romeo
По поводу иных способов представления матрицы. Можно использовать сторонние компоненты. Например FlexGrid.
Если же используешь набор Edit box'ов, то считать данных с них можно с помощью метода GetDlgItemText. Метод принадлежит классу CWnd, а класс CDialog (который описывает твою диалоговою форму) порождаеть от CWnd.

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

Добавлено: 22 сен 2005, 13:13
SergeyM
Romeo писал(а):По поводу иных способов представления матрицы. Можно использовать сторонние компоненты. Например FlexGrid.
Если же используешь набор Edit box'ов, то считать данных с них можно с помощью метода GetDlgItemText. Метод принадлежит классу CWnd, а класс CDialog (который описывает твою диалоговою форму) порождаеть от CWnd.
А можно немного кода? А то не понятно как с GetDlgItemText работать, примеров в MSDN не нашел.

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