|
2008년 09월 23일
서버로 부터 핫픽(에코) 메시지를 받는 부모 프로세스(클라이언트)의 쓰레드가 있습니다. 이 쓰레드는 서버가 비정상 종료 했을 경우 이에 대한 메시지를 부모 프로세스에게 전달해 주도록 프로그램을 설계하였습니다.( 쓰레드를 돌려 놓고 종료 될 때까지 기다리자는 UI가 무한대기 상태에 빠지는 현상이 생길게 뻔해서 이런 방법을 사용했습니다 ^^) 그리고 사용자 정의 메시지를 만들고 이 메시지를 SendMessage로 날렸습니다. 이 글 제목처럼 PreTranslateMessage()가 받아주길 바란면서요 ;; while(GetMessage(&Message, 0, 0, 0)) { TranslateMessage(&Message); DispatchMessage(&Message); } 윈도우의 경우 메시지가 발생하게 되면 시스템 큐에 메시지가 채워지게 되고 곧 사용되어질 쓰레드 메시지 큐에 메시지가 전달되게 됩니다. 그러면 해당 쓰레드(즉 메시지를 받는 프로그램)는 GetMessage를 통해 쓰레드 큐로부터 메시지를 전달 받습니다. 그리고 이 메시지는 PreTranslateMessage를 거친 후 TranslateMessage나 DispatchMessage에 전달되게 되죠. PreTranslateMessage는 메시지는 TranslateMessage나 DispatchMessage에 전해지기 전에 처리할 필요가 있을때 사용됩니다. 위 PreTranslateMessage의 설명에서도 언급했드시 메시지 큐로부터 전달 받은 메시지를 처리하는 역할을 하는 함수이지요. 그런데 SendMessage는 메시지를 큐에 넣는 것이 아니라 곧바로 윈도우 프로시저로 보내 즉각 처리하도록 하며 메시지가 완전히 처리되기 전에는 리턴하지 않습니다. 결국 함수를 잘못 고른거죠 ^^ 그렇다면 메시지 큐에 메시지를 전달할 수 있는 함수는 누구일까요? 바로 PostMessage입니다. 이 함수는 Msg인수로 지정된 메시지를 윈도우의 메시지 큐에 집어넣어 윈도우 프로시저에서 이 메시지를 처리하도록 합니다. 즉, PostMessage가 전달한 메시지는 메시지 큐에 전달되고 GetMessage가 이 메시지는 받은 후 PreTranslateMessage에 메시지를 전달하여 처리할 수 있도록 하는 것이지요 ^^ 이건 샘플 프로그램의 코드입니다. ![]() 아래는 샘플 프로그램 실행 화면인데요 SendMessage버튼을 누르면 SendMessge를 발생 시키고 PostMessage버튼을 누르면 메시지를 메시지 큐에 전달하고 PretranslateMessage에서 이를 처리하여 "Receive PostMessage ..^^" 라는 메시지를 뿌려줍니다. ![]() ?? 아무런 반응이 없네요 ^^ SendMessage는 메시지 큐로 메시지를 보내지 않으니까요 ~~ ![]() ![]() 오호 ~ 잘 되네요 ^^
|
ABOUT
![]() 새로운 도전을 위해 약 1년간 자리를 비웁니다. 그 동안 블로그에 방문해 주신 분들께 진심으로 감사드립니다. 1년 뒤 .NET 관련 양질의 정보를 가지고 돌아오겠습니다. by greenfrog 메모장
카테고리
최근 등록된 덧글
좋은 자료 감사합니다 ^^
by 정승용 at 12/24 잘 봤습니다. 그런데 저 상태에서 하얀.. by 비니 at 07/24 안녕하세요. 내용이 좋아서 참고합니다... by 김현수 at 07/09 1년뒤....너무 멀군요... 도전 성.. by rince at 06/26 좋은 내용이네요 많은 도움이 되었습니다.. by 이준배 at 06/04 좋은 정보 감사합니다^^ by 코즈 at 06/03 사랑합니다 by 최곱니다 at 05/12 좋은정보 감사합니다. by 이창열 at 05/11 좋은 정보 잘보고갑니다 그리고 제가 .. by Cherry at 04/27 답글이 늦어서 죄송합니다. 요즘 이래저.. by greenfrog at 04/20 좋은 정보 잘보고 갑니다^^ 도움이 많.. by 토끼 at 04/15 좋은 정보 감사합니다. 다음에 써먹어야.. by neptunex at 03/26 ㅎㅎ 잘 찾아보면 재미있는 플러그인 많.. by greenfrog at 03/22 예전에는 일부러 에러내고 그거찾아가는.. by 규학 at 03/13 아 ~ 그 일이었군요 ^^ 글 잘 봤어요 .. by greenfrog at 02/21 하나은행과 정말 생동감 넘쳤지요 ^^ by rince at 02/20 rince님의 생동감 넘치는 하루가 궁금.. by greenfrog at 02/20 어제, 그제 정말 생동감 넘치는 하루.. by rince at 02/19 저도 짬 비릴때 고참들이 웃기면 그것 .. by greenfrog at 02/19 전 자주 웃는 편이지요 ^^; 군대에선 .. by rince at 02/18 최근 등록된 트랙백
자바로 작성된 프로그램 단 한번만 실..
by Start!!! 제 취향이 Oddly Enough와 안성맞.. by Oddly Enough 2009년 보기 시작하는 미드 by Pell's seer Blog [포토] 국민 여러분, 떡국 드시고 .. by Green Monkey Blog** MARVEL MOVIES : 아이언 맨 by 잠보니스틱스 ▶◀ 최진실씨, 삼가 고인의 명복을 .. by ** MY's kitchen ** 재미로 해보는 MBTI 검사 by A2공간 - 도움되는 글을 쓰자 러시아 극우조직 스킨헤드를 파헤친 기자 by Oddly Enough [Sleeping Through My Fingers].. by 바람나무, 생각가는대로 구글 크롬 안내서의 작지만 큰 실수 by Oddly Enough PETA, 돼지학대 농장 잠입취재 by Oddly Enough 병쭈니의 생각 by chrisjun82's me2DAY 준이아빠의 생각 by kkh1030's me2DAY 안철수가 말하는 "현대의 인재에.. by loading... 100% 이전블로그
이글루 파인더
|