|
----------- 먼저번 질문 내용 -------------------
고수님들 안녕하세요~~~
궁금한 게 있어서 이렇게 글을 남겨 봅니다.
메인폼과 프로그레스바를 위한 폼 이렇게 폼 두개를 만들어서요.
메인폼에서 프로그레스바 역할을 하는 폼을 show()하였습니다.
이때 프로그레스바 역할을 하는 폼의 폼스타일은 fsStayOnTop입니다.
문제는 프로그레스바 역할을 하는 폼이 show()되었을때, 다른 윈도우(인터넷익스플로러와 같은 다른 프로그램..)
가 디스플레이 되면 프로그래스바 역할을 하는 폼을 close()해도 메인폼이 종료되기 전까지 계속 존재합니다.
답답하네요. visible일때 close() 기타 등등.. 테스트해보았는데.. 그대로네요.
더 신기한건.. 프로그레스바 역할을 하는 폼이 화면에 떳을때, 다른 윈도우가 뜨고 그 윈도우를 이동하였을때만
존재하고요.. 만약 다른 윈도우가 뜨고 그대로 유지하면 정상적으로 프로그레스바 역할을 하는 윈도우가 사라진다는겁니다.
------------------------------------------------------------
답변
1. 보이는것과 존재하는것을 조금 이해가 안되게 질문을 올렸네요
- 님의 소스에서 Form2는 항상 존재합니다. 프로그램이 종료하기까지..
- 왜냐하면 Form2->Close는 Form2가 안보일뿐이지 삭제되지는 않습니다.
- 만약 메모리에서 완전히 사라지게 하려면...
delete Form2; 하거나..
Form2->OnClose 이벤트에서 Action=caFree ; 로 설정해주시면 됩니다.
문론 다시 Form2를 쓰려면 Form2=new TForm2(this); 해줘야겠죠..
2. 프로젝트 옵션에서 "Forms"를 보시면 auto-careate forms 에 Form1과 Form2가 들어있네요
즉 프로그램이 시작할때 Form1과 Form2가 자동생성되죠
이 두폼이 실제 생성되는 부분은 progress_test.cpp 에서 WinMain함수의 내용을 보시면 나옵니다.
3. 그리고
"문제는 프로그레스바 역할을 하는 폼이 show()되었을때, 다른 윈도우(인터넷익스플로러와 같은 다른 프로그램..)
가 디스플레이 되면 프로그래스바 역할을 하는 폼을 close()해도 메인폼이 종료되기 전까지 계속 존재합니다. "
위말은 이해가 잘안됩니다.
jini 님이 쓰신 글 :
: 안녕하세요~~ 고수님들..
:
: 먼저 답변 감사합니다..
:
: 여전히 삽질중입니다.^ ^
:
: 음.. 제가 무언가 놓치고 있는듯한 기분인데요..
:
: 소스를 올렸으니.. 많은 답변 부탁 드립니다.
:
: 좋은 하루 되세요
|