www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 55 - Что такое CListBox

Создание проекта

Работаем со старым проектом. Нам надо создать в диалоговом окне список. Вот так.

step55.gif (4354 b)

Создание кода

Обьявляем класс соответствующий элементу управления в классе диалогового окна.
class CTestDlg : public CDialog
{
         .....
	 protected:
	 .......
		 	CListBox	m_List;
         .....         
};
Обмен данными
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST1, m_List);
   
}
Дополнительную функцию
void int_AfxMessageBox(int i)
{
 char t[10];
 itoa(i,t,10);
 AfxMessageBox(t);
}
И переопределения действия над двумя дургими кнопками
void CTestDlg::OnSend()
{
 m_List.AddString("Hello");
 int_AfxMessageBox(m_List.GetCount());
} 

void CTestDlg::OnTest()
{
  if (m_List.GetCurSel()!=LB_ERR )   m_List.DeleteString(m_List.GetCurSel());
  else AfxMessageBox("Not Select");
} 

Описание

Итак описываем класс, соответсвующий элементу управления, и обмен данными уже не первый раз, не маленькие :-).

А вот реализация дополнительной функции требует обсуждения. И хотя с данным ходом программной мысли мы встречались, но выделение в отдельную функцию не настолько невиданно. На мой взгляд каждый программист работает с определенным уровнем абстракции. И мы с вами работаем с оболочкой вокруг Windows под именем MFC. Эта оболочка позволяет нам абстрагироваться от многих деталей работы самой операционной системы и сосредоточиться на решаемой задаче. При реальном создании приложения нужен еще более высокий уровень абстракции. Вот эта функция и является примером подобного подхода. Мы создали одну функцию, которая является надстройкой над MFC. И мне кажется, что программист именно этим и занимается. Расширяет возможности оболочки. Самое главное откуда начать старт. Если всё это обдумать получается, что каждый строит свой Extended MFC. Тогда чем занимаеться Microsoft ? :-) И вот на основе этих мыслей я пришол к интересному выводу. Смогу ли я описать все уровни абстракций, которые существуют, например, при получении данных от сервера. Увы нет.

Не обращайте внимания. У меня сегодня голова болит, а такое в нормальном состоянии на ум не придет :-)

Лирическое отступление закончено. У нас с Вами две функции. OnSend добавляет данные в список. Делается это функцией AddString. Вот её описание.

int AddString( LPCTSTR lpszItem );
Ей нужна только строка. И эту строку она поместит в конец списка. При необходимости вставки в конкретное место есть функция InsertString.

После вставки мы получаем количество элементов в списке с помощью GetCount() и выводим на экран для обозрения.

В OnTest мы сначала проверяем есть ли выделенная ячейка в помошью GetCurSel и если выделенная есть, то удаляем с помощью DeleteString. Если ячейка не выделена, то возврат функции GetCurSel будет LB_ERR.

Компилируйте запускайте и пробуйте.


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz