| [ 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 - ------------------------------------------------------------------------------- |