|
메세지맵은 윈도우즈의 메세지처리를 TWinControl 클래스가 캡슐화한 메세지처리 메카니즘 중 하나입니다. 따라서 메세지 맵을 사용하기 위해서는 클래스를 만들 때 반드시 윈도우 핸들이 있는 TWinControl 에서부터 파생되어야합니다.
그리고 END_MESSAGE_MAP( ____ ) 에서 ____ 자리는 선조클래스의 이름이 들어가야하는데요
그 이유는 END_MESSAGE_MAP() 에서 선조클래스의 Dispatch() 멤버함수를 호출하기 때문이죠.
따라서 다음과 같이 클래스를 선언해야합니다.
class A : public TWinControl
{
private :
public :
protected :
BEGIN_MASSAGE_MAP
VCL_MESSAGE_HANDLER(UserMessage, TMessage, OnUserMessage);
END_MASSAGE_MAP(TWinControl)
};
통인 님이 쓰신 글 :
: 대략 다음과 같이 구성을 했습니다.
:
: Class A
: {
: private :
: public :
: protected :
: BEGIN_MASSAGE_MAP
: VCL_MESSAGE_HANDLER(UserMessage, TMessage, OnUserMessage);
: END_MASSAGE_MAP(여기를 어떻게 처리해야 하나요.)
: }
:
: 폼에서 작없할때는 TForm을 그냥 넣었었는데요. 폼에서 작업을 안하니 뭘 넣어야 할지 모르겠네요.
: 꼭 폼에서 해야 할 필요도 없을거 같은데요.
: Class A : TForm(this) 이렇게 였던가요.
:
: 그냥 폼에다 소스를 넣으면 되지만 이 메세지 정의 때문에 폼을 사용하고 싶진 않아서요.
: ()안에 base라고 도움말에 적혀있던데. 어떻게 해야할 지를 모르겠네요.
:
: 지도 부탁드립니다.
: ^^
:
|