我做了一个窗体程序A
想让它成为另一个已知句柄的程序B的对话框
也就是说
点击B上某按钮时
A会基于B而模态显示出来
效果就和B自己的模态对话框一样
请问应该怎么实现呢?我现在用了一个方法
就是显示A的时候用EnableWindow函数使B不可用
然后在A 的结束的时候再使其可用
但是这样有点不正宗
运行的时候点下面的B窗口A窗口也不会做出标题栏的闪烁
到底应该怎么做呢
请指点

解决方案 »

  1.   

    procedure TModeForm.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      with Params do 
      begin
        WndParent := ParnetHwnd; //ParnetHwnd 主程序的名柄
      end;
    end;
    ///
    再ShowModel应该就可以了吧。。
      

  2.   

    我做了实验,也就是说让B成为A的父窗口
    但是这样不行
    这样做的效果是
    A显示的 时候完全处于B窗口之内
    仿佛一个MDI的子窗口一般,
    整个被限制在父窗口之内
    这显然不是模态显示的效果
      

  3.   

    或许应当使用WindowsAPI函数DialogBox来做
    可是参数很复杂
    不会用
      

  4.   

    你把A窗口的东西copy到B窗口来,
      

  5.   

    APIHWND SetParent(    HWND hWndChild, // handle of window whose parent is changing
        HWND hWndNewParent  // handle of new parent window
       );