procedure TForm1.FormPaint(Sender: TObject);
var
cav:TCanvas;
bmp:TBitMap;
h:Thandle;
begin
h:=findwindow(nil,'Form1');
cav:=TCanvas.Create;
Cav.handle := GetDC(h);//获取指定窗口的设备场景
bmp:=TBitMap.Create;
bmp.LoadFromFile('c:\1.bmp');
cav.Draw(0,0,bmp);
ReleaseDC(0,Self.Handle);
end;
var
cav:TCanvas;
bmp:TBitMap;
h:Thandle;
begin
h:=findwindow(nil,'Form1');
cav:=TCanvas.Create;
Cav.handle := GetDC(h);//获取指定窗口的设备场景
bmp:=TBitMap.Create;
bmp.LoadFromFile('c:\1.bmp');
cav.Draw(0,0,bmp);
ReleaseDC(0,Self.Handle);
end;
cav:TCanvas;
bmp:TBitMap;
begin
cav:=TCanvas.Create;
Cav.handle := GetDC(0);//获取屏幕的设备场景
bmp:=TBitMap.Create;
bmp.LoadFromFile('E:\1.bmp');
cav.Draw(0,0,bmp);
ReleaseDC(0,Self.Handle);//释放获取的指定设备场景
end;我用这个试了, 没有问题,系统会自动刷新呀
我想了另外一个办法,就是能将Image控件贴到该窗体上, 只知道窗体的 Handle ,我该怎么做呢?
谢谢!!
GWL_WNDPROC,
longint(@NewWindowProc)));
NewWindowProc最后要 Result := CallWindowProc(OldWindowProc,
WindowHandle,
TheMessage,
ParamW,
ParamL);
程序退出前要 SetWindowLong(FormMain.Handle,
GWL_WNDPROC,
longint(OldWindowProc));
自己画,你的效果无法实现。除非象“虫洞”所说的那样接管WM_PAINT消息。
我还有问题
那如果 将Image控件贴到该窗体上, 只知道窗体的 Handle
我又将如何做呢?
谢谢,只好给个例子
::SetParent(Button1->Handle,你的Form->Handle);
我已经试过了,有效.问题时TImage控件从TGraphicControl继承而来,它没有Window Handle,
所以无法调用::SetParent函数.
看来得找一个能显示图像的扩展Panel,你的目的才能达到.这样的控件网上很多你自己找一下,要是找不到说一声,我发给你.