程序Main1,Child1..Childn均为MDI程序,均可独立执行。
如果Main1调用Child1..Childn,则Child的窗口应位于Main窗口内,进行ALT+TAB切换后依然如此(外面应看不到Child程序),各位大虾如何解决啊?

解决方案 »

  1.   

    //Alt+Tab键是系统注册的热键,尽量不要使用,以下我注册了个热键序列Ctrl+PageDown实现子窗的替换,希望能帮的上楼主.
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, AppEvnts;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
        HotKeyID:Integer;
        procedure HotKeyMSG(var Msg:TMessage);message WM_HOTKEY;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Tag:=0;
      HotKeyID:=GlobalAddAtom('Swap ChildForm');
      RegisterHotKey(Handle,HotKeyID,MOD_CONTROL,34);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnregisterHotKey(Handle,HotKeyID);
      GlobalDeleteAtom(HotKeyId);
    end;procedure TForm1.HotKeyMSG(var Msg: TMessage);
    begin
      if (Msg.WParam=HotKeyID) and Application.Active then
      begin
        Tag:=(Tag+1) Mod MDIChildCount;
        MDIChildren[Tag].BringToFront;
      end;
    end;end.