首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于Control->Perform(.)解决方案

2012-09-10 
关于Control-Perform(...)我看到一段delphi代码如下Delphi(Pascal) codeprocedure DoTrans(Canvas : TCan

关于Control->Perform(...)
我看到一段delphi代码如下

Delphi(Pascal) code
procedure DoTrans(Canvas : TCanvas; Control : TWinControl);var    DC : HDC;    SaveIndex : HDC;    Position: TPoint;begin    if Control.Parent <> nil then    begin{$R-}        DC := Canvas.Handle;        SaveIndex := SaveDC(DC);        GetViewportOrgEx(DC, Position);        SetViewportOrgEx(DC, Position.X - Control.Left, Position.Y - Control.Top, nil);        IntersectClipRect(DC, 0, 0, Control.Parent.ClientWidth, Control.Parent.ClientHeight);        Control.Parent.Perform(WM_ERASEBKGND, DC, 0);        Control.Parent.Perform(WM_PAINT, DC, 0);        RestoreDC(DC, SaveIndex);{$R+}    end;end;

我把它转译成BCB的,这句总是报错,第二个参数类型不匹配
Control->Parent->Perform(WM_ERASEBKGND, DC, 0);
我写成
Control->Parent->Perform(WM_ERASEBKGND, (int)DC, 0);
强制类型转换,编译是通过了,

但是这样写行么?



[解决办法]
Perform原型如下
C/C++ code
int __fastcall Perform(unsigned Msg, int WParam, int LParam);
[解决办法]
强制转换一下类型:
C/C++ code
Control->Parent->Perform(WM_ERASEBKGND, (WPARAM)DC, 0); 

热点排行