Q&A

  • 트레이에 아이콘은 나타나는데 form이 사라지지를 않습니다.
폼은 하나밖에없는데 트레이로 보내는 버튼을 누르면 폼은 사라지지 않은채 트레이에 아이콘이 나타납니다.

폼을사라지게하려면 어떻게해야하나요?

밑에는 소스입니다.









unit Unit1;



interface



uses

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

StdCtrls,ShellApi, Menus, RXShell;

const MY_SHOWFORM_ID = WM_USER+1;



type

TForm1 = class(TForm)

Button1: TButton;

PopupMenu1: TPopupMenu;

dufrl1: TMenuItem;

N1: TMenuItem;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure dufrl1Click(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

iconData : TNotifyIconData;

procedure WndProc ( var Message : TMessage ); override;

procedure ViewPopUp(var AMsg : TWMRButtonDown );



public

{ Public declarations }

end;



var

Form1: TForm1;

TrayI:TNOTIFYICONDATA; //트레이 구조체선언



implementation



{$R *.DFM}



procedure TForm1.ViewPopUp(var AMsg : TWMRButtonDown );

var PtMouse : TPoint;

begin

//현재의 마우스 포인터를 얻는다

GetCursorPos(PtMouse);

//팝업 메뉴를 띄운다.

PopUpMenu1.PopUp(PtMouse.X, PtMouse.Y);

end;



procedure TForm1.WndProc;

var

MouseCo : TPoint;

begin

case Message.Msg of

MY_SHOWFORM_ID:

case Message.lParam of

WM_RBUTTONDOWN:

begin

GetCursorPos(MouseCo);

SetForegroundWindow( Application.Handle );

Application.ProcessMessages;

Popupmenu1.Popup( Mouseco.X, Mouseco.Y );

end;

end;

end;

inherited;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

// 폼을 트레이에 넣어준다.

ShowWindow (Application.Handle, SW_HIDE);

// 폼이 안 보임

Application.ShowMainForm:= False;

with IconData do

begin

cbSize := SizeOf ( IconData );

// 델파이에서는 Wnd로 바뀌었음

Wnd := Handle;

uID := 100;

uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;

uCallbackMessage := MY_SHOWFORM_ID;

hIcon := Application.Icon.Handle;

StrPCopy(szTip, Application.Title);

StrPCopy(szTip, '알람');

end;

Shell_NotifyIcon( NIM_ADD, @IconData );

end;



procedure TForm1.dufrl1Click(Sender: TObject);

begin

Form1.Close;

end;



procedure TForm1.FormDestroy(Sender: TObject);

begin

Shell_NotifyIcon(NIM_DELETE,@IconData);

end;



procedure TForm1.N1Click(Sender: TObject);

begin

form1.show;

end;



end.

0  COMMENTS