음...
원하시는 기능을 하려면 Form1의 Window-Handle을 새로 생성해야 합니다.
Form1 자체(TForm1클래스의 객체)를 새로만드는것은 아니구요
Form1->Handle 만 새로 만들면 됩니다.
어떻게 하냐구요?
Form1->RecreateWnd();
위와같이 RecreateWnd()를 호출하시면 됩니다.
[주의1]
단 주의할 점은 Form1의 Window-Handle만 새로 생성되는것이 아니라
Form1안에 있는 모든 WinControl의 Window-handle이 모두 새로 만들어 집니다.
Panel이나 GroupBox나 Button등의 window-handle이 모두 새로 생성되지요~!
Form1이 이미 화면에 보여지고 있는상태에서 위 함수를 호출하면 Form1화면전체가 한번 껌뻑거립니다.
위 함수를 명시적으로 호출해 주지 않아도
Form의 BorderStyle을 변경한다던지
BorderIcons , Position , PopupMenu 등을 변경할때도
Form의 Handle이 새로 생성될수(RecreateWnd()가 호출될수) 있습니다.
[주의2]
Form안에 있는 Control중에는 Window-Handle이 새로 생성된 경우에..
기존에 가지고 있던 정보를 유실하는 경우가 발생하는 경우도 있습니다.
(아주 특이한 경우임..)
참조
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=955
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=54202
http://cafe.naver.com/bcbmaster/745
이상입니다.
마제 님이 쓰신 글 :
: void __fastcall TForm1::CreateParams(TCreateParams &Params)
: {
: TForm::CreateParams(Params); // call base class first
: Params.WndParent = Application->MainForm->Handle;
: }
:
: 위와 같은 식으로 항상 서브창을 메인보다 위에 뜨게끔 해놓은 방식은 예전부터 많이 사용을 했었는데....
:
: 이것을 실행중에 옵션으로 사용자가 원할때만 사용하게 하려면 어찌 해야 하는지 아무리 찾아도 안나오네요...
:
: Params.WndParent = Application->Handle로 하면 될것 같은데....
:
: TCreateParams값을 어디서 불러와야 할지 잘 모르겠습니다.
:
: 혹시 경험이 있으신분이 계신가요?
:
: