Q&A

  • 런처바(도구모음툴바) 만드는 방법
안녕하세요..



런처바(도구모음툴바)를 만들려고 하는데 도무지 감을 잡을수가 없네요..

아래한글이나 MS 오피스를 인스톨하면 화면 오른쪽에 도구모음툴바가 생성되는데

이것을 만들어 볼려고 해도 어떻게 시도를 해보아야 할지 도무지 알수가

없어서 이렇게 질문 올립니다.



구현방법이나 소스가 있으시면 꼭 부탁드리겠습니다.



감사합니다.

1  COMMENTS
  • Profile
    김영대 1999.10.08 19:25
    장대광 wrote:

    > 안녕하세요..

    >

    > 런처바(도구모음툴바)를 만들려고 하는데 도무지 감을 잡을수가 없네요..

    > 아래한글이나 MS 오피스를 인스톨하면 화면 오른쪽에 도구모음툴바가 생성되는데

    > 이것을 만들어 볼려고 해도 어떻게 시도를 해보아야 할지 도무지 알수가

    > 없어서 이렇게 질문 올립니다.

    >

    > 구현방법이나 소스가 있으시면 꼭 부탁드리겠습니다.

    >

    > 감사합니다.



    전에 한번 올렸던 내용인데 참고해 보세요



    // 다음 source는 제가 테스트 한 내용이구요, 아래 source에

    // 한가지 빠진 내용이 있습니다(저만 다하면 재미 없으니까...)

    // 그건 form을 desktop의 좌,우,상,하로 이동할 때 form의

    // 형태가 바뀌는 것인데 그것은 아래 source에 주석표시가

    // 된 곳을 참고하세요.

    // 그럼 좋은 결과 있기를...

    unit Unit1;



    interface



    uses

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

    StdCtrls, Buttons;



    type

    TForm1 = class(TForm)

    BB_Calc: TBitBtn;

    BB_Close: TBitBtn;

    BB_notepad: TBitBtn;

    Label1: TLabel;

    Label2: TLabel;

    procedure BB_CloseClick(Sender: TObject);

    procedure BB_CalcClick(Sender: TObject);

    procedure BB_notepadClick(Sender: TObject);

    private

    { Private declarations }

    procedure CreateParams(var Params: TCreateParams); override;

    procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST;

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure ExecNewProcess(ProgramName: String);

    var

    StartInfo : TStartupInfo;

    ProcInfo : TProcessInformation;

    CreateOK : Boolean;

    begin

    FillChar(StartInfo, SizeOf(TStartupInfo),#0);

    FillChar(ProcInfo, SizeOf(TProcessInformation),#0);

    StartInfo.cb := SizeOf(TStartupInfo);



    CreateProcess(PChar(ProgramName),nil, nil, nil,False,

    CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS, nil,

    nil, StartInfo, ProcInfo);

    end;



    procedure TForm1.CreateParams(var Params: TCreateParams);

    begin

    // 일반적인 폼의 특성을 다르게 지정

    inherited CreateParams(Params);

    Params.style := WS_Popup or

    WS_ClipChildren or

    WS_ClipSiblings or

    WS_Border;

    end;



    procedure TForm1.WMNCHitTest(var Msg: TMessage);

    begin

    // 윈도우즈에서 WM_NCHITTEST 메시지를 전달받아서 폼의 형식을 다르게 지정

    // 왼쪽 마우스 버튼으로 Form을 drag하여 이동할 수 있게 됩니다

    if GetAsyncKeyState(VK_LBUTTON) < 0 then

    Msg.Result := HTCAPTION

    else

    Msg.Result := HTCLIENT;



    // 참고하시라구 현재 form의 좌표를 표시해봤음

    Label1.Caption := IntToStr(Self.Left);

    Label2.Caption := IntToStr(Self.Top);



    // Self.Width와 Self.Height를 변경하면

    // form의 형태를 바꿀 수 있습니다

    // ?

    // ?

    end;



    procedure TForm1.BB_CloseClick(Sender: TObject);

    begin

    Close;

    end;



    procedure TForm1.BB_CalcClick(Sender: TObject);

    begin

    // 이 버튼을 누루면 calc.exe가 실행됩니다

    ExecNewProcess('c:windowscalc.exe');

    end;



    procedure TForm1.BB_notepadClick(Sender: TObject);

    begin

    // 이 버튼을 누루면 notepad.exe가 실행됩니다

    ExecNewProcess('c:windowsnotepad.exe');

    end;



    end.