|
아!! 정말로 감사 합니다.
수야!╋ 님이 쓰신 글 :
: 윈도우는 메시지 처리방식으로 운영된다는건 아시지요~?
:
: 무한루프 안으로 들어가면 아무런 동작도 못하는 이유는 해당 인스턴스가 받은 메시지를 처리할 시간을 주지 않았기 때문입니다.
:
: Application->ProcessMessages();
:
: 위 부분을 무한 루프 안에 추가해주면 인스턴스가 처리해야될 윈도우 메시지들을 처리 하게 하는것입니다.
:
: 아래 예제 코드를 참고하시고 자세한 내용은 ProcessMessages의 헬프를 참고하세요
:
: m_bQuitIs 변수는 bool 타입의 멤버변수입니다.
:
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
: m_bQuitIs = false; // 멤버 변수임으로 초기값이 false 설정되지만 그냥 초기화 해주는 부분입니다.
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: while(1)
: {
: // 키 이벤트는 아니지만 Button2에서 true값을 넣어주도록 되어있습니다. 결국 키값도 이벤트이기 때문에 같은 형식이지요
: if(m_bQuitIs)
: break;
:
: int i = 1;
: Application->ProcessMessages(); // 이부분을 제거하면 다른 동작은 전혀 하지 못하며
: // 추가시엔 폼을 이동하거나 버튼을 누르는것이 가능해집니다.
: }
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: m_bQuitIs = true;
: }
: //---------------------------------------------------------------------------
:
: ymin 님이 쓰신 글 :
: : 프로그램이 무한루프를 돌고 있을 때는 키를 눌러도
: : 인식을 못하는데 혹시 무한루프 안에서 FormKeyPress 를
: : 불러 사용하는 방법은 없는지 있다면 어떻게 사용하는지
: : 아니면 다른 방법은 없는지요? 무한루프 안에서 탈출하는
: : 방법을 묻고 있습니다.
|