БлогNot. C++ Builder: делать что-то "до нажатия клавиши"

C++ Builder: делать что-то "до нажатия клавиши"

Например, перерисовывать или выводить что-то (мы будем печатать случайные слова латиницей в многострочное поле вывода), пока пользователь не нажмёт клавишу. В классической консоли можно было сделать такое с помощью простого цикла вида while (!kbhit()) { ... } или while (!bioskey(1)) { ... }.

Если работаем со стандартными компонентами VCL или другой библиотеки, сделать можно по следующему алгоритму.

  • Заводим в классе формы флажок, показывающий было ли нужное событие, прописываем его в заголовочном файле .h класса:
    bool Click;
  • После создания формы (подпрограмма FormCreate обработки соответствующего события от формы) ставим флажок в ложь:
    Click = false;
  • В нужном обработчике события от компоненты, например, обработчике щелчка мыши по текстовому полю с именем Memo1KeyDown, ставим флажок в истину:
    Click = true;
  • Из обработчика события, в котором реализован "бесконечный" цикл, периодически (но не постоянно, будут тормоза) вызываем метод Application->ProcessMessages(), который проверит очередь событий, и, если было нажатие клавиши, учтёт это, поставив Click в истину:
    char ch;
    do {
     ch='A'+random(32); if (ch>'Z') ch=' ';
     Memo1->Lines->Strings[1] = Memo1->Lines->Strings[1]+ch;
     if (ch==' ') Application->ProcessMessages();
     if (Click) break;
    } while (1);
    Application->Terminate();

 Скачать этот пример в виде архива с проектом C++ Builder (4 Кб)


теги: программирование c++ random builder

26.04.2013, 15:12; рейтинг: 10484