안녕하세요~
현재 VC++로 짠 dll 파일을 델파이에서 구동해보려고 안간힘을 쓰고 있는 일인입니다.
원인은 잘 모르겠지만, 분명 제대로 인자를 넘겨줬다고 생각되는데 화면에 출력이 안되네요.
(VC++로 작성한 예제 프로그램은 잘만 돌아갑니다.ㅜㅜ)
프로그램이 잘 돌아간다면 이미지가 떠야되는데, 그냥 시커먼 화면만 뜨네요..
dc에 대해서 쬐금 공부를 했는데, 제가 놓친 부분이 있나 봅니다.
혹시 어디가 잘못되었는지 지적을 좀 부탁드려도 될까요?
extern "C" void FAR PASCAL EXPORT disp(RECT rc, HDC hDC);
extern "C" void FAR PASCAL EXPORT DispImgBuf(WORD *NewImg);
을 델파이에서
procedure disp(m_rcRect: TRect; pDC: HDC); stdcall; external 'aa.dll';
procedure DispImgBuf(NewImg: PWord); stdcall; external 'aa.dll'; <---이렇게 받았습니다.
그리고 VC로 작성한 소스가..
<!--CodeS-->
void CTESTDISPDlg::OnDispbuf()
{
// TODO: Add your control notification handler code here
RECT rc;
rc.left = 0; rc.top = 0; rc.bottom = 500; rc.right = 500;
HDC hdc = ::GetDC(this->m_hWnd);
DispImgBuf(m_IMGBUF);
disp(rc, hdc);
Invalidate(FALSE);
}
<!--CodeE-->
델파이로 작성한 소스가..
<!--CodeS-->
procedure TFormMain.sButton2Click(Sender: TObject);
var
ImageDC: hDC;
rect: TRect;
begin
ImageDC := GetDC(Self.Handle);
SetRect(rect,0,0,500,500);
DispImgBuf(PImageBuf);
disp(rect, ImageDC);
ReleaseDC(0,ImageDC);
end;
<!--CodeE-->
DispImgBuf의 파라미터인 PImageBuf는 픽셀값이 들어간 PWord형이고, PImageBuf에 값은 정상적으로 들어갔습니다.
위와 같이 예제 소스가 있음에도 불구하고 델파이로 만들지를 못하겠네요...
어느 부분을 잘못한건지... 혹시 알 수 있을까요?
VC++ 의 RECT 형과 델파이의 TRect 형이 서로 호환가능한 형이었는지요?
지금까지 일일이 int 4개로 분리해서 인자를 전달했었는데...