我想用dll做一个简单的提示窗口,供其它程序调用。宿主程序调用它后,该提示窗口使用多线程弹出,并依附于宿主窗口(即宿主窗口最小化,它也最小化,成为宿主窗口的子窗口。)不知道怎么弄,求好的思路或关键代码。

解决方案 »

  1.   

    怎么依附我没做过,但是如果你的dll中另开了线程并在线程中创建了窗体,那么,如果你想跟踪主exe中某个窗体的所有消息,那你就重写主窗体的窗口过程,在窗口过程中,使用postmessage向dll窗体发消息,然后在dll中处理这些消息。
    如果你仅仅想跟踪某个或者某几个消息,那么就在exe窗体上重新写一下这些消息的消息函数,在消息函数中向dll中的窗体发消息。
    总之就是消息转发,呵呵
      

  2.   

    你是不是要实现窗体的封装.主EXE去调用DLL文件.
      

  3.   

    简单的说,主程序用来查询数据库,数据量大的时候,窗口不刷新假死,而该语言又不支持多线程。我想用delphi 的dll写个等待窗口,可以动态显示个gif 或显示流逝的时间。再顶。谢谢。
      

  4.   

    我写过这样的代码 但不是封成dll基本思路是 准备一个gif动画  在uses里面加 GIFImage,动态创建一个imagefunction gLjDuTiao:boolean;stdcall;//查找中显示的进度线程
    {显示 gif 动画}
    var
    gif: TGIFImage;
    Image1:TImage;
    begin
    try
    image1:=TImage.Create(nil); //动态生成IMAGE控件
    image1.Parent:=form1.StringAlignGrid1;
     //}gif := TGIFImage.Create;
    gif.LoadFromFile(gPathDir+'CzFdj.gif');Image1.Left:=106;
    Image1.Top:=200;
    Image1.Width:=gif.Width;  //}
    Image1.Height:=gif.Height;
    Image1.Picture.Assign(gif);
    {Image1.Picture.Assign(myGif);//正确的Assign,可以得到GIF动画。  
    image1.Picture.Bitmap.Assign(myGif);//只能得到静态的GIF图片}
    finally
     gif.Free;
     while not ThreadTF do ; //判断是否已经运行完查找
     if Image1<>nil then freeandnil(Image1);  //查找完成关闭显示动画
    end;
    end;