CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): kdskorea (김두식)
날 짜 (Date): 1996년02월04일(일) 01시44분30초 KST
제 목(Title): [Q] Windows에서 긴 프로그램 중단하기...

안녕하세요.

Windows에서 프로그램을 짜다가 한가지 질문이 있어서 여기에 글을 올립니다.

다름이 아니라 오랜 시간이 걸리는 작업을 중간에 취소할 수 있도록 하려고 합니다.
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
그래서 하나의 함수를 여러개로 쪼개서 각각을 별개의 메세지로 분리하고,

하나의 작업이 종료되면 PostMessage()로 다음 작업을 수행하도록 했습니다.

즉,

-------------------------------------------------------------------------
WindowProc(.....)
{
switch(wMessage)
{
case WM_COMMAND:
switch(wParam)
{
case Begin:
...
PostMessage(1stJob);
break;
case 1stJob:
...
PostMessage(2stJob);
break;
case 2ndJob:
...
PostMessage(LastJob);
break;
case LastJob:
...
DestroyWindow(...);
break;
case CANCEL: // 중간에 멈출수 있도록...
DestroyWindow(...);
break;
}
...
}
...
}
-------------------------------------------------------------------------

와 같이 하여 CANCEL 버튼을 누르면 바로 메세지 큐에 CANCEL 메세지가 들어와서

프로그램이 도중에 종료될 수 있을 것이라고 생각을 했는데,

일단 작업이 시작되면 예상과는 달리 CANCEL 메세지가 처리되지 못하는 것

같습니다. 아마도 다음 작업을 수행하도록 하는 메세지가 우선 처리되나 봅니다.

Windows 응용 프로그램들을 보면 오랜 시간이 걸리는 작업을 중간에 중단시킬 수

있도록 하던데, 이러한 것들을 어떻게 구현해야 할지 모르겠습니다.

일요일 새벽 1시가 넘도록 고민하다가 여러분들의 도움을 빌리고자 합니다.

아시는 분, 꼭 좀 저에게 알려주세요.

부탁드립니다.

-------------------------------------------------------------------------------
I just want you for my own
More than you could ever know
Make my wish come true
All I want for Christmas is you               - Mariah carey, Merry Christmas -
-------------------------------------------------------------------------------

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.