有几个重叠在一起的窗口(这些窗口都是动态创建的,都属于同一类),现在我想将最上面的窗口A置底,调用SetWindowPos函数后,将其置底,现在我想获取它的子窗口(即A置底后最上面的窗口),应怎样做?
有同事建议我用EnumChildWindows,配合EnumChildProc,不过我不会用,有谁可以示范一下.

解决方案 »

  1.   

    看看吧,专门写给你的。function GetChildWnd(fWndCls, fWndCap: PChar): THandle;
    var
      hWnd: THandle;
    begin
      hWnd := FindWindow(fWndCls, fWndCap);
      if hWnd > 0 then EnumChildWindows(hWnd, @GetChildWndProc, 0);
      Result := hTmpWnd;
    end;function GetChildWndProc(hWnd: HWND; lParam: LPARAM): Boolean; stdcall;
    var
      StrTmp: string;
      Buf: array[0..255] of Char;
    begin
      Result := True;
      ZeroMemory(@Buf, SizeOf(Buf));
      GetClassName(hWnd, @Buf, 255);
      StrTmp := Buf;
      if CompareText('GXEDIT', StrTmp) = 0 then
      begin
        hTmpWnd := hWnd;
        Result := False;
      end;
    end;
      

  2.   

    你的需求應是指在同一進程內,用screen.activeform就可以了