임프님의 글중에 첫번째 경우의 함수에는 아마도
Params.WndParent = GetDesktopWindow();
이 부분을 지우면 첫번째 경우일듯 싶습니다.
그리구요 폼3의 어미를 폼2에다 넣어주는건 아래와같이 해결했구요
해결에 Magic.Potato 님이 도움을 주셨습니다.(사실 감자가 다했음)
스거하세용~
void __fastcall TForm3::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
Params.WndParent = ((TWinControl *)Owner)->Handle;
}
수야!╋ 님이 쓰신 글 :
: 이 질문은 임프님이 올리신 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();
: }
: //---------------------------------------------------------------------------
:
:
:
: