|
안녕하세요 ?
이곳에서 항상 많은 정보를 얻을 수 있어서 답변해 주시는 여러 님들에게 우선 감사하다는 말씀을 드립니다.
또 질문이 있어서... 궁금증을 해소 하고자 올려봅니다. 많은 답변 부탁드립니다.
일단 실행폼 하나와 Dll하나를 만들었습니다.
실행폼에서 Dll에 있는 함수에 자신의 핸들(this->Handle)을 넘겨주고 Dll에서 폼을 동적으로 만들게 했습니다.
Dll내에서는 핸들만으로 TForm을 만들줄 몰라서(음냐... ㅠ.ㅠ)... 일단 Owner자리에는 NULL을 집어넣고, 받아온
핸들은 추가적으로 전달하여 API함수인
::SetParent(생성폼->Handle, 받아온 Handle);
을 사용하여 Parent를 지정했습니다. 이러면 실행폼의 클라이언트 영역에서 생성폼이 만들어 집니다.
이상한 현상은 이렇게 생성된 폼의 사이즈를 마음대로 조절하고 싶어서 크기값을 전달하고
Dll내에서 받아온 사이즈의 크기값을
SetSize(int left, int top, int width, int height) 라는 멤버함수로
{
Left = left;
Top = top;
Width = widht;
Height = height;
} 로 바꾸는데 값이 이상해 진다는 겁니다. 예를 들어 (0, 0) 위치에 폼을 놓고 싶어서, (0, 0)으로 값을 주면
실행폼이 어디에 떠 있느냐에 따라 실행폼의 Left, Top값이 크면 클수록 생성폼도
Left, Top값이 커지는 겁니다. 여러가지 방면으로 이해해 보려구 하는데 잘 알 수가 없습니다.
좋은 의견 많이 부탁드립니다.
그럼 즐거운 프로그래밍 하십시오~
|