能否再详细点。
我试了以下方法:
procedure CreateParams(var Params: TCreateParams);
const
BorderStyles: array[TBorderStyle] of DWORD = (0, WS_BORDER);
begin
inherited CreateParams(Params);
with Paramsdo
begin
Style := Style or BorderStyles[bsSingle];
if NewStyleControls and Ctl3D then
begin
Style := Style and not WS_BORDER;
ExStyle := ExStyle or WS_EX_CLIENTEDGE;
ExStyle := ExStyle or WS_EX_TRANSPARENT
end;
WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
end;
end;
procedure ActiveFormCreate(Sender: TObject);
begin
ControlStyle := ControlStyle - [csOpaque];
end;
以及
SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_TRANSPARENT);
最后的效果依然不行。在EXE里可以很容易实现,可到ACTIVEX里就都不管用了!!
在ATL 里有人说要用 windowsless 来解决。可以D里无论如何设置都不管用啊!天啊!郁闷死了!!