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
[53411] 루프를 빠져나가려면 뭔가가 필요하지요 ㅎㅎ
아제나 [azena] 1221 읽음    2008-05-14 10:21
초초초보님 소스를 살펴보니,

FindWindow()에서 핸들을 얻지 못했을 경우에 루프를 빠져 나가는 것 이외에 경우에는 루프를 빠져나가는 곳이 없으니 프로그램이 종료되지 않는 것이 당연한 것이랍니다.

Sleep()은 반복문 종료와는 상관없고요. 반복문이 너무 빨리 돌아서 시스템 자원, 즉 CPU가 100% 되는 것을 막으려는 의도에서 추가하라고 한 것이예요.

: 다른작업이 안되서 dll로 만들어놨거든요
: 이걸 내부적으로 실행되게끔하려고합니다

그럼 지금 상태가 DLL이란 이야기이신데, DLL에서 EXE로 옮기신다는 이야기이신지 ㅡ.ㅡ
현재 상태에 따라서 해결 방법이 약간의 차이가 있습니다.
내부 프로세스간 통신 기술(IPC)이 여러가지가 있으니 검색/응용하여 써먹으세요.

모든 환경에서라도 써먹을 수 있게 가장 간단한 예를 하나 들어드리겠습니다.

일단 프로그램이 시작하면 C: 루트에 stop.txt 파일을 하나 만듭니다.
루프 내부에서 이 파일이 있는지 계속 검사하다가 파일이 사라지면 break로 루프를 종료시킵니다.

:     Sleep(5);
:     ReleaseDC(h,dc);   }
if( FileExists( "C:\\stop.txt" ) != true ) break; // 추가내용
:     }while (1);

이제 언제든지 루프를 종료하고 프로그램을 끝내고 싶으면 간단하게 C:\stop.txt 파일만 삭제해주면 되는 겁니다.
간단하죠. ㅋ


초초초보 님이 쓰신 글 :
: 제가 무한반복루틴을썻거든요
: 소스는 아래처럼해놨어요
: do{
:     HWND h = FindWindow(NULL,"팡야:시즌4");
:     if(h == 0)
:         break;
:     else {
:     HDC dc = GetDC(h);
:     Graphics::TBitmap *wa=new Graphics::TBitmap;
:     wa->LoadFromFile("angle.bmp");
:     TransparentBlt(dc, 0, 0, wa->Width,wa->Height, wa->Canvas->Handle,0,0 ,wa->Width, wa->Height,RGB(255,255,255));
:     delete wa;
:     Application->ProcessMessages();
:     Sleep(5);
:     ReleaseDC(h,dc);   }
:     }while (1);
: 위 처럼 해놨는데요 이렇게하면 비트맵이 자꾸반짝거리면서
: 그려집니다 반짝거리지 않도록 하는방법 없을가요?
: 그리고
: 반복루틴에 탈출하는걸 해당 윈도우 가 없으면 종료되도록해놨어요
: 이소스는 dll 내부소스거든요
: dll아아닌 실행프로그램에다가 해놓으면 루틴만 실행되고
: 다른작업이 안되서 dll로 만들어놨거든요
: 이걸 내부적으로 실행되게끔하려고합니다
:
: 지금 이렇게 해논소스도 팡야:시즌4의 캡션을 가진윈도우가 종료되지않으면 이프로그램이 종료조차 되지
: 않는 상황이거든요 검색해봐가며 프로세스메시지 코드를 넣어놨어요
:
: 이문제를 없앨수 있는방법 없을가요? sleep쓰라고해서 쓰긴했는데
: 그래도 종료가되지않아요  종료버튼눌러도 팡야:시즌4의 캡션을 가진윈도우가
: 종료되지않으면 루프가 게속돌아서 이프로그램이 종료되지않습니다
: 이걸 해결하고싶습니다
: 명확한 해답좀 부탁드립니다

+ -

관련 글 리스트
53407 반복루틴에대해서요 다시질문요 초초초보 1195 2008/05/14
53411     루프를 빠져나가려면 뭔가가 필요하지요 ㅎㅎ 아제나 1221 2008/05/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.