|
문의한 질문에 답변을 올립니다.
저도 왜 이렇게 되는지는 잘 모르겠읍니다.
아시는 분은 논리적인 설명을 달아주면 고맙겠읍니다.
이것 저것 델마당과 볼렌드 포럼에 올라와 있는 팁과 강좌를 참고삼아 시도를 해보다가 갑자기 영감이 떠올라 한번 해본건데 성공하였읍니다.
// 시스템 전체에서의 액티브 (부모) 윈도우의 쓰레드 아이디
hThreadID := GetWindowThreadProcessId((GetForegroundWindow), nil);
// 현재 쓰레드와 연결하기
AttachThreadInput(GetCurrentThreadID, hThreadID, True);
// 현재 포커스를 가지고 있는 (자식) 윈도우의 핸들
FocusWnd := GetFocus;
// 쓰레드 연결 끊기
AttachThreadInput(GetCurrentThreadID, hThreadID, False);
Windows.SetParent(HanjaDisplayF.Handle, FocusWnd );
위의 5가지 단계를 거치니 성공하였읍니다.
다른 분들은 적절히 시행착오를 거치면 되리라 봅니다.
큰돌 님이 쓰신 글 :
: 델파이로 만든 DLL Library가 있읍니다.
: 이 DLL에는 조그만한 크기의 WinForm(편의상 DLLForm이라 부름)이 내장되어 있고 이 DllForm의 BorderStayle은 bsNone입니다.
: 이 DLL을 MS WORD에서 매크로를 실행하여 Load한 다음 DllForm을 호출하였읍니다.
: 문제는 DllForm의 FormStyle을 fsNormal로 하면 DllForm이 MS WORD에 가려져 버립니다,
: 하지만 FormStyle을fsStayonTop으로 하면 MS WORD에 가려지지는 않지만 MS WORD를 최소화시키고 다른 프로그램을
: 사용하려고 하면 이 DllForm이 항상 최상위로 떠 있어 다른 프로그램을 사용하는데 방해가 됩니다.
: 질문은 어떻게 하면 이 DllForm이 MS WORD에 대해서만 최상위로 될 수 있는 방법이 있느냐 입니다.
: 많은 답변을 기다려 봅니다.
|