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
[2009] Re:안녕하세요... 사용자 메시지 정의에 대해서...
박지훈.임프 [cbuilder] 3393 읽음    1999-09-28 00:00
: 안녕하세요...
:
: 자꾸 질문만 하네요... 실력이 없어서리... ^^;
:
: 제목대로 사용자 메시지 정의에 대해 알고 싶습니다....
:
: 비주얼씨책에 나온 내용은 툴자체를 비주얼씨를 바탕으로 설명해놔서
:
: 빌더에 적용시키려니 잘 모르겠더라구요...
:
: 우선 1이라는 함수에서 코드를 실행하다가 2라는 함수를 실행하기
:
: 위해 보통
:
: 1()
: {
:     .
:     .
:     
:     2();
:     .
:     .
: }
:
: 이런식으로 하잖아요.. 이런경우는 2함수를 끝내고 다시 1함수의
:
: 그 다음부분으로 넘어가는데 그렇게 말고 제가 정의한 메시지를
:
: 일으켜서
:
: 1함수는 1함수대로 실행해나가고 1함수가 발생시킨 메시지에 의해
:
: 동시에 2함수는 2함수대로 실행해나가도록 하고 싶은데 조언을
:
: 부탁드리구요
:
: 또 하나있는데요...
:
: Application->Processmessages();
:
: 라는 함수의 작동에 대해 알고 싶습니다...
:
: 제가 사용해본 경험으로는 음성을 녹음할때 3초간 녹음하는 동안
:
: 다른일을 못하도록 저 함수를 썼었는데 3초간은 다른 버튼이라든지
:
: 윈도우 종료버튼이 전혀 먹히질 않더군요...
:
: 여기에서 다른 메시지도 처리할수 있도록 할수 있는지요...
:
: 이번엔 질문의 요지가 정확히 적혔는지 모르겠네요...^^;
:
: 안녕히 계세요...



임펠리테리입니다.

메시지의 동작을 잘못 이해하신 것 같습니다. 메시지는 그자체가 쓰레드로 처리되지 않습니다.
메시지 큐 자체가 쓰레드단위로 존재하므로, 전달된 쓰레드 안에 철저히 갇힌 상태에서 처리되죠.
그러니까, 하나의 메시지처리중 다른 메시지가 들어온다고 해서 두 메시지가 동시에 처리되지는
않습니다. 새로운 메시지가 들어오더라도 처리중인 메시지를 모두 처리한 후에야 다음 메시지를 처리합니다.

TApplication->ProcessMessages()는, 현재 처리중인 작업을 잠시 중단하고 메시지큐에
쌓인 메시지들을 우선 처리하도록 해주는 함수입니다. 생각하시는 것과 정반대의
역할을 하죠. 아주 바쁜 작업의 루핑이 진행중일 때 이 함수를 루프의 중간에 삽입하면
한번 루프를 돌때마다 쌓인 메시지를 처리해주므로, 어플리케이션이 "응답없음" 상태로
빠지지 않게 해주는 것입니다.

그럼 참고하시길...

+ -

관련 글 리스트
2003 안녕하세요... 사용자 메시지 정의에 대해서... 문보석 3250 1999/09/28
2009     Re:안녕하세요... 사용자 메시지 정의에 대해서... 박지훈.임프 3393 1999/09/28
2010         하하.. 완죤히 반대로 알고 있었네요... 감사합니다... 문보석 3176 1999/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.