C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70509] Re:[질문] 메인보다 CreateParams에서 항상 서브창이 위에 뜨게끔 조절한 경우
장성호 [nasilso] 3145 읽음    2013-12-12 22:06
음...

원하시는 기능을 하려면 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값을 어디서 불러와야 할지 잘 모르겠습니다.
:
: 혹시 경험이 있으신분이 계신가요?
:
:

+ -

관련 글 리스트
70501 [질문] 메인보다 CreateParams에서 항상 서브창이 위에 뜨게끔 조절한 경우 마제 2715 2013/12/12
70509     Re:[질문] 메인보다 CreateParams에서 항상 서브창이 위에 뜨게끔 조절한 경우 장성호 3145 2013/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.