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

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


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Расширяем возможности CEdit.

Автор: Daniel Zuppinger

  • Скачать исходник - 8 Kb
  • Скачать демонстрационный проект - 36 Kb

    Sample Image - autoedit.gif

    Описание

    Класс, который представлен здесь, позволяет определить какие символы разрешено вводить пользователю, такие как только цифры, или цифры, десятичные точки и знаки, или символы шестнадцатиричного исчисления и т.д.

    Класс CAutoEdit

    Класс CAutoEdit наследуется class is derived from the normal CEdit class.

    Метод SetMaxChar позволяет Вам определить максимальное количество символов, допустимое для данного поля. Если это количество достигнуто, то фокус автоматически перескакивает на следующее поле, осуществляя тем самым эффективный ввод данных. Следующий метод SetExitChar позволяет Вам определить один дополнительный символ, который будет использоваться для выхода из данного поля, как это делает, к примеру, TAB. Это удобно в случаях, когда Вы хотите использовать десятичную точку для перехода на следующее поле и т.д.

    Класс CAutoEdit использует в качестве обработчика ошибок класс CEditValidate с виртуальной функцией validate

    Этот класс присоединяется к CAutoEdit посредствам метода SetValidationHandler. Всякий раз, когда CAutoEdit теряет фокус, то вызывается метод validation . При этом проверяется содержимое поля, форматируется и, при необходимости генерируется сообщение об ошибке. Если сообщение об ошибке сгенерировано, то происходит следующее:

    1. Фокус остаётся на поле, содержащем ошибку и содержимое поля выделяется
    2. Сообщение об ошибке выводится в маленькое окошко прямо над полем, содержащем ошибку. Для этого используется класс CInfoWnd .

    Такой режим позволяет пользователю исправить ошибочный ввод без необходимости удаления окошка с пояснением ошибки. Как только поле ввода будет исправлено, сообщение об ошибке исчезнет автоматически. Пользователь не сможет выбрать другое поле до тех пор пока не исправит ошибку в текущем поле, за исключением кнопки CANCEL.

    Для использования этого класса в своём проекте, Вам необходимо включить в проект файлы autoedit.h, autoedit.cpp, infowmd.h и infownd.cpp. В Вашем диалоге измените поля CEdit на CAutoEdit и добавьте следующий код в OnInitDialog :

    //
     
     BOOL CTestDlg::OnInitDialog()
     
     {
     
         CDialog::OnInitDialog();
     
     
     
         // Устанавливаем режим для каждого поля редактирования
     
         m_Edit1.SetMaxChars(2);
     
         m_Edit1.SetValidChar(_T("0123456789"));
     
         m_dayValidate = new CDayValidate;
     
         m_Edit1.SetValidationHandler(m_dayValidate);
     
         m_Edit1.SetDefaultValue(_T("01"));
     
         m_Edit1.SetText();
     
     
     
         m_Edit2.SetMaxChars(2);
     
         m_Edit2.SetValidChar(_T("0123456789"));
     
         m_monthValidate = new CMonthValidate;
     
         m_Edit2.SetValidationHandler(m_monthValidate);
     
         m_Edit2.SetDefaultValue(_T("01"));
     
         m_Edit2.SetText();
     
     
     
         m_Edit3.SetMaxChars(4);
     
         m_Edit3.SetValidChar(_T("0123456789"));
     
         m_yearValidate = new CYearValidate;
     
         m_Edit3.SetValidationHandler(m_yearValidate);
     
         m_Edit3.SetDefaultValue(_T("2000"));
     
         m_Edit3.SetText();
     
     
     
     
     
         m_Edit4.SetMaxChars(8);
     
         m_Edit4.SetValidChar(_T("10"));
     
         m_binValidate = new CBinValidate;
     
         m_Edit4.SetValidationHandler(m_binValidate);
     
     
     
         return TRUE;  // возвращаем TRUE до тех пор, пока Вы
     
                       // не установите фокус на элемент управления
     
     }
     
     //
     
     
 
 




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

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




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



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


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