C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 13. Продолжение класса CListBox / Уроки MFC / Visual C++

Visual C++. MFC
Урок 13. Продолжение класса CListBox

Продолжаем работать со списком (класс CListBox). Посмотрим, что мы вообще можем с элементами списка делать. Операций не так уж и много. Добавить элемент на определённую позицию, удалить элемент с определенной позиции, пересчитать элементы и т. д. Давайте все это воплощать. У нас есть кнопка с надписью MyButton. Все наши действия со списком будут происходить при нажатии этой кнопки.

Давайте для начала добавим элемент на определённую позицию. Для этого напишем следующий код:

void CMyMainWnd::f(){
    m_lbListBox->InsertString(1,"New String");
}

Метод класса InsertString для CListBox вставляет строку, передаваемую в качестве второго параметра, на место, задаваемое первым параметром. Нумерация при этом начинается с нуля. Запустите программу и нажмите на кнопку MyButton. На первом месте в нашем списке появится строка New String:

Добавление строки

Для удаления строки с неким номером используёте метод DeleteString. Например, следующий код будет удалять верхний элемент нашего списка (помните, что нумерация элементов начинается с нуля):

void CMyMainWnd::f(){
    m_lbListBox->DeleteString(0);
}

Теперь посмотрим, как очистить весь список. Для этого используем метод ResetContent:

void CMyMainWnd::f(){
    m_lbListBox->ResetContent();
}

Параметров у этого метода нет.

Движемся дальше. Что мы ещё со списком можем сделать? Ну, например, подсчитать количество элементов. Давайте на этот раз код поместим в таймер - так, чтобы количество элементов списка отображалось в заголовке окна:

void CMyMainWnd::OnTimer(UINT nIDEvent){
    ...
    else{
        CString s;
        s.Format("%d items in ListBox", m_lbListBox->GetCount());
        SetWindowText(s);
    }
}

Теперь после запуска программы у нас в заголовке окна будет показываться количество элементов списка:

Количество элементов

И, напоследок, посмотрим, как найти нужную нам строку в списке. Для этого используем метод FindString:

void CMyMainWnd::f(){
    ...
    int k=m_lbListBox->FindString(0,"Igor");
    if(k==LB_ERR)
        AfxMessageBox("Строка не найдена");
    else{
        CString s;
        s.Format("Строка найдена на %d-м месте", k);
        AfxMessageBox(s);
    }
}

Данный код ищет строку "Igor". Если она есть, то наш метод возвратит номер этой строки, а если нет, то значение LB_ERR.