컴포넌트 내부 이밴트를 그렇게 외부에서 컨트롤하지는 않습니다.
님이 TCustomEdit1 클래스 선언에 하신대로 하구요.
추가로, 선언해둔 매서드의 실체를 정의해야 겠지요.
그러니까, 아래와 같이 합니다.
void __fastcall TCustomEdit1::fncOnPaint(TWMPaint &WMPaint)
{
//이 안에 WM_PAINT 메시지가 왔을 때 할 일을 코딩하면 됩니다.
}
그리고, 이 컴포넌트를 사용하는 쪽에서 WM_PAINT 메시지 발생시 추가 작업을 할 수 있게 하려면 TCustomEdit1 클래스 선언에 아래와 같은 내용을 추가한 후.
fncOnPaint 매서드 내부에서 if(FOnPaint) FOnPaint(this); 와 같이 합니다.
private:
Classes::TNotifyEvent FOnPaint;
__published:
__property Classes::TNotifyEvent OnPaint = {read=FOnPaint, write=FOnPaint};
BEGIN_MESSAGE_MAP, VCL_MESSAGE_HANDLER, END_MESSAGE_MAP 매크로에 대해서는 아래를 참조하세요.
Tip'N Tricks 43번
Tip'N Tricks 104번
무대포 님이 쓰신 글 :
: 다음과 같이 TCustomEdit을 상속받아..TCustomEdit1 을 만들었습니다.
:
: class PACKAGE TCustomEdit1 : public TCustomEdit
: {
: protected:
: void __fastcall fncOnPaint(TWMPaint &WMPaint);
: BEGIN_MESSAGE_MAP
: VCL_MESSAGE_HANDLER(WM_PAINT, TWMPaint, fncOnPaint);
: END_MESSAGE_MAP(TCustomEdit);
: .....
:
: }
:
: 그런데..
: 폼에서 버튼을 생성하여 버튼을 클릭시
: 아래의 함수가 호출됩니다..
: void __fastcall TForm1::ButtonClick(TObject *Sender)
: {
: m_CustomEdit = new TCustomEdit1(this);
: m_CustomEdit->SetOptions(m_bAddress,m_bHex,m_bAscii,m_b48);
:
: ...????....
:
: }
:
: 그런데..위에서 TCustomEdit1의 SetOptions(TCustomEdit1가 전달 받을 옵션상황)을 전달 한 후
: ...???.. --> 이부분에 어떤 윈도우 함수를 적어야지 위 메세지 맵에 있는 fncOnPaint 가
: 호출 될까여?
: Show , Showing,Invalidate, ....는 동작 않되더군여..
:
:
: