안녕하세요 TPanel을 이용하여 맵 엔진을 개발하고자 합니다.
근데 TPanel에 TMouseWheelUpDownEvent 가 없더군요
OnPaint 이벤트도 없어서 찾아보니 아래와 같이 오버라이드 시키더군요
class TPanel : public Extctrls::TPanel
{
private:
TNotifyEvent FOnPaint;
TMouseWheelUpDownEvent FOnMouseWheelUp;
TMouseWheelUpDownEvent FOnMouseWheelDwon;
protected:
void __fastcall Paint(void)
{
//inherited Paint();
if(FOnPaint)
{
FOnPaint(this);
}
}
public:
__property Canvas; //protected인 프로퍼티를 public으로 변경
__property TNotifyEvent OnPaint= {read=FOnPaint, write=FOnPaint}; //추가한 이벤트
};
이걸 이용해서 휠 이벤트도 추가하면 될 듯 한데요 인자값이나 이런게 정확치 않아서 힘드네요
위의 부분에서 정의하면
TMouseWheelUpDownEvent FOnMouseWheelUp;
TMouseWheelUpDownEvent FOnMouseWheelDwon;
이렇게 정의하고 protected: 부분에
if(FOnMouseWheelUp)
{
FOnMouseWheelUp(this);
}
이러면 될 듯 한데 문제는 휠 이벤트는 인자값이 Tobject 포인터만 받는게 아니고
(TObject *Sender, TShiftState Shift, TPoint &MousePos,bool &Handled);
이런 인자들을 받더라고요 이게 this에서 넘길수 있는지요
그리고 위에 보면 void __fastcall Paint(void) 함수 안에다가 정의하는데
휠도 이런 함수가 존재하나요?
아님 불가능하가요?
고수님들 답변 부탁드립니다.
수고하세요
|