小弟自己定义了一个弹出式窗口
想让他显示在屏幕的特定位置
我的程序有TrayIcon
请问如何让我的弹出式窗口显示在我的TrayIcon旁边
这个窗口,实际上是一个Hint窗口。就好像新安装好Windows以后,开始按钮旁边会出现一个Hint一样。
顺便问一下,我在窗口中使用了一个Image,里面的图像也是不规则的
我用了粉色作为mask
请问怎么样才能创建这种由图像生成的不规则窗口?

解决方案 »

  1.   

    这样是做一个字体形状的不规则窗口,用图片也大同小异,改一下就可以了。
    procedure TForm1.FormCreate(Sender: TObject);
    var rgn:HRGN;
    begin
    Form1.Color:=clRed;
    BeginPath(Canvas.Handle);
    SetBKMode(Canvas.Handle,TRANSPARENT);
    Canvas.Font.Name:='宋体';
    Canvas.Font.Size:=200;
    Canvas.TextOut(150,130,'CX66.COM');
    EndPath(Canvas.Handle);
    rgn:=PathToRegion(Canvas.Handle);
    SetWindowRgn(Handle,rgn,true);
    end;
      

  2.   

    Canvas.TextOut(150,130,'CX66.COM');   ???????????????????????
    楼上的,你是转贴过来的吧  :)我继续楼上的,里面的canvas.handle,要换成image1.canvas.handle
    并且,好象用图象的话,上面的代码好象不可以的吧。。
    还差好多此外,如果仅仅是上面的代码改成的,只可以显示bmp的文件如果是其他格式的图象要转换成bmp 类型的
      

  3.   

    如果要根据BMP来做不规则窗体稍微麻烦了点,不过我觉得不必要做这样的东西吧
      

  4.   

    呵呵,个人软件的需要么~~
    还是请各位大虾帮帮忙~~
    我用的是JPG的格式的~~如果用BMP会增大文件
    具体怎么实现~~
      

  5.   

    uses jpeg;
    procedure Jpg2Bmp(jpgpath: string);
    var
      strtmp: string;
      Jpg: TJPEGImage;
      bmp: TBitmap;
    begin
      strtmp := changename(jpgpath);
      jpg := TJPEGImage.Create;
      with jpg do
      begin
        try
          LoadFromFile(jpgpath);
          bmp := TBitmap.Create;
          bmp.Assign(jpg);
          bmp.SaveToFile(strtmp);
          bmp.Free;
        finally
          Free;
        end;
      end;
    end;
    这是我以前写的,你把它稍稍改动一下就可以用了