Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

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.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS