폼을 하나 만들고 그 위에 에디터 컨트롤을 붙이려고 합니다.
폼과 에디터 컨트롤이 독립적으로 실행하는 것은 가능한데, 폼위에 에디터 컨트롤을 하나의 창처럼 붙이는 방법을 모르겠습니다.
다음 그림을 보면,
왼쪽의 쪼끄만 창이 CreateWindow()함수를 사용해서 Form1의 OnCreate 이벤트 발생시 만든 것입니다. dll을
이용하는 에디터 컨트롤이지요.
이 에디터 컨트롤을 Form1위에 딱 붙이고 싶습니다. 하나의 창처럼 동작하도록... 방법을 모르겠네요.. 소스
코드를 보여드릴께요..
다음이 소스 입니다.
간단하게 OnCreate 이벤트와 연결되는 함수에 에디터 컨트롤을 CreateWindow함수를 이용해서 띄어만 줍니다.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
LoadLibrary("SciLexer.DLL");
HWND wMain;
wMain =
CreateWindow(
"Scintilla",
"Source",
WS_CLIPSIBLINGS,
//WS_CLIPCHILDREN |
WS_BORDER,
//WS_CHILD | WS_VISIBLE |
WS_CLIPCHILDREN,
//WS_DLGFRAME,
0,
0,
100,100,
0,
0,
0,
0);
::ShowWindow(wMain, SW_SHOW);
}
위와 같이 하면 위의 그림처럼 에디터 컨트롤이 폼에 독립적으로 실행되지요..
CreateWindow함수는 다음과 같습니다.
HWND CreateWindow(
LPCTSTR
lpClassName, // pointer to registered class name
LPCTSTR lpWindowName, // pointer to window name
DWORD dwStyle, //
window style
int
x,
// horizontal position of window
int
y,
// vertical position of window
int
nWidth,
// window width
int
nHeight, //
window height
HWND
hWndParent, // handle to parent or
owner window
HMENU
hMenu, //
handle to menu or child-window identifier
HANDLE
hInstance, // handle to application
instance
LPVOID
lpParam // pointer to
window-creation data
);
밑에서 네번째 함수 파라미터..
HWND hWndParent를 변경해 주면 되지 않을까 싶어서,
0대신에 Form1->Handle 과 같은 방법으로 변경했습니다. 이렇게 변경하면 에디터 컨트롤 창이 아예 뜨지를
않네요..
조언 꼭 부탁드립니다.
이런 질문을 볼랜드 개발자 포럼에 질문하려면, 어디에 질문해야 하는지요.
개발자 포럼이 여러개가 있어서...