|
페이지 컨트롤 컴포넌트를 만들고 그 위에 TabSheet을 올려 놓았습니다.
그 다음 TabSheet에다가 에디터 컨트롤을 올리려고 합니다.
프로그램 수행시, 폼에 만든 TabSheet와 에디터 컨트롤이 개별적으로 수행하는 것은 가능한데,
에디터 컨트롤을 TabSheet에 붙이는 것은 되지 않네요..
이 에디터 컨트롤은 CreateWindow()를 사용해서 실행시킬 수 있습니다.
소스를 보면, 아래와 같이 코딩해 주면, Form과 Scintilla라는 에디터 컨트롤이 독립적으로 뜹니다.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TTabSheet *pTabSheet = new TTabSheet(PageControl2); // Initial TabSheet Component
pTabSheet->PageControl = PageControl2; // Initial TabSheet Component
// Initial Scintilla
LoadLibrary("SciLexer.DLL");
HWND wMain;
wMain = CreateWindow(
"Scintilla",
"Source",
WS_OVERLAPPED,
//WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0,
100, 100,
//pTabSheet->Parent,
0,
0,
0,
0);
::ShowWindow(wMain, SW_SHOW); //Scintilla runs indendent to Form Window.
}
이 Scintilla라는 에디터 컨트롤을 TabSheet에 붙이기 위해서, WS_CHILD 로 설정하고,pTabSheet->Parent 혹은 pTabSheet->Handle을 사용해서 해봤지만 되지 않더군요.
질문이 이해가 가실지 모르겠습니다. ^^
요점을 말하자면,
C++ Builder 자체의 컴포넌트에 win32로 만든 컨트롤을 붙이려는 것입니다.
win32로 만든 컨트롤은 CreateWindow()나 CreateWindowEx()를 사용해서 실행시키지요..
컴포넌트위에 CreateWindow()함수가 동작하는 방법이 궁금합니다.
혹 CreateWindow()말고 다른 함수가 있는지도 궁금합니다.
|