|
임펠리테리입니다.
차일드로 폼에 포함시킬 윈도우가 VCL 폼이라면 아주 간단한데요, 그냥 차일드가 될 폼의 Parent를 패어런트 측
폼으로 설정하면 됩니다.
만약 차일드가 될 폼이 CreateWindow()로 만든 폼이라면 API 함수인 SetParent()를 쓰면 됩니다.
이 함수의 첫번째 인자는 차일드가 될 윈도우 핸들, 두번째 인자는 패어런트가 될 윈도우 핸들입니다.
이 함수를 빌더에서 사용할 때는 약간 주의를 해야 하는데, TForm의 멤버인 SetParent() 함수와 혼동해서
컴파일에러가 납니다. 그래서 이걸 빌더에서 사용할 때는 앞에 ::를 붙여주어서 객체의 멤버가 아니라고
지정해주어야 합니다.
조금 재밌는 장난을 쳐봅시다.
새 프로젝트의 빈 폼에 버튼을 두개 놓고, 다음과 같이 핸들러를 작성합니다.
HANDLE BcbHandle;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BcbHandle = FindWindow("TAppBuilder", NULL);
::SetParent(BcbHandle, Handle);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
::SetParent(BcbHandle, NULL);
}
그럼 이만...
왕초보 님이 쓰신 글 :
: Form에 삽입된 차일드 윈도우를 만들고 싶습니다.
:
: Form의 핸들을 CreateWindow()로 넘겨주어서 생성하는 방법을 알고 싶습니다.
:
: 윈도우가 생성되는 CreateWindow()에서 윈도우 스타일을 차일드로
: 하고, 윈도우 핸들을 Parent Window인 this->Handle이나 Form1->Handle 등의
: 값을 넘겨주어도 윈도우가 생성이 되질 않네여.
: 제가 뭔가 잘못한건가여??
|