감사합니다. 수정해준 소스를 살펴보니
그 따라댕기는 투평폼을 숨겨주는 소스가 추가되어있네요(보통 폼 숨기는거랑 달라서 제가 못찼었었든 <= 아 발음 꼬인다. ㅡㅡ;)
종료 문제는.. 카운터 + 정적변수(얼마전부터 쓰고 있는 방법임 폼이 열릴때 1 증가 닫힐때 1 감소)으로 해결됩니다.
예전부터 이상하게 생각했었는데. 다른 툴들은. 메인폼만 남으면 정젹변수의 수치가 0이 되던데 C++Builder의 경우 1이 되버려서요.. 저 팁을 보니. Project1이란 놈이 떡하니버티고 있어서 1이 기본으로 증가되버린거 같네요..
암튼 C++Builder의 경우 정적변수를 카운터로 항시 감시하다가 1이 되면 종료코드로 종료시키면 되는데 종료되지 않는 경우가 종종있어 이경우 메인폼 닫히는 부분의 이벤트에다가 종료코드를 한번 더 써주면 됩니다.
장성호 님이 쓰신 글 :
: 다시한번 강조합니다만
:
Application->Handle이 하나의 윈도우(Form)이라는것을 꼭 기억하십시요
:
: VCL의 TCustomForm이나 TForm을 상속받은 윈도우는 아니기 때문에
: 다른 폼과 같이 동작은 하지 않습니다만
: Application->Handle도 하나의 윈도우로써 Win32 API는 똑같이 적용됩니다.
:
: 다음 팁을 꼭 읽어보십시요
:
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=602
:
: 그리고 님이 올려주신 소스를 약간 수정하였습니다.
: 참고 하시구요
:
:
: 제가 수정한 소스에서도 프로그램 종료에 관해서 여전히 문제가 있습니다.
: 그 문제는 스스로 해결해 보십시요
:
: 그럼
:
: 나그네 님이 쓰신 글 :
: : 메인 폼을 아무리 HIde 시켜도.
: : 작업 표시줄의 그 프로젝트(Project1) 아이콘은 그대로 네요..(새창 개념 없을때는 창이 숨겨지면서 아이콘도 모두 사라집니다. 그러나 새창이란걸 하나 뛰울때는 안 없어지네요 ㅠㅠ)
: :
: : 스샷하고 소스 파일 첨부합니다.
: : (소스는 두가지인데요 첫번째꺼는 버튼1을 누르면 자기자신을 새창으로 뛰웁니다. 그리고 버튼2를 누르면 메인창이 사라집니다. 메인창 아이콘이 없어지는데 'Project1' 이거는 안 없어지더군요..
: : 두번째소스는 전혀 다른 폼을 새창으로 뛰웁니다. 기능 동일하고요.(버튼은 메인창에만 있음) Project1 아이콘 안없어지는거 동일합니다.)
: :
: : 장성호 님이 쓰신 글 :
: : : 링크해놓은 글을 잘 읽어보면
: : : 맨 아랫쪽에 님이 얘기하신 현상에 대해 얘기하고 있습니다.
: : :
: : : 간단히 원인은
: : : VCL에서는 Application->Handle이 하나의 윈도우입니다.
: : : 그리고 TCustomForm을 상속받은 모든 폼은
: : : Application->Handle을 기본적으로 WndParent로 가지게 되구요..
: : :
: : :
: : : 해결방법은
: : :
: : : 방법1
: : : 첫번째 생성되는 폼에서는 작업표시줄에 생성되도록 하지 않는다.
: : :
: : :
: : : 방법2
: : : Application->Handle이 하나의 윈도우이므로
: : : 이윈도우(Application->Handle)를 Hide시켜버린다.
: : :
: : :
: : : 방법3.
: : : 맨 먼저 생성되는 메인폼(Application->MainForm)을 Hide시켜 버리고
: : : sub-form만으로 작업한다.
: : :
: : :
: : :
: : : 방법2가 님께서 원하시는것에 가장 가까울지 모르겠는데..
: : : Application->Handle 과 Application->MainForm은 매우 긴밀한 관계가 있습니다.
: : : WM_SYSCOMMAND의 SC_MINIMIZE , SC_MAXIMIZED , SC_RESOTRE.. 등이 서로 연동되게 되어있습니다.
: : :
: : : C++Builder2006 이상에서는 메인폼이 TaskBar에 나타나도록 하는 방법이 VCL차원에서 제공되지만
: : : 그 이하 버젼의 VCL(C++Builder 또는 Delphi)에서는 그렇게 하려면 WM_SYSCOMMAND 처리를 또 잘 해줘야 합니다.
: : : 연동되는 것을 끊으줘야죠..
: : :
: : : 그러니 그냥 방법3이 편할듯 하네요...
: : :
: : : 그럼..
: : :
: : :
: : :
: : : 나그네 님이 쓰신 글 :
: : : : 질문을 더 올립니다.
: : : : 참고 URL대로 해서 아래 작업 표시줄에 여러개 뜨게 하는건 됬으나..
: : : : 자기 자신에게 적용하니.. 처음 실행할때
: : : : 작업 표시줄 아이콘이 두개가 뜨네요.
: : : : 즉, 프로젝트 이름을 A라고 가정하고 창 이름을 B라고 가정하면
: : : : 처음 실행할때 작업 표시줄에
: : : : [ A ][ B ]
: : : : 이렇게 됩니다. 여기서 자기자신(B)를 새창으로 열면
: : : : [ A ][ B ][ B ]
: : : : 이렇게 되고요
: : : : 여기서 A부분을 안보이게 하거나 없앨 수 없나요?
: : : :
: : : :
: : : : 장성호 님이 쓰신 글 :
: : : : : 참고하세요
: : : : :
: : : : :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=18
: : : : :
: : : : : 나그네 님이 쓰신 글 :
: : : : : : 다음과 같이 새창을 뛰울때..
: : : : : : 작업표시줄에 아이콘이 추가로 생기지 않는데.. 왜 그런건가요?
: : : : : : 창을 새로 열때마다. 작업표시줄에 아이콘을 계속 추가되게 할 순 없나요?
: : : : : :
: : : : : :
: : : : : : TForm2 *frm = new TForm2(this);
: : : : : : frm->Show();
: : : : : :