만약 해당 MFC 루틴이, 반드시 핸들이 넘어와야만 제대로 동작하는 거라면 보여주신 코드에는 또다른 문제가 있습니다.
보여주신 코드에서는 델파이쪽 생성자에서 바로 핸들을 인자로 넘겨주시는데, 윈도우 컨트롤이라고 해도 생성자에서는 메모리에 클래스만 생성되었을 뿐 즉시 핸들이 생성되지 않습니다. 핸들이 생성되는 시점을 잡아서 처리해야 하는데요.
핸들이 생성되는 시점을 잡으려면, 프로텍티드 루틴 CreateWnd를 오버라이드하면 됩니다.
procedure CreateWnd; override;
begin
inherited CreateWnd;
// 여기에서는 핸들 속성이 유효해지므로 핸들이 필요한 초기화 동작은 여기서 하면 됨다
end;
zoced 님이 쓰신 글 :
: 조언에 감사드립니다.
:
: 하지만.. 그것만이 문제는 아니었던듯 하네요... cdecl 로 해도 결과는 똑같네요..
: 증상은 컨트롤을 폼에 붙이는 순간 wincore.cpp 에서 Assertion Failure 가 나면서
: RAD 툴 자체가 죽어버리네요 ㅜ_ㅜ..
|