下面是一个窗口创建时及打开时的代码,控件上放一个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;

解决方案 »

  1.   

    AnimateWindow(Self.Handle, 250, AW_center or AW_ACTIVATE);
    是什么啊,问题好像在这里
      

  2.   

    如果我记的不错,应该是:
    启动窗口的Visible属性为True,其他窗口的Visible属性为False;
    所以,要设置Visible属性为True。
      

  3.   

    老大
    你的代码写错的方了
    CREATE只有一次
    你又没有释放掉
    只是又SHOW了一下
    怎么可能出现图片呢这样你看行不行:
    在show的事件之中写你写的CREATE中的代码
    或者先不创建那个窗口
    用到时创建
    然后在SHOW一下
    应该就可以了