Q&A

  • 마우스 CM_MOUSELEAVE CM_MOUSENTER 메세지 처리?
* 사용환경 : 델파이5 / Windows 2000



unit Unit1;



interface



uses

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

StdCtrls, ExtCtrls;



type

TForm1 = class(TForm)

Image1: TImage;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

ImageOrgWndProc : TWndMethod;

procedure ImageWndProc( var Msg : TMessage );

public

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.ImageWndProc( var Msg : TMessage );

begin

case Msg.Msg of

CM_MOUSELEAVE:

begin

image1.Picture.LoadFromFile('C:아이콘1.ICO');

end;

CM_MOUSEENTER:

begin

image1.Picture.LoadFromFile('C:아이콘2.ICO');

end;

end;

ImageOrgWndProc(Msg);

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

ImageOrgWndProc := Image1.WindowProc;

Image1.WindowProc := ImageWndProc;

end;



procedure TForm1.FormDestroy(Sender: TObject);

begin

Image1.WindowProc := ImageOrgWndProc;

end;



end.



이렇게 하면 Image1부분에는 이미지가 바뀌미다. 이미지가 버튼역활을 합니다.

그런대 Image2,Image3......등을 바꿔려면 어떻게 하는가요?

제발 가르쳐 주세요

2  COMMENTS
  • Profile
    최용일 2000.09.19 05:06
    안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다.



    윈도우 프로시져는 공유할 수 없습니다. 공유하게 된다면 세개의 TImage가 똑같이 동작하죠.



    Image2,Image3를 위한 윈도프로시져를 또 만들어야죠...



    ^^ 항상 즐코하세요.



    초울트라초보 wrote:

    > * 사용환경 : 델파이5 / Windows 2000

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

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

    > StdCtrls, ExtCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Image1: TImage;

    > procedure FormCreate(Sender: TObject);

    > procedure FormDestroy(Sender: TObject);

    > private

    > ImageOrgWndProc : TWndMethod;

    > procedure ImageWndProc( var Msg : TMessage );

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.ImageWndProc( var Msg : TMessage );

    > begin

    > case Msg.Msg of

    > CM_MOUSELEAVE:

    > begin

    > image1.Picture.LoadFromFile('C:아이콘1.ICO');

    > end;

    > CM_MOUSEENTER:

    > begin

    > image1.Picture.LoadFromFile('C:아이콘2.ICO');

    > end;

    > end;

    > ImageOrgWndProc(Msg);

    > end;

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > ImageOrgWndProc := Image1.WindowProc;

    > Image1.WindowProc := ImageWndProc;

    > end;

    >

    > procedure TForm1.FormDestroy(Sender: TObject);

    > begin

    > Image1.WindowProc := ImageOrgWndProc;

    > end;

    >

    > end.

    >

    > 이렇게 하면 Image1부분에는 이미지가 바뀌미다. 이미지가 버튼역활을 합니다.

    > 그런대 Image2,Image3......등을 바꿔려면 어떻게 하는가요?

    > 제발 가르쳐 주세요

  • Profile
    초울트라초보 2000.09.18 22:45
    최용일님의 답편에 감사 드립니다.

    즐코 즐코^^





    최용일 wrote:

    > 안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다.

    >

    > 윈도우 프로시져는 공유할 수 없습니다.

    >

    > Image2,Image3를 위한 윈도프로시져를 또 만들어야죠...

    >

    > ^^ 항상 즐코하세요.

    >

    > 초울트라초보 wrote:

    > > * 사용환경 : 델파이5 / Windows 2000

    > >

    > > unit Unit1;

    > >

    > > interface

    > >

    > > uses

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

    > > StdCtrls, ExtCtrls;

    > >

    > > type

    > > TForm1 = class(TForm)

    > > Image1: TImage;

    > > procedure FormCreate(Sender: TObject);

    > > procedure FormDestroy(Sender: TObject);

    > > private

    > > ImageOrgWndProc : TWndMethod;

    > > procedure ImageWndProc( var Msg : TMessage );

    > > public

    > > { Public declarations }

    > > end;

    > >

    > > var

    > > Form1: TForm1;

    > >

    > > implementation

    > >

    > > {$R *.DFM}

    > >

    > > procedure TForm1.ImageWndProc( var Msg : TMessage );

    > > begin

    > > case Msg.Msg of

    > > CM_MOUSELEAVE:

    > > begin

    > > image1.Picture.LoadFromFile('C:아이콘1.ICO');

    > > end;

    > > CM_MOUSEENTER:

    > > begin

    > > image1.Picture.LoadFromFile('C:아이콘2.ICO');

    > > end;

    > > end;

    > > ImageOrgWndProc(Msg);

    > > end;

    > >

    > > procedure TForm1.FormCreate(Sender: TObject);

    > > begin

    > > ImageOrgWndProc := Image1.WindowProc;

    > > Image1.WindowProc := ImageWndProc;

    > > end;

    > >

    > > procedure TForm1.FormDestroy(Sender: TObject);

    > > begin

    > > Image1.WindowProc := ImageOrgWndProc;

    > > end;

    > >

    > > end.

    > >

    > > 이렇게 하면 Image1부분에는 이미지가 바뀌미다. 이미지가 버튼역활을 합니다.

    > > 그런대 Image2,Image3......등을 바꿔려면 어떻게 하는가요?

    > > 제발 가르쳐 주세요