|
TCanvasPanel(Panel1).Canvas.StretchDraw 의 변형은,
> dynamic_cast<TCanvasPanel *>(Panel1)->Canvas->StretchDraw
이렇게 변경하시면 됩니다. Windows 기반 C언어에서는 이런식으로 변경할 수 있습니다.
또한, dynamic_cast<TCanvasPanel *>(Panel1) 여기까지 실행후
NULL 이 나오면, 변형이 불가능한 객체 형태입니다.
보통은 델파이에서도 위와같은 캐스팅은 As 로 많이 사용하고,
형 변환 비교는 Is 로 많이 하는데요,
C++ Builder 에서는 실질적인 변환과 비교 모두 dynamic_cast 하나로
사용하게 됩니다
cuperido
박선영 님이 쓰신 글 :
: 다음은 델파이로 되어 있는 TPanel에 배경그림을 그리수 있다는 소스를 복사해 온것입니다.
: 이걸을 c++빌더로 변환 할려고 하는데..
: "TCanvasPanel(Panel1).Canvas.StretchDraw" 여기서
: TCanvasPanel(Panel1) 이 캐스트 하는 부분을 c++로는 어떻게 표현해야 하나요?
: 제가 c++을 시작한지 얼마 되지 않아 너무 헤갈리고 어려워 도움 부탁드립니다.
: 감사합니다.
:
: var
: OldWndProc: TWndMethod = nil;
:
: type
: TCanvasPanel = class(TPanel)
: public
: property Canvas;
: end;
:
: constructor TForm1.Create(AOwner: TComponent);
: begin
: inherited Create(AOwner);
: OldWndProc := Panel1.WindowProc;
: Panel1.WindowProc := PanelWndProc;
: end;
:
:
: procedure TForm1.PanelWndProc(var Message: TMessage);
: begin
: if Message.Msg = WM_ERASEBKGND then
: begin
: // draw your image here...
: TCanvasPanel(Panel1).Canvas.StretchDraw(Panel1.ClientRect,
: YourImage);
: Message.Result := 1;
: end else
: OldWndProc(Message);
: end;
|