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
[44561] ProcessMessage의 사용에 관해서...
권기식.with☆ [orion96] 895 읽음    2006-04-19 12:25
또 질문 드리네요...

빌더를 한동안 멀리 하다 하니 궁금한 것들이 한꺼번에 쏟아져내립니다.. ^^;

오늘의 궁금한 점입니다.

루프를 돌면 사용자 인터페이스가 먹통이 되는 경우가 많습니다.

제가 하는 것을 예로 들면..

시리얼 장치로 어떤 명령을 내리고 응답이 오길 기다립니다.
while 문을 돌면서 입력 버퍼에 원하는만큼의 문자가 들어오길 기다리는데...
그냥 루프를 돌면 입력 버퍼로 데이터 수신이 안되더군요.

예를 들어... CPort를 이용한다면..

while(ComPort->InputCount() < 5);

이런 문장이 있다면 여기서 무한 루프에 빠져버립니다.

그래서

while(ComPort->InputCount() <5)
    Application->HandleMessage();
라고 수정해줍니다.

이런 함수가 타이머로 정기적으로 호출된다면...
메시지를 처리하는 과정에 다음 타이머 인터럽트가 걸릴 수 있습니다.
이런 동작이 짬뽕이 되면 프로그램을 종료시켜도 종료가 안되고 먹통이 되는 경우가 빈번하더군요.
이런 동작이 필요할 때 쓰레드 말고 다른 좋은 방법이 없을까 해서 문의드립니다.

쓰레드를 공부해야 하는데 공부해서 만들 시간이 없어서 꽁수를 쓰고 있습니다. ^^;

그리고 ProcessMessage와 HandleMessage 함수의 용도의 차이가 헤깔리네요.

전자의 경우 프로그램이 메시지를 처리하도록 인터럽트를 거는거고...
후자는 윈도우가 메시지를 처리하도록 하는 건데...
아무래도 Windows에 대한 이해가 부족해서 그렇겠지요.. ^^;

명쾌한 해설 부탁드립니다.. (__)

+ -

관련 글 리스트
44561 ProcessMessage의 사용에 관해서... 권기식.with☆ 895 2006/04/19
44569     Re:ProcessMessage의 사용에 관해서... smleelms 1732 2006/04/20
44570         감사합니다. 권기식.with☆ 904 2006/04/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.