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 Кб)
26.04.2013, 15:12 [11704 просмотра]