C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35872] Re:FormKeyPress 를 프로그램 중에서 호출할 수 있는가요?
수야!╋ [sooya23] 971 읽음    2004-06-23 09:57
윈도우는 메시지 처리방식으로 운영된다는건 아시지요~?

무한루프 안으로 들어가면 아무런 동작도 못하는 이유는 해당 인스턴스가 받은 메시지를 처리할 시간을 주지 않았기 때문입니다.

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 를
: 불러 사용하는 방법은 없는지 있다면 어떻게 사용하는지
: 아니면 다른 방법은 없는지요? 무한루프 안에서 탈출하는
: 방법을 묻고 있습니다.

+ -

관련 글 리스트
35869 FormKeyPress 를 프로그램 중에서 호출할 수 있는가요? ymin 839 2004/06/23
35872     Re:FormKeyPress 를 프로그램 중에서 호출할 수 있는가요? 수야!╋ 971 2004/06/23
35891         Re:Re:FormKeyPress 를 프로그램 중에서 호출할 수 있는가요? ymin 861 2004/06/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.