메세지맵을 이용하는 방법과 아래와 같이 dispatch 를 오버라이딩하는 방법이 있을 것 같습니다.
그중 dispatch 를 이용하는 방법을 적어봅니다.
헤더에
virtual void __fastcall TForm1::Dispatch(void *Message)
선언하구요.
아래와 같이 dispatch 를 재작성 합니다.
void __fastcall TForm1::Dispatch(void *Message)
{
TMessage *msg = (PMessage)Message;
switch (msg->Msg)
{
case WM_COMMAND:
if(hWndIPAddress == (HWND)msg->LParam && HIWORD(msg->WParam) == EN_CHANGE)
{
mmo1->Lines->Add("변경.");
}
break;
}
TForm::Dispatch(Message);
}
링쿠우 님이 쓰신 글 :
: 안녕하세요
:
: Win32 API를 통해 IP address 컨트롤을 사용하려고합니다.
:
: 컨트롤을 불러오는데는 성공했는데, 컨트롤에 OnChange이벤트를 주고싶은데 어떻게 해야할지 모르겠네요
:
: 코드는 다음과 같습니다.( http://www.yevol.com/bcb/lesson24.htm 에서 IP Address Control 항목을 참고했습니다.)
:
: //폼 생성자에서
: __fastcall TForm2::TForm2(TComponent* Owner)
: : TForm(Owner)
: {
: hWndIPAddress = CreateWindowEx( 0,
: WC_IPADDRESS,
: NULL,
: WS_CHILD | WS_VISIBLE | WS_TABSTOP,
: 0, 0, 120, 20,
: Panel1->Handle,
: NULL,
: HInstance,
: NULL );
: }
: //위 코드롤 hWndIPAddress란 이름으로 컨트롤을 생성하였습니다.
: // 해더에서
: HWND hWndIPAddress;
: //로 정의하였습니다.
:
: hWndIPAddress에서 변경이 발생하면 EN_CHANGE라는 메시지를 보낸다는데, 어떻게 메시지를 받아야할지 막막하네요...
:
: 조언 부탁드립니다...
:
|