|
안녕하세요..
마우스가 이미지 버튼위나 toolbutton 위에 왔을때, button의 테투리가 생기게 한다든지,
이미지가 바뀌게 한다든지의 operation을 하고 싶어서,
CM_MOUSEENTER와 CM_MOUSELEAVE 를 메시지 맵에 집어 넣어서 새로운 compent 설치
까지 성공적으로 되었는데...
이렇게 생성된 컴포넌트를 폼위에 가져다 놓고,
event를 확인해 보면, 추가 했던 CM_MOUSEENTER와 CM_MOUSELEAVE 가 없습니다.
무엇인가의 추가적으로 더 작업을 해야하는건지요?
위의 기능을 수행하고 있는, 이미 만들어진 컴포넌트는 없나요? ( C++ builder componet 중에 )
dxforumLibary를 설치해 보았는데, (멋진 이미지 버튼은 많은데... ) 위와 같은 기능을 수행하는
버튼은 없는것 같아서요!!!
==== CM_MOUSEENTER와 CM_MOUSELEAVE 를 메시지 맵에 추가한 simple 한 code ====
//헤더.
//---------------------------------------------------------------------------
#ifndef MyToolButtonH
#define MyToolButtonH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <comctrls.hpp>
//---------------------------------------------------------------------------
// TButtonControl=> TToolButton
class PACKAGE TMyToolButton : public TToolButton
{
private:
void OnMouseEnter(TMessage &msg);
void OnMouseLeave(TMessage &msg);
protected:
public:
__fastcall TMyToolButton(TComponent* Owner);
__published:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, OnMouseEnter);
VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, OnMouseLeave);
END_MESSAGE_MAP(TToolButton);
};
//---------------------------------------------------------------------------
#endif
//cpp 파일
#include <vcl.h>
#pragma hdrstop
#include "MyToolButton.h"
#pragma package(smart_init)
void TMyToolButton::OnMouseEnter(TMessage &msg)
{
Label1->Text = "들어왔슴"; // 나중에 이미지나 버튼의 테두리가 변하는 작업을 해야함.
}
void TMyToolButton:: OnMouseLeave(TMessage &msg)
{
Label1->Text = "나갔슴";//나중에 이미지나 버튼의 테두리가 변하는 작업을 해야함
}
static inline void ValidCtrCheck(TMyToolButton *)
{
new TMyToolButton(NULL);
}
//---------------------------------------------------------------------------
// TButtonControl ==> TToolButton
__fastcall TMyToolButton::TMyToolButton(TComponent* Owner)
: TToolButton(Owner)
{
}
//---------------------------------------------------------------------------
namespace Mytoolbutton
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TMyToolButton)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
|