Q&A

  • 윈도우 사이즈를 보통상태로 했을때...
원하는 것은 최대 상태의 윈도우에서



오른쪽 상단의 보통 사이즈로 바꾸는 버튼을 누르면



윈도우 사이즈가 변하게 되는데...



이때 어떻게 하면 윈도우의 크기를 제가 원하는 사이즈로 할 수 있을가여???



고수님들 방법을 알려줘용... ^.^



무언가 이벤트가 있지 않을까여???

1  COMMENTS
  • Profile
    김영대 1999.10.30 01:14
    남윤혁 wrote:

    > 원하는 것은 최대 상태의 윈도우에서

    > 오른쪽 상단의 보통 사이즈로 바꾸는 버튼을 누르면

    > 윈도우 사이즈가 변하게 되는데...

    > 이때 어떻게 하면 윈도우의 크기를 제가 원하는 사이즈로 할 수 있을가여???

    > 고수님들 방법을 알려줘용... ^.^

    > 무언가 이벤트가 있지 않을까여???



    원도우가 외부 프로그램의 원도우인가요?

    제가 남윤혁님이 의도하시는 것을 정확히 파악하지 못해서

    아래와 같은 에제를 올려드리는데 혹시 이런게 아니라면

    제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의

    "Delphi Tip"에서 "WM_GETMINMAXINFO" 로 검색해 보세요



    // 아래의 Button3을 클릭하면 Notepad 하나가 실행됩니다

    // 이때 이 프로그램의 폼의 크기를 변경하면 Notepad도

    // 동일하게 크기가 변경됩니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure FormResize(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    ShowWindow(Handle, SW_SHOWMAXIMIZED);

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    ShowWindow(Handle, SW_RESTORE);

    end;



    procedure TForm1.Button3Click(Sender: TObject);

    begin

    WinExec('Notepad', SW_SHOWNORMAL); // 테스트용 프로그램

    FormResize(Sender);

    end;



    procedure TForm1.FormResize(Sender: TObject);

    var

    WinHandle: HWND;

    // windows.pas에 WINDOWPLACEMENT 가 아닌 TWindowPlacement 로 타입선언이 되있음

    WinPlac: TWindowPlacement;

    begin

    WinHandle := FindWindow('Notepad', nil);

    if WinHandle > 0 then

    if IsWindowVisible(WinHandle) then

    begin

    FillChar(WinPlac, SizeOf(WinPlac), 0);

    WinPlac.length := SizeOf(WinPlac);

    GetWindowPlacement(WinHandle, @WinPlac);

    // 윈도우즈가 표준상태일때의 좌표를 구한다

    WinPlac.rcNormalPosition.Right := // 폭조절

    WinPlac.rcNormalPosition.Left + Self.Width;



    WinPlac.rcNormalPosition.Bottom := // 높이조절

    WinPlac.rcNormalPosition.Top + Self.Height;



    SetWindowPlacement(WinHandle, @WinPlac);

    end;

    end;



    end.