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

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


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

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



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

Научимся считывать и выводить значения чего-либо


Создадим проект типа Simple Dialog, перейдем в окне SolutionExplorer на вкладку Resources. Перед нами станет видна будущая форма. Сразу нажимаем на форме правой кнопкой мыши, после чего перед нами появится окно Dialog Properties. Нажмем Keep Visible, чтобы оно осталось после перемещения фокуса на какое-либо другое окно. Поместим на форму кнопку и дадим ей какое-нибудь название (по умолчанию оно – Button1). Посмотрите некоторые свойства кнопки, определяемые в окне Properties.

Рисунок

Щелкнем два раза по нашей кнопке, и согласимся (или поменяем) конец иимени функции (обозначен Button2):

Рисунок

Нажимаем OK и оказываемся в редакторе кода:

Только что программой созданы строки


void CPROGADlg::OnButton1()

{

// TODO: Add your control notification handler code here

}


Это называется функцией (как вы знаете, надеюсь).


Далее поместим на форму два компонента Edit и по желанию два Label (нужны только для обозачения, из чего куда считывается. Transiver -передатчик, Resiver – приемник).

Рисунок

Нажимаем на созданную ранее кнопку GO! И переходим к редактору кода.

Находим в MSDN (это отличное справочное руководство по VisualStudio. Вообразите объем: на январь 2005 года оно насчитывало более 65 тысяч статей) функцию GetDlgItemText.


int GetDlgItemText(

   int nID,
 
    LPTSTR lpStr,
 
    int nMaxCount 
 
 ) const;
 
 

или

int GetDlgItemText(
   int nID,
 
    CString& rString
 
 ) const;

На самом деле не так уж страшно.

nID - сюда вписывается значение из окна Edit Properties. В данном случае IDC_EDIT1.

Рисунок
lpStr - Так называемый буфер – его мы определяем следующей строчкой:
char Peremennaya[100]; //100 – максимальная длина.
И подставляем в lpStr слово Peremennaya.
nMaxCount - Максимальная длина в байтах. Можем написать sizeof(Peremennaya).
В результате появится запись


char Peremennaya[100];

GetDlgItemText(IDC_EDIT1, Peremennaya,sizeof(Peremennaya));


Мы только что считали значение из Edit1 (Transiver по нашей терминологии). Теперь запишем его в Edit2 (Resiver по нашей терминологии). Можем воспользоваться функцией


void (
   int nID,
 
    LPCTSTR lpszString
 
      );

И здесь все просто, главное эту простоту понять.

nID вписывается значение из окна Dialog Properties. В данном случае IDC_EDIT2.

LpszString – та самая сделанная нами Peremennaya, значение которой – поле EDIT1.

В результате появится запись еще проще


SetDlgItemText(IDC_EDIT2, Peremennaya);

Теперь код, инициализирующийся при нажатии кнопки GO!

void CPROGADlg::OnButton1()

{

char Peremennaya[100];

GetDlgItemText(IDC_EDIT1, Peremennaya,sizeof(Peremennaya));

SetDlgItemText(IDC_EDIT2, Peremennaya);

// TODO: Add your control notification handler code here

}

Компилируем и линкуем <Ctrl>+<F7>. Запускаем <F5>. Вводим в поле EDIT1, названное нами Transiver какое-либо значение, например, 122. После нажатия кнопки GO! оно отобразится в поле EDIT2 (Resiver)

Рисунок



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

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




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



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


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