|
장석현 님이 쓰신 글 :
: 지난번에 질문 올렸었는데요.. 아직 해결을 못해서^^;;;;
:
: 잘못된 부분을 좀 짚어주세요. 간단히 주석을 달아 봤습니다.
:
:
: 유닛파일입니다.
: //-----------------------------------------------------------
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
:
: }
: //---------------------------------------------------------------------------
: MESSAGE void TImage1::OnMouseEnter(TMessage &msg)
: {
: ShowMessage("Enter");
: }
: //간단히 메소드 하나를 달았습니다
:
:
:
:
:
:
:
: 헤더파일입니다...
: //-------------------------------------------------------------
: //---------------------------------------------------------------------------
:
: #ifndef Unit1H
: #define Unit1H
: //---------------------------------------------------------------------------
: #include <Classes.hpp>
: #include <Controls.hpp>
: #include <StdCtrls.hpp>
: #include <Forms.hpp>
: #include <ExtCtrls.hpp>
: //---------------------------------------------------------------------------
: class TForm1 : public TForm
: {
: __published: // IDE-managed Components
: TImage *Image1;
: // TImage 컨트롤을 하나 추가했습니다
: private: // User declarations
: public: // User declarations
: __fastcall TForm1(TComponent* Owner);
:
: };
: //--여기서부터 추가 했습니다----------//
: class TImage1 : public TImage
: {
: MESSAGE void OnMouseEnter(TMessage &msg);
: BEGIN_MESSAGE_MAP
: VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, OnMouseEnter);
: // VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, OnMouseLeave);
: // 우선 MOUSEENTER 메시지만 테스트해보려고 아래 핸들러는 죽였습니다
: END_MESSAGE_MAP(TImage);
:
: };
: //-----------------------------------//
: //---------------------------------------------------------------------------
: extern PACKAGE TForm1 *Form1;
: //---------------------------------------------------------------------------
: #endif
:
:
:
:
:
: 도저히 뭐가 문제인지 모르겠습니다.
: 컴파일은 잘 되는데...
:
: 제 생각으론 마우스를 이미지 컨트롤 위에 올려놓으면 ShowMessage가 작동해야 할 것 같은데...
:
: 부탁드립니다^^;
임펠리테리입니다.
메시지핸들러를 작성한 것은 TImage를 상속받은 TImage1 클래스이지요? 그런데 폼에 놓은 것은 TImage 클래스이군요. TImage 클래스에는 당근 TImage1 클래스에서 만들었던 메시지 핸들러가 없고, 그러니 메시지가 안걸립니다.
당근 TImage 대신 TImage1 클래스를 써야겠지요? 동적으로 생성하시든지, 혹은 완전한 컴퍼넌트로 만들어서 폼에 놓으세요.
그럼 참고하시길..
|