이 질문은 임프님이 올리신 Tip'N Tricks의 18번 글을 참고하여 작성한후 일어나는 문제입니다.
또한 임프님이 올리신 글 내용중 두가지 방법의 소스가 같음을 먼저 밝힙니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=18
임프님이 알려주신 폼에서 다른 폼을 동적 생성하게되면 그 폼은 테스크바에 올린 폼이 아닌 원폼이 주인이 되어버립니다.
질문 요약 :
1. 메인폼 ( M ) 에서 서브폼 ( S )를 동적생성하였습니다. : new s(this)
S에는 테스크바에 표시되도록 작업하였습니다. : CreateParams()
S의 서브폼 ( S1 )을 동적 생성하였을때 : new s1(this)
S1은 테스크바의 M을 클릭하면 엑티브 됩니다.
하고싶은 작업은 S1을 S를 클릭하였을때 엑티브되게 하고싶습니다.
질문이 부족하거나 미흡하면 알려주시면 더 상세히 적어보도록 하겠습니다.
제가 설계한 프로그램이 이런식으로 동작하고있습니다.
되지 않는 방법이라 설계가 잘못 되었을 경우에도 알려주시기 바랍니다.
제가 테스트한 간단한 소스 올립니다.
Unit1.cpp
include "unit2.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Form2 = new TForm2(this);
Form2->Show();
}
//---------------------------------------------------------------------------
Unit2.cpp
include "Unit3.h"
void __fastcall TForm2::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
Params.ExStyle = WS_EX_APPWINDOW;
Params.WndParent = GetDesktopWindow();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
TForm3 *Form3 = new TForm3(this);
Form3->ParentWindow = Form2;
Form3->Show();
}
//---------------------------------------------------------------------------