ShowModal窗口存在时,怎么让主窗口能够响应最大化,最小化的消息?而且主窗口上的东西不能够操作只能响应响应最大化,最小化和关闭的消息。

解决方案 »

  1.   

    ShowModal会把主窗口禁用,所以不能响应
      

  2.   

    把主窗口disabled,show一个置顶的form
      

  3.   

    楼主很喜欢挑战 Windows 的规则阿。那么只能用一些另类的方法了。比如在主窗口最小化、最大化、关闭位置绘制三个一模一样的按钮,然后点击后代码控制主窗体。不会绘就用窗体,把边框设没,在窗体上放个 Image, 放上最小化、最大化之类的图片,在 Image.OnClick 里写。
      

  4.   

    用TApplication的OnMessage来处理,判断是不是WM_SYSCOMMAND,然后再判断最大,最小,关闭消息,再通过ShowWindow(主窗口的Handle处理最大最小化,关闭的话就直接SendMessage(主窗口的Handle, WM_CLOSE就可以了。
      

  5.   

    ShowModal 是模态方式,主窗体不响应的。你改Show方式吧
      

  6.   

    用注入窗体的方法,在主窗体里面注入一个窗体,注入的窗体要用dll来写,然后将dll注入到主窗体里面。你可以利用钩子来控制什么时候注入,什么时候呼出你想要的窗体。具体实现方法可以参考钩子注入...这个方法就可以达到你的目的,游戏外挂很多都用了这个技术。方法已经告诉你,请给分~~~
      

  7.   

    ShowModal 是模态方式,主窗体不响应的。
      

  8.   

    這個不行?
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    perform(WM_SIZE,SIZE_MAXIMIZED,0);
    end;
    那就用這個。。var hwnd: hwnd;//句柄PostMessage(hwnd,WM_SYSCOMMAND, SC_MINIMIZE,0); //最小化
    PostMessage(hwnd,WM_SYSCOMMAND, SC_MAXIMIZE,0);//最大化
    PostMessage(hwnd,WM_SYSCOMMAND, SC_CLOSE,0);//关闭
      

  9.   

    showmodal是,当前线程的窗体中,除了当前showmodal的窗口,其他窗口都被disable(无发接收键盘和鼠标消息)了。
    因此,要达到lz的要求,函数描述如下,可以测试看看
    procedure MaxMainForm(AMainFormHandle: THandle);
    begin
      EnableWindow(AMainFormHandle,True); //开启消息接收
      try
        PostMessage(AMainFormHandle,WM_SYSCOMMAND, SC_MAXIMIZE,0); //发送最大化消息
        Application.ProcessMessage; //处理消息
      finally
        EnableWindow(AMainFormHandle,False); //关闭消息接收
      end;end;
      

  10.   

    1、改造一下showmodal,保留主窗体处于可活动状态;
    2、同时主窗体提供一对方法:开关——设置主窗体所有可视化控件Enabled状态即可
      

  11.   

    很肯定的告诉你,你这个问题得不到解决。除非,你从ShowModal窗体来控制主窗体的最大化,最小化...从showmodal窗体向主窗体发消息
    PostMessage(hwnd,WM_SYSCOMMAND, SC_MINIMIZE,0); //最小化
    PostMessage(hwnd,WM_SYSCOMMAND, SC_MAXIMIZE,0);//最大化
    PostMessage(hwnd,WM_SYSCOMMAND, SC_CLOSE,0);//关闭