下面是一个窗口创建时及打开时的代码,控件上放一个image,但是如果我设置这个窗品为启动窗口,就可以看到那张像片,但是如果通过其它窗口打开,如:frmmessage.show,就无法看到窗口上面的像片。
procedure TfrmMessage.FormCreate(Sender: TObject);
var
hApp: HWND;
rcApp, rcWork: TRect;
begin
rcWork.Top:=0;
rcWork.Left:=0;
rcWork.Bottom:= GetSystemMetrics(SM_CYSCREEN);
rcWork.Right:= GetSystemMetrics(SM_CXSCREEN);
hApp := FindWindow('Shell_TrayWnd', '');
if hApp <> 0 then begin
GetWindowRect(hApp, rcApp);
if rcApp.Right<rcWork.Right then
rcWork.Left:=rcApp.Right; //TASKBAR在左
if rcApp.Bottom<rcWork.Bottom then
rcWork.Top:=rcApp.Bottom; //TASKBAR在上
if rcApp.Left>0 then
rcWork.Right:=rcApp.Left; //TASKBAR在右
if rcApp.Top>0 then
rcWork.Bottom:=rcApp.Top; //TASKBAR在下
end;
//得到工作区大小
SystemParametersInfo (SPI_SETWORKAREA, 0, @rcWork, SPIF_SENDCHANGE );
self.Left :=rcwork.Right - self.Width ;
self.Top :=rcwork.Bottom - self.Height ;
end;procedure TfrmMessage.FormShow(Sender: TObject);
begin
AnimateWindow(Self.Handle, 250, AW_center or AW_ACTIVATE);
timer.Enabled :=true;
end;
procedure TfrmMessage.FormCreate(Sender: TObject);
var
hApp: HWND;
rcApp, rcWork: TRect;
begin
rcWork.Top:=0;
rcWork.Left:=0;
rcWork.Bottom:= GetSystemMetrics(SM_CYSCREEN);
rcWork.Right:= GetSystemMetrics(SM_CXSCREEN);
hApp := FindWindow('Shell_TrayWnd', '');
if hApp <> 0 then begin
GetWindowRect(hApp, rcApp);
if rcApp.Right<rcWork.Right then
rcWork.Left:=rcApp.Right; //TASKBAR在左
if rcApp.Bottom<rcWork.Bottom then
rcWork.Top:=rcApp.Bottom; //TASKBAR在上
if rcApp.Left>0 then
rcWork.Right:=rcApp.Left; //TASKBAR在右
if rcApp.Top>0 then
rcWork.Bottom:=rcApp.Top; //TASKBAR在下
end;
//得到工作区大小
SystemParametersInfo (SPI_SETWORKAREA, 0, @rcWork, SPIF_SENDCHANGE );
self.Left :=rcwork.Right - self.Width ;
self.Top :=rcwork.Bottom - self.Height ;
end;procedure TfrmMessage.FormShow(Sender: TObject);
begin
AnimateWindow(Self.Handle, 250, AW_center or AW_ACTIVATE);
timer.Enabled :=true;
end;
是什么啊,问题好像在这里
启动窗口的Visible属性为True,其他窗口的Visible属性为False;
所以,要设置Visible属性为True。
你的代码写错的方了
CREATE只有一次
你又没有释放掉
只是又SHOW了一下
怎么可能出现图片呢这样你看行不行:
在show的事件之中写你写的CREATE中的代码
或者先不创建那个窗口
用到时创建
然后在SHOW一下
应该就可以了